web-dev-qa-db-ja.com

Gitlab CI / CDを使用して流星プロジェクトをデプロイする方法は?

彼らのウェブサイトで主張されているように、いくつかのコードがリポジトリにプッシュされた後、Gitlabを使用してプロジェクトを自動デプロイできますが、その方法を理解できません。そこにはたくさんのRubyチュートリアルがありますが、流星やノード用のチュートリアルはありません。

基本的に、コードがマスターブランチにプッシュされた後、サーバー上でDockerコンテナーを再構築する必要があります。誰かがそれを達成する方法を知っていますか?私は.gitlab-ci.ymlにまったく慣れていないので、助けてくれてとても感謝しています。

17
user1255102

簡単な説明:4か月からDigital Ocean(Ubuntu 14.04)でホストされているMeteor1.3.2アプリを実行しています。 Meteorアプリと同じDigitalOceanドロップレットで実行されているGitlabv。8.3.4を使用しています。これは2GB/2 CPUのドロップレットです(月額$ 20)。組み込みのGitlabCI for CI/CDを使用します。このセットアップはこれまで正常に実行されています。 (現在、Dockerを使用していませんが、これは問題ではありません。)

私たちのCI/CD戦略:

  1. ローカルラップトップでマスターブランチをチェックします。ブランチには、以下に示すようにMeteorプロジェクト全体が含まれています。

enter image description here

WindowsでgitCLIツールを使用してGitlabサーバーに接続します。 (プル、プッシュなど、同様の通常のgitアクティビティの場合)

  1. チェックアウトしたプロジェクトをAtomエディターで開きます。また、AtomをGitlabと統合しました。これは、Atomエディター自体の内部での迅速なgit status/pull/Pushなどに役立ちます。定期的な流星の仕事、すなわち。バグなどを修正します。

  2. ローカルラップトップでのテスト後、マスターでgit Push&commitを実行します。これにより、Gitlab CIを使用した自動ビルドがトリガーされ、結果(ビルドログを含む)は、以下に示すようにGitlab自体に表示されます。

enter image description here

以下の画像は、以前のすべてのビルドログを示しています。

enter image description here

以下の手順に従ってください:

  1. DO液滴に流星を取り付けます。

  2. DOにGitlabをインストールする(可能な場合はワンクリックデプロイを使用)か、手動インストール。 Gitlabv。8.3.4以降のバージョンをインストールしていることを確認してください。ドロップレットに対してDOワンクリックデプロイを実行しました。 gitlabサーバーを起動し、ブラウザーからgitlabにログインします。プロジェクトを開き、左側のメニューからプロジェクト設定->ランナーに移動します

enter image description here

  1. DOサーバーにSSHで接続し、ドロップレットで新しいupstartサービスをrootとして構成します。

    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 "[email protected]"

# 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:[email protected]: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. 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でチェックインします。これによりGitlabCIがトリガーされ、ビルドプロセスが完了すると、新しいアプリがexample.net:3000で利用できるようになります。

:. gitlab-ci.ymlを初めてチェックインした後、アプリは利用できなくなります。これは、meteor-serviceを再起動するとサービスが提供されないためです。見つかりました。 DOSSHコンソールでSudostartmeteor-serviceを1回手動で実行します。これを投稿すると、gitlabマスターへの新しいチェックインによって自動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を参照してください。

25
roray