1つのプロジェクトとGitlabランナーが構成された独自のGitlabサーバーをセットアップしました。私は継続的インテグレーションサーバーを初めて使用するため、以下を達成する方法がわかりません。
プロジェクトのマスターブランチにコミットするたびに、リポジトリを別のサーバーに展開し、そこで2つのシェルコマンドを実行したい(npm install
and forever restartall
)
どうすればいいですか?プロジェクトがデプロイされているマシンにもランナーが必要ですか?
Gitlab-ciとgitlab-runner [runners.ssh]を使用して、単一または複数のサーバーにデプロイできます。
流れ:
(git_project with yml file) --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
gitlab-ciにgitlab-runnerを登録し、gitlab webでタグをdelpoyServerに設定する必要があります。 /etc/gitlab-runner/config.toml:
[[runners]]
url = "http://your.gitlab.server/ci"
token = "1ba879596cf3ff778ee744e6decedd"
name = "deployServer1"
limit = 1
executor = "ssh"
builds_dir = "/data/git_build"
[runners.ssh]
user = "you_user_name"
Host = "${the_destionation_of_deployServer_IP1}"
port = "22"
identity_file = "/home/you_user_name/.ssh/id_rsa"
[[runners]]
url = "http://your.gitlab.server/ci"
token = "1ba879596cf3ff778ee744e6decedd"
name = "deployServer2"
limit = 1
executor = "ssh"
builds_dir = "/data/git_build"
[runners.ssh]
user = "you_user_name"
Host = "${the_destionation_of_deployServer_IP2}"
port = "22"
identity_file = "/home/you_user_name/.ssh/id_rsa"
runner.sshは、ランナーが${the_destionation_of_deployServer_IP1}
および${the_destionation_of_deployServer_IP2}
にログインし、プロジェクトをbuilds_dir
に複製することを意味します。
たとえば、ymlファイルを記述します。gitlab-ci.yml
job_deploy:
stage: deploy
tags: delpoyServer1
script:
- npm install && forever restartall
job_deploy:
stage: deploy
tags: delpoyServer2
script:
- npm install && forever restartall
gitlab-runnerを「 http://your.gitlab.server/ci/admin/runners 」のdelpoyServer1
およびdelpoyServer2
tagsに設定します
.gitlab-ci.yml
ファイルを解析し、次のタグを持つランナーを選択します:deployServer1
またはdeployServer2
;gitlab-runner
は、sshを使用して${the_destionation_of_deployServer_IP1}
および${the_destionation_of_deployServer_IP2}
にログインし、プロジェクトをbuilds_dir
にクローンし、スクリプトを実行します:npm install && forever restartall。リンク:
gitlab-ci.yml documentation を使用して、別個のbuild
ステージを.gitlab-ci.yml
ファイルに追加できるはずです。
ある種のデプロイサービス(capistrano
など)、またはデプロイを開始するWebhookが必要です。
つまり何かのようなもの:
---
stages:
- test
- deploy
job_runtests:
stage: test
script:
- npm test
job_deploy:
stage: deploy
script:
- curl -X POST https://deploymentservice.io/?key=
Gitlab CIは、見つかった各ステージを反復処理し、順番に実行します。ステージが通過すると、次のステージに進みます。
残念ながら、Gitlab CIは直接デプロイできません(ただし、 dpl
Ruby Gemをインストールし、.gitlab-ci.yml
ファイルで呼び出すことはできますがそのようです:
job_deploy:
- gem install dpl
- dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY
only:
- master
例えば)