练习 - 发布模板规格
你的团队已经构建了一些符合贵公司新治理模型的安全强化 Bicep 文件。 其中一个强化的 Bicep 文件部署了一个基于 Linux 的 Azure 应用服务应用。 在本练习中,你将使用部署工作流将 Bicep 文件发布为模板规格。
在此过程中,你将:
- 向工作流添加 Lint 作业。
- 添加工作流作业以发布模板规格。
- 手动运行工作流并验证它是否成功完成。
- 在 Azure 中检查已发布的模板规格。
向工作流添加 Lint 作业
存储库包含工作流的草稿,你可以从该草稿入手。
在 Visual Studio Code 中,展开存储库根目录中的 .github/workflows 文件夹。
打开 template-spec-linux-app-service.yml 文件。
工作流定义包括两个触发器。 本练习不会修改模板规格的 Bicep 文件,因此
push
触发器永不会触发。 若要试用工作流,可以使用workflow_dispatch
触发器手动调用它。在文件底部,你会看到一条内容为“
# To be added
”的注释,请添加以下 Lint 作业定义:jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
存储库中有一个“bicepconfig.json”文件,该文件将 Linter 配置为发出错误而不是警告。 Lint 作业发生的任何失败都将导致工作流失败。
提示
YAML 文件对缩进敏感。 无论是键入还是粘贴此代码,都请确保缩进正确。 在此练习的后续部分,你将看到完整的 YAML 工作流定义,使你可验证文件是否匹配。
向工作流添加发布作业
现在,可以添加第二个作业,以将模板规格发布到 Azure。
将下面的代码添加到 template-spec-linux-app-service.yml 文件末尾:
publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
此作业从存储库中签出代码并使用你创建的 GitHub 机密登录到 Azure。 然后它会运行
az ts create
命令将模板规格发布到 Azure。提示
为了简单起见,工作流将使用工作流的运行编号作为模板规格的版本号。 下一单元将介绍更复杂的版本控制方案。
保存对该文件所做的更改。
验证并提交工作流定义
验证 template-spec-linux-app-service.yml 文件是否类似于以下示例:
name: template-spec-linux-app-service concurrency: template-spec-linux-app-service on: workflow_dispatch: push: branches: - main paths: - 'template-specs/linux-app-service/**' permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyReusable AZURE_REGION: westus3 TEMPLATE_SPEC_NAME: linux-app-service TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }} publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
如果不是,请更新它以匹配此示例,然后保存。
通过在 Visual Studio Code 终端中运行以下命令来提交更改并将其推送到 Git 存储库:
git add . git commit -m "Add lint and publish jobs to Linux App Service template spec workflow" git push
这是你首次推送到此存储库,因此系统可能会提示你登录。
在 Windows 上,键入 1 以使用 Web 浏览器进行身份验证,然后选择 Enter。
在 macOS 上,选择“授权”。
将会出现一个浏览器窗口。 你可能需要再次登录到 GitHub。 选择“授权”。
触发工作流
在浏览器中,选择“操作”选项卡。
失败的工作流运行已列出,但你无需担心它们。 它们运行失败是因为在创建存储库时工作流定义尚未完成。
选择 template-spec-linux-app-service 工作流,选择“运行工作流”按钮,然后选择“运行工作流”。
GitHub 启动新的工作流运行。 可能需要刷新浏览器窗口才能看到运行出现。
选择列表中的最新运行。
等待工作流运行完成。 完成后,模板规格将发布到 Azure。
请记下工作流的运行编号,该编号可能为 2。
查看 Azure 中的模板规格
还可以在 Azure 门户中查看已发布的模板规格。
在浏览器中转到 Azure 门户。
转到 ToyReusable 资源组,然后选择 linux-app-service 模板规格。
检查模板规格的详细信息。
请注意,最新版本和版本号与工作流的运行编号相同。 管道使用运行编号作为模板规格的版本号。