我已经设置了自己的Gitlab服务器,其中包含一个项目和一个Gitlab运行器。我是持续集成服务器的新手,因此不知道如何完成以下任务。
每次我提交项目的主分支时,我都希望将存储库部署到另一台服务器并在那里运行两个shell命令(npm install
和forever restartall
)
我该怎么做?我是否需要在部署项目的机器上使用转轮?
答案 0 :(得分:30)
您可以使用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表示,跑步者将登录${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
个标签
.gitlab-ci.yml
文件,选择包含以下代码的转轮:deployServer1
或deployServer2
; gitlab-runner
将使用ssh登录到${the_destionation_of_deployServer_IP1}
和${the_destionation_of_deployServer_IP2}
,将项目克隆到builds_dir
,然后执行脚本:npm install&& ;永远重启。链接:
答案 1 :(得分:21)
您应该可以使用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
例如)