如何使用Gitlab CI/CD部署一个meteor项目?
How to use Gitlab CI/CD to deploy a meteor project?
正如在他们的网站上声称的那样,Gitlab 可用于在将一些代码推送到存储库后自动部署项目,但我无法弄清楚如何。那里有很多 ruby 教程,但 none 用于流星或节点。
基本上我只需要在我的服务器上重建一个 Docker 容器,在代码被推送到我的 master 分支之后。有谁知道如何实现它?我对 .gitlab-ci.yml 完全陌生,非常感谢帮助。
简介:我 运行正在使用 Meteor 1.3.2 应用程序,托管在 Digital Ocean (Ubuntu 14.04) 上已有 4 个月了。我在与 Meteor 应用程序相同的 Digital Ocean droplet 上使用 Gitlab v. 8.3.4 运行ning。它是一个 2 GB / 2 个 CPU 的 droplet(每月 20 美元)。使用内置的 Gitlab CI for CI/CD。到目前为止,此设置已成功 运行ning。 (我们目前没有使用 Docker,但这应该无关紧要。)
我们的CI/CD策略:
- 我们在本地笔记本电脑上查看 Master 分支。该分支包含整个 Meteor 项目,如下所示:
我们在 Windows 上使用 git CLI 工具连接到我们的 Gitlab 服务器。 (用于拉、推等类似的常规 git 活动)
在 Atom 编辑器中打开签出的项目。我们还将 Atom 与 Gitlab 集成在一起。这有助于在 Atom 编辑器本身中快速 git status/pull/push 等。做常规的流星工作即。修复错误等
Post 在本地笔记本电脑上测试,然后我们在主机上执行 git 推送和提交。这会触发使用 Gitlab CI 的自动构建,结果(包括构建日志)可以在 Gitlab 本身中看到,如下所示:
下图显示了所有以前的构建日志:
请按照以下步骤操作:
在 DO 液滴上安装 meteor。
在 DO 上安装 Gitlab(如果可能,使用一键部署)或手动安装。确保您正在安装 Gitlab v. 8.3.4 或更新版本。我在我的 Droplet 上做了一个 DO one-click 部署。
启动 gitlab 服务器并从浏览器登录 gitlab。打开您的项目并从左侧菜单转到项目设置 -> Runners
通过 SSH 连接到您的 DO 服务器并以 root 身份在 Droplet 上配置一个新的 upstart 服务:
vi /etc/init/meteor-service.conf
示例文件:
#upstart service file at /etc/init/meteor-service.conf
description "Meteor.js (NodeJS) application for eaxmple.com:3000"
author "rohanray@gmail.com"
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on shutdown
# Automatically restart process if crashed
respawn
respawn limit 10 5
script
export PORT=3000
# this allows Meteor to figure out correct IP address of visitors
export HTTP_FORWARDED_COUNT=1
export MONGO_URL=mongodb://xxxxxx:xxxxxx@example123123.mongolab.com:59672/meteor-db
export ROOT_URL=http://<droplet_ip>:3000
exec /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/node /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/main.js >> /home/gitlab-runner/erecaho-build/server-alpha-running/meteor.log
end script
从这里安装 gitlab-ci-multi-runner:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md 按照说明
备忘单:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-ci-multi-runner
sudo gitlab-ci-multi-runner register
输入第 2 步的详细信息
现在新的 运行ner 应该是绿色的或者如果需要激活 运行ner
在meteor项目目录下创建.gitlab-ci.yml
示例文件:
before_script:
- echo "======================================"
- echo "==== START auto full script v0.1 ====="
- echo "======================================"
types:
- cleanup
- build
- test
- deploy
job_cleanup:
type: cleanup
script:
- cd /home/gitlab-runner/erecaho-build
- echo "cleaning up existing bundle folder"
- echo "cleaning up current server-running folder"
- rm -fr ./server-alpha-running
- mkdir ./server-alpha-running
only:
- master
tags:
- master
job_build:
type: build
script:
- pwd
- meteor build /home/gitlab-runner/erecaho-build/server-alpha-running --directory --server=http://example.org:3000 --verbose
only:
- master
tags:
- master
job_test:
type: test
script:
- echo "testing ----"
- cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle
- ls -la main.js
only:
- master
tags:
- master
job_deploy:
type: deploy
script:
- echo "deploying ----"
- cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/programs/server/ && /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/npm install
- cd ../..
- sudo restart meteor-service
- sudo status meteor-service
only:
- master
tags:
- master
在 gitlab 中签入上述文件。这应该触发 Gitlab CI 并且在构建过程完成后,新应用程序将可用 @ example.net:3000
注意: 第一次签入.gitlab-ci.yml后应用将无法使用,因为重启meteor-service会导致服务未找到。在 DO SSH 控制台上手动 运行 sudo start meteor-service 一次。 Post check-in 到 gitlab master 的任何新版本都将触发自动 CI/CD 并且应用程序的新版本将在构建后的 example.com:3000 可用已成功完成。
P.S.: gitlab ci yaml 文档可以在 http://doc.gitlab.com/ee/ci/yaml/README.html 找到,用于您的自定义和理解上面的示例 yaml 文件.
docker specific 运行ner,请参考https://gitlab.com/gitlab-org/gitlab-ci-multi-runner
正如在他们的网站上声称的那样,Gitlab 可用于在将一些代码推送到存储库后自动部署项目,但我无法弄清楚如何。那里有很多 ruby 教程,但 none 用于流星或节点。
基本上我只需要在我的服务器上重建一个 Docker 容器,在代码被推送到我的 master 分支之后。有谁知道如何实现它?我对 .gitlab-ci.yml 完全陌生,非常感谢帮助。
简介:我 运行正在使用 Meteor 1.3.2 应用程序,托管在 Digital Ocean (Ubuntu 14.04) 上已有 4 个月了。我在与 Meteor 应用程序相同的 Digital Ocean droplet 上使用 Gitlab v. 8.3.4 运行ning。它是一个 2 GB / 2 个 CPU 的 droplet(每月 20 美元)。使用内置的 Gitlab CI for CI/CD。到目前为止,此设置已成功 运行ning。 (我们目前没有使用 Docker,但这应该无关紧要。)
我们的CI/CD策略:
- 我们在本地笔记本电脑上查看 Master 分支。该分支包含整个 Meteor 项目,如下所示:
我们在 Windows 上使用 git CLI 工具连接到我们的 Gitlab 服务器。 (用于拉、推等类似的常规 git 活动)
在 Atom 编辑器中打开签出的项目。我们还将 Atom 与 Gitlab 集成在一起。这有助于在 Atom 编辑器本身中快速 git status/pull/push 等。做常规的流星工作即。修复错误等
Post 在本地笔记本电脑上测试,然后我们在主机上执行 git 推送和提交。这会触发使用 Gitlab CI 的自动构建,结果(包括构建日志)可以在 Gitlab 本身中看到,如下所示:
下图显示了所有以前的构建日志:
请按照以下步骤操作:
在 DO 液滴上安装 meteor。
在 DO 上安装 Gitlab(如果可能,使用一键部署)或手动安装。确保您正在安装 Gitlab v. 8.3.4 或更新版本。我在我的 Droplet 上做了一个 DO one-click 部署。 启动 gitlab 服务器并从浏览器登录 gitlab。打开您的项目并从左侧菜单转到项目设置 -> Runners
通过 SSH 连接到您的 DO 服务器并以 root 身份在 Droplet 上配置一个新的 upstart 服务:
vi /etc/init/meteor-service.conf
示例文件:
#upstart service file at /etc/init/meteor-service.conf
description "Meteor.js (NodeJS) application for eaxmple.com:3000"
author "rohanray@gmail.com"
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on shutdown
# Automatically restart process if crashed
respawn
respawn limit 10 5
script
export PORT=3000
# this allows Meteor to figure out correct IP address of visitors
export HTTP_FORWARDED_COUNT=1
export MONGO_URL=mongodb://xxxxxx:xxxxxx@example123123.mongolab.com:59672/meteor-db
export ROOT_URL=http://<droplet_ip>:3000
exec /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/node /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/main.js >> /home/gitlab-runner/erecaho-build/server-alpha-running/meteor.log
end script
从这里安装 gitlab-ci-multi-runner:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md 按照说明 备忘单:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-ci-multi-runner sudo gitlab-ci-multi-runner register
输入第 2 步的详细信息
现在新的 运行ner 应该是绿色的或者如果需要激活 运行ner
在meteor项目目录下创建.gitlab-ci.yml
示例文件:
before_script: - echo "======================================" - echo "==== START auto full script v0.1 =====" - echo "======================================" types: - cleanup - build - test - deploy job_cleanup: type: cleanup script: - cd /home/gitlab-runner/erecaho-build - echo "cleaning up existing bundle folder" - echo "cleaning up current server-running folder" - rm -fr ./server-alpha-running - mkdir ./server-alpha-running only: - master tags: - master job_build: type: build script: - pwd - meteor build /home/gitlab-runner/erecaho-build/server-alpha-running --directory --server=http://example.org:3000 --verbose only: - master tags: - master job_test: type: test script: - echo "testing ----" - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle - ls -la main.js only: - master tags: - master job_deploy: type: deploy script: - echo "deploying ----" - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/programs/server/ && /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/npm install - cd ../.. - sudo restart meteor-service - sudo status meteor-service only: - master tags: - master
在 gitlab 中签入上述文件。这应该触发 Gitlab CI 并且在构建过程完成后,新应用程序将可用 @ example.net:3000
注意: 第一次签入.gitlab-ci.yml后应用将无法使用,因为重启meteor-service会导致服务未找到。在 DO SSH 控制台上手动 运行 sudo start meteor-service 一次。 Post check-in 到 gitlab master 的任何新版本都将触发自动 CI/CD 并且应用程序的新版本将在构建后的 example.com:3000 可用已成功完成。
P.S.: gitlab ci yaml 文档可以在 http://doc.gitlab.com/ee/ci/yaml/README.html 找到,用于您的自定义和理解上面的示例 yaml 文件. docker specific 运行ner,请参考https://gitlab.com/gitlab-org/gitlab-ci-multi-runner