使用circleci config.yml部署Azure应用服务插槽
需要添加步骤以部署到生产插槽或登台插槽,然后修改配置以交换部署
描述:默认情况下,当我运行此配置文件时,它将部署到azure应用服务的生产插槽,但我想先部署到暂存插槽,然后再进行交换。
下面的文件工作正常,但需要进行一些配置更改,以便我应该能够部署到舞台插槽,然后将插槽交换到生产插槽。
使用Circleci config.yml,下面是我的config.yml
version: 2.1
jobs:
build:
docker:
- image: circleci/node:10.16.3
steps:
## Fetch all release tags
- checkout
- run:
name: Install Node.js dependencies with Npm
command: npm install
- run:
name: Test
command: CI=true npm run coverage
dev-deploy:
machine: true
steps:
- checkout
- run:
name: create / update infrastructure
command: |
docker login -u $REGISTRY_UN -p $REGISTRY_PW $REGISTRY_SERVER
docker run --rm -it -e TF_VAR_repo_branch=$CIRCLE_BRANCH -e vaultkey=$VAULT_KEY -v `pwd`:/dp/config dockerimage/dpdeployer:beta-1.0 .dp.yaml
workflows:
version: 2
build_and_test_publish:
jobs:
- build
# - hold: # <<< A job that will require manual approval in the CircleCI web application.
# type: approval # <<< This key-value pair will set your workflow to a status of "On Hold"
# requires: # We only run the "hold" job when test2 has succeeded
# - build
- dev-deploy:
requires:
- build
filters:
branches:
only : feature/appservice
但是,我认为这取决于您要如何将代码部署到Azure App Service。有很多不同的方法可以做到这一点。检查配置,您已经在使用Docker。此链接https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image讨论将容器部署为Azure应用服务的步骤。要点似乎是您需要将WebApp配置为从Docker注册表中提取[[每个Azure应用程序插槽。
然后在成功构建后,让circleci将Docker映像推送/标记到该注册表。然后,Azure App Service将启动该应用程序的新版本。
要在Azure App服务插槽之间跳转,您可以将circleci配置推送到不同的Docker注册表映像标签。这将需要使用略有不同的配置来设置每个Azure App Service插槽。例如...# Dev
az webapp config container set --name <app-name> --resource-group <rg> --docker-custom-image-name <registry-name>/mydockerimage:$VERSION_FOR_DEV ...
# Staging
az webapp config container set --name <app-name> --resource-group <rg> --docker-custom-image-name <registry-name>/mydockerimage:$VERSION_FOR_STAGE ...
在circleCI配置中,当您在dev,stage和production作业之间设置管道时。开发和阶段作业将为您执行docker push或标记。生产工作会为您完成最后一步的交换。像这样的东西...
prod-deploy:
steps:
- run:
name: swap staging and product slots
command: az webapp deployment slot swap -g MyResourceGroup -n MyUniqueApp --slot staging --target-slot production
希望这会有所帮助。而且我没有误会你的问题。 🤞