使用Gitlab CI/CD部署后运行命令

使用Gitlab CI/CD部署后运行命令,gitlab,gitlab-ci,heroku-cli,Gitlab,Gitlab Ci,Heroku Cli,我正在设置Gitlab CI/CD,以便在每次推送时自动部署到heroku应用程序 当前,我的.gitlab ci.yml文件如下所示 production: type: deploy script: - apt-get update -qy - apt-get install -y ruby-dev - gem install dpl - dpl --provider=heroku --app=koober-production --api-key=$HEROKU_PR

我正在设置
Gitlab CI/CD
,以便在每次推送时自动部署到heroku应用程序

当前,我的
.gitlab ci.yml
文件如下所示

production:
  type: deploy
  script:
  - apt-get update -qy
  - apt-get install -y ruby-dev
  - gem install dpl
  - dpl --provider=heroku --app=koober-production --api-key=$HEROKU_PRODUCTION_API_KEY
  only:
  - master
这工作正常,部署成功,应用程序正常工作

但是,在成功部署之后,我需要运行一些命令来迁移数据库

目前,我需要通过从终端运行命令手动执行此操作

heroku run python manage.py migrate -a myapp

如何在部署后自动执行此命令?

首先
类型是,您应该使用
阶段

回到原来的问题,我想你可以使用一个新的舞台/类型来达到这个目的。
声明类似于:

stages:
  - build
  - test
  - deploy
  - post_deploy

post_production:
  stage: post_deploy
  script:
  - heroku run python manage.py migrate -a myapp
  only:
  - master
只有在解聚物成功的情况下,才应执行此操作。

使用
--run
标记使用
dpl运行命令

stages:
  - deploy

production:
  stage: deploy
  script:
  - apt-get update -qy
  - apt-get install -y ruby-dev
  - gem install dpl
  - dpl --provider=heroku --app=koober-production --api-key=$HEROKU_PRODUCTION_API_KEY --run='python manage.py migrate && python manage.py create_initial_users'
  only:
  - master

这里的
production
很好,因为这个阶段将应用程序部署到heroku。你的意思是我需要用运行migrate命令的
stage:post\u production
再添加一个
post\u production
块吗?我尝试过,但它给出了
/bin/bash:line 63:heroku:command not found
。因此脚本和heroku命令不是gitlab worker的一部分。然后我需要知道py脚本的作用,尤其是这个脚本的位置(它是源代码的一部分吗?)