У меня есть проект, написанный на Django (Python Framework) и репозиторий на Bitbucket
Мне нужно настроить конвейер bitbucket со следующими действиями:
- Развертывание на промежуточном сервере и принятие на staging ответвление
- Развертывание на рабочий сервер, когда выпуск является черновиком только из главной ветви.
Я не уверен, где может быть черновик релиза в Bitbucket, например, в Github.
У меня есть следующий bitbucket-pipelines.yml file
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
в зависимости от типа развертывания.
Как я могу настроить это в конвейере битовой памяти для выполнения этого шага?
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 в зависимости от типа развертывания?