提问人:R. Gulbrandsen 提问时间:11/14/2023 更新时间:11/17/2023 访问量:83
将容器应用从 Bitbucket 部署到 Azure
Deploy Container App from Bitbucket to Azure
问:
我有一个 Bitbucket 存储库,它使用管道构建我的代码并将 docker 映像推送到 Docker Hub。目前为止,一切都好。现在,我想继续将最新映像部署到 Azure 上的容器应用。我的选择似乎是:
- 在 Azure 中设置持续部署
- 在 bitbucket 中创建管道步骤,以使用 Azure CLI 将创建的新映像推送到 Azure
还有我对 2 的问题。是看起来 Atlassian 不支持这个
这给我留下了一些 costum 创建的管道,我应该使用 Azure CLI 来做到这一点,我超出了我的深度。
有没有人对我如何自动更新我的容器应用有建议?
答:
感谢 simon@edgeworks 帮助我找到可行的解决方案:
首先要注意的是:私有仓库的 dockerhub 登录使用“registry.hub.docker.com”而不是“docker.io”。有点难找。
创建服务主体
我们需要做的第一件事是为容器创建服务主体。可以使用门户中提供的 Azure CLI 执行此操作。
在控制台中,更新并发布以下脚本:
az ad sp create-for-rbac --name [PRINCIPAL_NAME] --scope /subscriptions/[SUBSCRIPTION_ID]/resourceGroups/[RESOURCE_GROUP]/providers/Microsoft.App/containerapps/[CONTAINER_APP_NAME]--role contributor
您可以在应用程序的概述页面上找到所有这些信息。响应将为您提供 3 个密钥,您需要将其添加到 bitbucket 工作区
使用服务主体设置 BitbucketSetup Bitbucket with Service Principal
选择右上角的设置
向下滚动到左侧菜单底部,找到工作区变量。
在 Azure CLI 中添加输出中的 AZURE_APP_ID、AZURE_PASSWORD 和 AZURE_TENANT_ID。我还为我的管道中使用的 DockerHub 用户名和密码添加了机密。
image: node:18
pipelines:
branches:
'master':
- step:
name: Build and Test code
caches:
- node
script:
- npm install
- npm run lint
- npm run build
- npm run test
- step:
name: Create Docker image
script:
- echo "$HUB_PASSWORD" | docker login --username $HUB_USERNAME --password-stdin
- VERSION=$(npm run version --silent)
- IMAGE=[USERNAME/PROJECT]/[APPLICATION_NAME]:${VERSION}
- echo ${IMAGE}
- docker build . -t ${IMAGE}
- docker push ${IMAGE}
caches:
- node
- step:
name: Deploy to Prod
script:
- VERSION=$(npm run version --silent)
- IMAGE=registry.hub.docker.com/[USERNAME/PROJECT]/[APPLICATION_NAME]:${VERSION}
- pipe: atlassian/azure-cli-run:1.2.0
variables:
AZURE_APP_ID: $AZURE_APP_ID
AZURE_PASSWORD: $AZURE_PASSWORD
AZURE_TENANT_ID: $AZURE_TENANT_ID
AZURE_RESOURCE_GROUP: ['RESOURCE_GROUP']
AZURE_APP_NAME: ['CONTAINER_APP_NAME']
CLI_COMMAND: 'az containerapp update -n [CONTAINER_APP_NAME] -g [RESOURCE_GROUP] --image $IMAGE'
options:
docker: true
在我的管道中,我从pacakage.json获取版本并将其设置在dockerimage上。
我希望你觉得这能给你带来很多帮助,并能帮助你完成你的项目。
评论