【问题标题】:GitLab-CI Push Branch to Remote on DeployGitLab-CI 在部署时将分支推送到远程
【发布时间】:2016-12-22 21:48:02
【问题描述】:

所以,我在企业版上运行 GitLab CI 来构建我的项目,然后部署成功。

我有两个问题: 1. 我不能 git push 我的分支到安全的 SSH 远程。 2. 如何强制它仅在成功构建时部署?

这是我目前的配置:

stages:
  - build
  - deploy

services:
  - mysql:latest

variables:
  MYSQL_DATABASE: el_duderino
  MYSQL_ROOT_PASSWORD: mysql_strong_password

node:
  image: monostream/nodejs-gulp-bower
  stage: build
  script:
    - npm install
    - bower install --allow-root
    - gulp

migrations:
  image: eboraas/laravel
  stage: build
  script:
    - composer install
    - cp .env.testing .env
    - php artisan key:generate
    - php artisan migrate --force
    - echo "Done!"

deploy_test:
  stage: deploy
  script:
    - echo "Deploy to test server."
    - git remote set-url test ssh://git@10.16.0.148/var/repo/subPortalTest.git
    - git push test master
  environment:
    name: Test
    url: http://10.16.0.148/
  only:
    - master

我的deploy_test 作业失败并返回以下内容:

主机密钥验证失败。

致命:无法从远程存储库读取。

请确保您拥有正确的访问权限和存储库 存在。

【问题讨论】:

  • Gitlab 提供了一个将启用 ssh-agent 的 SSH 密钥添加到管道的示例。您需要在 Gitlab 的 CI 配置中部署目标服务器的私有 SSH 密钥作为私有变量。

标签: git continuous-integration gitlab


【解决方案1】:
  1. 如何强制它仅在成功构建时部署
    答:可以使用依赖和 on_success yaml 命令,当构建验证作业成功时,部署作业将根据它的依赖执行。
    并使用 on_success 命令,以便在前一个作业成功执行时启动此作业。

喜欢

JobDeployToProd:
    stage: Deploy
    script: your commands
    tags:
     - Deploy
    allow_failure: false
    when : on_success
    dependency: JobBuildVerify 

【讨论】:

    猜你喜欢
    • 2018-09-07
    • 2020-12-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2016-07-08
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多