使用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脚本的作用,尤其是这个脚本的位置(它是源代码的一部分吗?)