【问题标题】:How to use Gitlab CI/CD to deploy a meteor project?如何使用 Gitlab CI/CD 部署流星项目?
【发布时间】:2016-03-30 14:53:59
【问题描述】:

正如他们网站上所说,Gitlab 可用于在将一些代码推送到存储库后自动部署项目,但我无法弄清楚如何。那里有很多 ruby​​ 教程,但没有针对流星或节点的教程。

基本上,在将代码推送到我的主分支之后,我只需要在我的服务器上重建一个 Docker 容器。有谁知道如何实现它?我对 .gitlab-ci.yml 的东西完全陌生,非常感谢帮助。

【问题讨论】:

  • 目前也在为此苦苦挣扎。也尝试将 DigitalOcean 用于跑步者。使用 Meteor 1.3

标签: meteor gitlab gitlab-ci continuous-delivery


【解决方案1】:

简介:我运行 Meteor 1.3.2 应用程序,托管在 Digital Ocean (Ubuntu 14.04) 上 4 个月。我正在使用 Gitlab v. 8.3.4 在与 Meteor 应用程序相同的 Digital Ocean 液滴上运行。它是一个 2 GB / 2 CPU 的 droplet(每月 20 美元)。使用内置 Gitlab CI 进行 CI/CD。到目前为止,此设置已成功运行。 (我们目前没有使用 Docker,但这应该没关系。)

我们的 CI/CD 策略:

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

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

  1. 在 Atom 编辑器中打开签出的项目。我们还将 Atom 与 Gitlab 集成。这有助于在 Atom 编辑器本身中快速 git status/pull/push 等。做常规的 Meteor 工作,即。修复错误等。

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

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

请按以下步骤操作:

  1. 在 DO 液滴上安装流星。

  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
    

示例文件:

#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 备忘单:

    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. 在流星项目目录中创建.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

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

P.S.:gitlab ci yaml 文档可以在http://doc.gitlab.com/ee/ci/yaml/README.html 找到,以供您自定义并理解上面的示例 yaml 文件。 对于 docker 特定的 runner,请参考https://gitlab.com/gitlab-org/gitlab-ci-multi-runner

【讨论】:

  • 另外我需要 nginx 能够在同一个 droplet 上拥有多个 Meteor 环境,并且能够在不停止生产应用程序的情况下更新 SSL。
  • 没有不使用 mup 的特殊原因。我认为流星构建过程非常简单明了,因此 ci yaml 文件中的简单命令就可以完成这项工作。我们确实将 Nginx 设置为网络服务器和代理,端口 80 和 https(443) 在流星(节点)服务器的前面,在端口 3000 上运行。Https 已使用 let's encrypt 实现。我认为这值得提出一个新问题:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
相关资源
最近更新 更多