将容器应用程序从 Bitbucket 部署到 Azure

问题描述 投票:0回答:1

我有一个 Bitbucket 存储库,它使用管道构建我的代码并将 Docker 镜像推送到 Docker Hub。到目前为止,一切都很好。现在我想继续将最新映像部署到 Azure 上的Container App。我的选择似乎是:

  1. 在 Azure 中设置持续部署
  2. 在 bitbucket 中创建管道步骤,以使用 Azure CLI 将创建的新映像推送到 Azure

我的问题是 1. 似乎只支持 GitHub。

我对 2. 的问题是,Atlassian 看起来没有这个支持

这给我留下了一些创建的服装管道,我想用Azure CLI来做到这一点,但我超出了我的深度。

有人对如何自动更新我的容器应用程序有建议吗?

azure docker bitbucket pipeline azure-container-apps
1个回答
0
投票

感谢 simen@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 工作区

使用服务主体设置 Bitbucket

选择右上角的设置

向下滚动到左侧菜单底部,找到工作空间变量

从 Azure CLI 的输出中添加 AZURE_APP_IDAZURE_PASSWORDAZURE_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 上。

我希望您能发现本文内容丰富,并且对您的项目有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.