彼らのウェブサイトで主張されているように、いくつかのコードがリポジトリにプッシュされた後、Gitlabを使用してプロジェクトを自動デプロイできますが、その方法を理解できません。そこにはたくさんのRubyチュートリアルがありますが、流星やノード用のチュートリアルはありません。
基本的に、コードがマスターブランチにプッシュされた後、サーバー上でDockerコンテナーを再構築する必要があります。誰かがそれを達成する方法を知っていますか?私は.gitlab-ci.ymlにまったく慣れていないので、助けてくれてとても感謝しています。
簡単な説明: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戦略:
WindowsでgitCLIツールを使用してGitlabサーバーに接続します。 (プル、プッシュなど、同様の通常のgitアクティビティの場合)
チェックアウトしたプロジェクトをAtomエディターで開きます。また、AtomをGitlabと統合しました。これは、Atomエディター自体の内部での迅速なgit status/pull/Pushなどに役立ちます。定期的な流星の仕事、すなわち。バグなどを修正します。
ローカルラップトップでのテスト後、マスターでgit Push&commitを実行します。これにより、Gitlab CIを使用した自動ビルドがトリガーされ、結果(ビルドログを含む)は、以下に示すようにGitlab自体に表示されます。
以下の画像は、以前のすべてのビルドログを示しています。
以下の手順に従ってください:
DO液滴に流星を取り付けます。
DOにGitlabをインストールする(可能な場合はワンクリックデプロイを使用)か、手動インストール。 Gitlabv。8.3.4以降のバージョンをインストールしていることを確認してください。ドロップレットに対してDOワンクリックデプロイを実行しました。 gitlabサーバーを起動し、ブラウザーからgitlabにログインします。プロジェクトを開き、左側のメニューからプロジェクト設定->ランナーに移動します
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
ここから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の詳細を入力します
これで、新しいランナーが緑色になるか、必要に応じてランナーをアクティブ化する必要があります
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でチェックインします。これにより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を参照してください。