使用 Gitlab CI 将每个构建部署到服务器
Deploy every build to a server using Gitlab CI
我已经用一个项目和一个 Gitlab 运行ner 配置了我自己的 Gitlab 服务器。我是持续集成服务器的新手,因此不知道如何完成以下操作。
每次我提交到项目的主分支时,我都想将存储库部署到另一台服务器和 运行 那里有两个 shell-命令(npm install
和 forever restartall
)
我该怎么做?我是否也需要在部署项目的机器上安装 运行ner?
您应该能够使用 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
例如)
您可以使用 gitlab-ci 和 gitlab-runner [runners.ssh] 部署到单个或多个服务器。
流量:
(git_project with yml file) --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
你需要将gitlab-runner注册到gitlab-ci并在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 意味着,runner 将登录到 ${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 设置为 delpoyServer1
和 delpoyServer2
tags in 'http://your.gitlab.server/ci/admin/runners'
- 当你将代码推送到 gitlab 时
- gitlab-ci 服务器将解析您项目中的
.gitlab-ci.yml
文件,选择带有标签的运行器:deployServer1
或 deployServer2
;
- 带有 deployServer1 标签的
gitlab-runner
将使用 ssh 登录 ${the_destionation_of_deployServer_IP1}
和 ${the_destionation_of_deployServer_IP2}
,将项目克隆到 builds_dir
,然后执行脚本:npm install &&永远重启。
link:
我已经用一个项目和一个 Gitlab 运行ner 配置了我自己的 Gitlab 服务器。我是持续集成服务器的新手,因此不知道如何完成以下操作。
每次我提交到项目的主分支时,我都想将存储库部署到另一台服务器和 运行 那里有两个 shell-命令(npm install
和 forever restartall
)
我该怎么做?我是否也需要在部署项目的机器上安装 运行ner?
您应该能够使用 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
例如)
您可以使用 gitlab-ci 和 gitlab-runner [runners.ssh] 部署到单个或多个服务器。
流量:
(git_project with yml file) --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
你需要将gitlab-runner注册到gitlab-ci并在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 意味着,runner 将登录到 ${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 设置为
delpoyServer1
和delpoyServer2
tags in 'http://your.gitlab.server/ci/admin/runners'- 当你将代码推送到 gitlab 时
- gitlab-ci 服务器将解析您项目中的
.gitlab-ci.yml
文件,选择带有标签的运行器:deployServer1
或deployServer2
; - 带有 deployServer1 标签的
gitlab-runner
将使用 ssh 登录${the_destionation_of_deployServer_IP1}
和${the_destionation_of_deployServer_IP2}
,将项目克隆到builds_dir
,然后执行脚本:npm install &&永远重启。
link: