[英]Deploy every build to a server using Gitlab CI
我已经用一个项目设置了自己的Gitlab服务器,并为其配置了一个Gitlab运行器。 我是持续集成服务器的新手,因此不知道如何完成以下任务。
每次我提交到项目的master分支时,我都希望将存储库部署到另一台服务器并在其中运行两个shell命令( npm install
和forever restartall
)
我该怎么做? 我是否还需要在部署项目的计算机上安装运行程序?
您可以使用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
在' http://your.gitlab.server/ci/admin/runners '中将您的gitlab-runner设置为delpoyServer1
和delpoyServer2
标签
.gitlab-ci.yml
文件,选择带有标签的运行器: deployServer1
或deployServer2
; gitlab-runner
将使用ssh登录到${the_destionation_of_deployServer_IP1}
和${the_destionation_of_deployServer_IP2}
,将项目克隆到builds_dir
,然后执行脚本:npm install &&永远重启。 链接:
您应该能够使用gitlab-ci.yml文档将单独的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
例如)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.