练习 - 创建 GitHub 操作以生成容器映像
在本单元中,你将完成以下任务:
- 创建 GitHub 操作以实现生成管道。
- 修改优惠券服务代码以触发生成工作流。
- 实时监视生成工作流的进度。
创建生成操作
此过程中的 YAML 代码定义一个如下 GitHub 操作:
- 在提交被推送到
main
分支中的优惠券服务源代码或单元测试时触发。 - 定义特定于步骤的环境变量。
- 有一个名为
Build and push image to ACR
的作业(或在同一工作流运行器上执行的一组步骤)。
重要
GitHub Actions 或工作流的触发条件和其他项目依赖于应用和环境。 为了便于理解,此示例简要地提供了详细信息。 生成和部署工作流的范围都限定为产品服务更改,因为所有微服务都保存在一个存储库下。 在实际的生产方案中,每个微服务都会保存在其自身单独的存储库中。
完成以下步骤以创建 GitHub Actions 生成操作:
转到 GitHub 中的分支存储库,选择 Actions 选项卡。
在 Get started with GitHub Actions 页上,选择 set up a workflow yourself 链接。
在下一页上,将以下 YAML 代码粘贴到编辑器中。
name: Build and deploy an app to AKS on: push: branches: ["main"] workflow_dispatch: env: # Local environment variables used later in the workflow AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry' CONTAINER_NAME: 'productservice' RESOURCE_GROUP: 'rg-eshop' CLUSTER_NAME: 'aks-eshop' DEPLOYMENT_MANIFEST_PATH: './product.yml' DOCKER_PATH: './DockerfileProducts.acr' jobs: buildImage: permissions: contents: read id-token: write runs-on: ubuntu-latest steps: # Checks out the repository this file is in - uses: actions/checkout@v3 # Logs in with your Azure credentials stored in GitHub secrets - name: Azure login uses: azure/login@v1.4.6 with: creds: '${{ secrets.AZURE_CREDENTIALS }}' # Builds and pushes an image up to your Azure Container Registry - name: Build and push image to ACR run: | az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
将 Azure 容器注册表的名称替换为在上一单元中创建的 ACR 名称;例如 acseshop186748394。
将默认工作流 main.yml 文件名替换为 azure-kubernetes-service.yml,然后选择 Commit changes。
在 Commit changes 屏幕上,选择 Commit directly to the main branch,然后选择 Commit changes。
你已经完成了为 CI/CD 管道创建生成工作流。
在终端中,运行以下命令以查看 ACR 中存储的产品服务的当前版本:
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
通过将 AZURE_CONTAINER_REGISTRY 替换为 ACR 的名称,应会看到如下所示的输出:
Result ---------------------------------------- v1
触发生成
一旦提交工作流文件,生成工作流就会自动触发。 还可以手动触发生成。
- 在存储库中,选择 Actions 选项卡。
- 在左侧的 All workflows 下方,选择 Build and deploy an app to AKS 工作流,然后选择 Run workflow。
监视生成
查看生成的实时进度:
在存储库中,选择 Actions 选项卡。
选择为 Build and deploy an app to AKS 工作流列出的最新工作流运行。 运行的名称是在上一步中使用的提交消息。
选择 buildImage 作业。
如果等待几分钟,作业中的步骤应该会成功完成。
在终端中,再次运行此命令以查看 ACR 中存储的产品服务的版本。
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
应会看到如下所示的输出,其中显示了新的映像版本已通过 GitHub 工作流添加到 ACR:
Result ---------------------------------------- 8c75edb7a349ec570bd4eac397015bc3c547186e v1