如何使用Gitlab CI / CD部署流星项目?

时间:2016-03-30 14:54:00

标签: meteor gitlab gitlab-ci continuous-delivery

正如他们的网站所声称的那样,Gitlab可以在一些代码被推入存储库后用于自动部署项目,但我无法弄清楚如何。有大量的红宝石教程,但没有流星或节点。

基本上我需要在将代码推送到我的主分支后,在我的服务器上重建Docker容器。有谁知道如何实现它?我是.gitlab-ci.yml的新手,非常感谢帮助。

1 个答案:

答案 0 :(得分:24)

简介:我正在运行一个Meteor 1.3.2应用程序,自4个月以来一直在Digital Ocean(Ubuntu 14.04)上运行。我正在使用Gitlab v.8.3.4在与Meteor应用程序相同的Digital Ocean Droplet上运行。它是一个2 GB / 2 CPU的液滴(每月20美元)。使用内置的Gitlab CI进行CI / CD。此设置已成功运行至今。 (我们目前没有使用Docker,但这无关紧要。)

我们的CI / CD战略:

  1. 我们在当地笔记本电脑上查看Master分支机构。该分支包含整个Meteor项目,如下所示:
  2. enter image description here

    我们在Windows上使用git CLI工具连接到我们的Gitlab服务器。 (用于拉动,推动等类似的常规git活动)

    1. 在Atom编辑器中打开签出的项目。我们还将Atom与Gitlab集成在一起。这有助于在Atom编辑器本身内快速git状态/拉/推等。定期进行流星工作即可。修复错误等。

    2. 在本地笔记本电脑上进行测试后,我们再进行git push&承诺主人。这会触发使用Gitlab CI的自动构建,结果(包括构建日志)可以在Gitlab中看到,如下所示:

    3. enter image description here

      下图显示了之前的所有构建日志:

      enter image description here

      请按照以下步骤操作:

      1. 在DO液滴上安装meteor。

      2. 在DO上安装Gitlab(如果可能,使用一键部署)或手动安装。确保您正在安装Gitlab v.8.3.4或更新版本。我在我的Droplet上做了一键式DO部署。 启动gitlab服务器&从浏览器登录gitlab。打开项目并转到项目设置 - >左侧菜单中的跑步者

      3. enter image description here

        1. SSH到您的DO服务器&以root身份在Droplet上配置新的upstart服务:

          vi /etc/init/meteor-service.conf
          
        2. 示例文件:

          #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
          
          1. 按照说明从此处安装gitlab-ci-multi-runner:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md 的cheatsheet:

            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中的详细信息

          2. 现在新跑步者应该是绿色的,或者如果需要的话激活跑步者

          3. 在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
            
          4. 在gitlab中检入上面的文件。这应该触发Gitlab CI,在构建过程完成后,新的应用程序将可用@ example.net:3000

          5. 注意:首次登入.gitlab-ci.yml后,应用程序将无法使用,因为重新启动meteor-service将导致找不到服务。在DO SSH控制台上手动运行sudo start meteor-service。发布此任何新登记到gitlab master将触发自动CI / CD,并且在构建成功完成后,example.com:3000上将提供新版本的应用程序。

            P.S。:gitlab ci yaml docs可以在http://doc.gitlab.com/ee/ci/yaml/README.html找到,用于自定义并理解上面的示例yaml文件。 有关泊坞广告的特定参赛者,请参阅https://gitlab.com/gitlab-org/gitlab-ci-multi-runner