繁体   English   中英

使用Gitlab CI将每个构建部署到服务器

[英]Deploy every build to a server using Gitlab CI

我已经用一个项目设置了自己的Gitlab服务器,并为其配置了一个Gitlab运行器。 我是持续​​集成服务器的新手,因此不知道如何完成以下任务。

每次我提交到项目的master分支时,我都希望将存储库部署到另一台服务器并在其中运行两个shell命令( npm installforever restartall

我该怎么做? 我是否还需要在部署项目的计算机上安装运行程序?

您可以使用gitlab-ci和gitlab-runner [runners.ssh]部署到单个或多个服务器。

流程:

(git_project with yml file)  --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
  1. 您需要将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

  1. 编写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 
  2. 在' http://your.gitlab.server/ci/admin/runners '中将您的gitlab-runner设置为delpoyServer1delpoyServer2标签

    • 当您将代码推送到gitlab时
    • gitlab-ci服务器将解析项目中的.gitlab-ci.yml文件,选择带有标签的运行器: deployServer1deployServer2
    • 带有deployServer1标签的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM