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

Deploy every build to a server using Gitlab CI

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

每次我提交到项目的主分支时,我都想将存储库部署到另一台服务器和 运行 那里有两个 shell-命令(npm installforever 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])
  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 意味着,runner 将登录到 ${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. 将你的 gitlab-runner 设置为 delpoyServer1delpoyServer2tags in 'http://your.gitlab.server/ci/admin/runners'

    • 当你将代码推送到 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 &&永远重启。

link: