我有一个用 Django(Python框架)编写的项目,并且存储库在 Bitbucket
我必须通过以下操作设置一个位桶管道:
我不确定可以像Github一样在Bitbucket中将发布发布到何处。
我有以下 bitbucket-pipelines.yml 文件
image: python:3.7
pipelines:
branches:
staging:
- step:
deployment: staging
script:
- apt-get update
- apt-get install -y zip # required for packaging up the application
- pip install boto3==1.3.0 # required for codedeploy_deploy.py
- zip -r /tmp/artifact.zip * # package up the application for deployment
- python codedeploy_deploy.py # run the deployment script
现在,在Django应用程序中,我正在使用.env
提供凭据和设置。对于不同的环境(例如开发,登台和生产),我每个人都有不同的环境文件
development.env
staging.env
production.env
我需要根据部署类型将相应文件重命名/复制到.env
。
如何在Bitbucket管道中进行设置以执行此步骤?
appspec.yml 的内容是:
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/project/
permissions:
- object: /var/www/html
pattern: "**"
owner: ubuntu
group: ubuntu
hooks:
BeforeInstall:
- location: scripts/clean_instance.sh
timeout: 6000
runas: root
AfterInstall:
- location: scripts/install_os_dependencies.sh
timeout: 6000
runas: root
- location: scripts/install_python_dependencies.sh
timeout: 6000
runas: ubuntu
- location: scripts/setup_environment.sh
timeout: 6000
runas: ubuntu
- location: scripts/migrate.sh
timeout: 6000
runas: ubuntu
- location: scripts/ngnix.sh
timeout: 6000
runas: ubuntu
ApplicationStart:
- location: scripts/start_application.sh
timeout: 6000
runas: ubuntu
ApplicationStop:
- location: scripts/stop_application.sh
timeout: 6000
runas: ubuntu
我可以根据部署类型拥有多个appspec.yml文件吗?
答案 0 :(得分:0)
在应用程序版本名称下具有多个目录可能是一个很好的解决方案。
1.0.0->
appspec.yml
files/
scripts/
答案 1 :(得分:0)
如果您可以为整个团队指定命名约定,那么基于约定的方法可以解决这个问题。
首先,使部署分支与环境具有相同的名称。如示例代码中所述,当分支名称为“ staging”时,应用程序将选择staging.env进行部署。 在bitbucket管道中,您可以使用$ BITBUCKET_BRANCH默认变量来引用分支名称。
https://confluence.atlassian.com/bitbucket/variables-in-pipelines-794502608.html
Bitbucket管道提供了一组默认变量以及定义自己的变量的能力。您可以将变量标记为安全,以进一步保护密码,令牌和其他值。您也可以在手动运行管道时更新变量。
第二,用环境设置脚本中的变量替换对env文件的引用。例如:$ filename.env
将分支名称传递给您的python脚本codedeploy_deploy.py,并用此替换设置脚本中的变量。
该解决方案仅在您可以保持约定的情况下才有效。