我正在设置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
如何在部署后自动执行此操作以运行此命令?
前types
被弃用,你应该使用stages
.
回到原来的问题,我认为你可以为此目的使用一个新的阶段/类型.
声明类似的东西:
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