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

use*_*102 17 continuous-delivery gitlab meteor gitlab-ci

正如在他们的网站上声称的那样,Gitlab可以用于在将一些代码推入存储库之后自动部署项目,但我无法弄清楚如何.有很多ruby教程,但没有流星或节点.

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

ror*_*ray 25

简介:我正在运行一个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项目,如下所示:

在此输入图像描述

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

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

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

在此输入图像描述

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

在此输入图像描述

请按照以下步骤操作:

  1. 在DO液滴上安装meteor.

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

在此输入图像描述

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

    vi /etc/init/meteor-service.conf
    
    Run Code Online (Sandbox Code Playgroud)

样本文件:

#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
Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

    输入步骤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
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在gitlab中检入上面的文件.这应该触发Gitlab CI,并且在构建过程完成后,新的应用程序将可用于@ example.net:3000

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

PS:gitlab ci yaml docs可以在http://doc.gitlab.com/ee/ci/yaml/README.html找到,用于自定义和理解上面的示例yaml文件.有关docker特定的跑步者,请参阅https://gitlab.com/gitlab-org/gitlab-ci-multi-runner