练习 - 为拉取请求创建工作流
你的网站开发团队要求你更新 Linux 操作系统上运行的网站。 在此练习中,你将添加一个验证工作流,该工作流可在打开或更新拉取请求时自动运行。 然后,你将为网站的操作系统更改创建拉取请求。
在此过程中,你将:
- 为拉取请求验证创建工作流。
- 将 Bicep Lint 分析添加到工作流。
- 创建拉取请求,并查看工作流运行情况。
- 修复拉取请求验证工作流识别到的任何错误。
- 重新运行工作流,合并并关闭拉取请求。
创建要在创建和更新拉取请求时运行的工作流
在 Visual Studio Code 中,在“.github/workflows”文件夹中创建一个名为“pr-validation.yml”的新文件。
将以下代码添加到该文件:
name: pr-validation on: pull_request
此代码可确保无论在何时创建或更新拉取请求时都执行该工作流。
注意
你要直接使用存储库的主分支。 通常,你不会这样做,但在本练习中,你将使用主分支来简化这些步骤。 在你自己的项目中,请务必设置分支保护规则来保护主分支。
向工作流添加 Lint 作业
每当打开或编辑拉取请求时,你想要对 Bicep 文件运行 Lint 分析步骤。 存储库中有一个可重复使用的 Lint 工作流,你可从此工作流中调用它。
在现有文件内容的末尾,若要重复使用存储库中定义的 Lint 工作流,请添加以下行:
jobs: lint: uses: ./.github/workflows/lint.yml
存储库中有一个“bicepconfig.json”文件,该文件将 Linter 配置为发出错误而不是警告,因此 Lint 作业期间发生的任何失败都将导致工作流失败。
保存更改。
通过在 Visual Studio Code 终端中运行以下命令来提交更改并将其推送到 Git 存储库的主分支:
git add . git commit -m "Add first version of pull request validation workflow" git push
更新 Bicep 文件
接下来,你将修改网站的 Bicep 文件,以将网站的操作系统更新为 Linux。
在 Visual Studio Code 终端中,运行以下命令来为更改创建一个新分支:
git checkout -b feature/linux-app
打开 deploy 文件夹中的 main.bicep 文件。
在文件顶部附近的变量定义下方,定义应用程序框架要使用的新变量:
// Define the names for resources. var appServiceAppName = 'toy-website-linux-${resourceNameSuffix}' var appServicePlanName = 'toy-website-linux' var storageAccountName = 'mystorage${resourceNameSuffix}' var appServiceAppLinuxFrameworkVersion = 'node|14-lts'
此设置将告知 Azure 应用服务,将使用版本 14 的 Node.js 框架生成应用程序。
安装
appServicePlan
资源定义。 在properties
对象中添加kind
属性和reserved
属性:resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku kind: 'linux' properties: { reserved: true } }
更新
appServiceApp
资源定义以设置应用程序框架:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: 'node|14-lts' } } }
注意
你可能会注意到,Bicep 会发出警告,指出未使用
appServiceAppLinuxFrameworkVersion
变量。 在这里,你有意地引发 Linter 错误,以便可以查看它在 GitHub 拉取请求中的表现。保存更改。
通过在 Visual Studio Code 终端中运行以下命令来提交更改并将其推送到 Git 存储库:
git add . git commit -m "Update operating system to Linux" git push origin feature/linux-app
创建拉取请求
由于已配置了工作流,并且更新了 Bicep 文件,因此你可以创建拉取请求。
在浏览器中,选择“代码”。
选择“2 个分支”以打开 GitHub 存储库中的分支列表。
将更改推送到尚未打开拉取请求的分支时,将短时间显示比较和拉取请求。 它是“打开拉取请求”页的快捷方式。
在“feature/linux-app”分支旁边,选择“新建拉取请求”。 可能需要选择“更多”图标 (...) 才会显示“新建拉取请求”选项。
选择“创建拉取请求”。
这时将显示拉取请求详细信息页面。
查看拉取请求详细信息的“检查”部分。
片刻之后,你会发现已触发自动检查。 该检查将运行拉取请求验证工作流。
工作流开始运行可能需要一些时间。 刷新浏览器窗口,直到显示状态检查。
检查完成后,可以看到它已失败。
注意
GitHub 允许你合并拉取请求,即使状态检查失败。 在实际解决方案中,应配置分支保护规则,以防止拉取请求在其状态检查成功之前被合并。
修复拉取请求验证错误
在状态检查窗格中,选择“详细信息”以检查工作流日志。
该日志包含来自 Bicep Linter 的以下消息:
Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
在 Visual Studio Code 中,打开“deploy/main.bicep”文件。
在第 20 行,有一个名为
appServiceAppLinuxFrameworkVersion
的变量。 未使用该变量。 接下来,你将修复此错误。在
appServiceApp
资源定义中,将linuxFxVersion
属性更新为使用变量,而不是将属性设置为硬编码值:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: appServiceAppLinuxFrameworkVersion } } }
在 Visual Studio Code 终端中,提交更改并将其推送到存储库。
git add . git commit -m "Fix Bicep file" git push origin feature/linux-app
监视并合并拉取请求
重新打开浏览器以转到拉取请求详细信息页。
拉取请求验证将再次运行。 如果状态检查未运行,请刷新页面。
等待检查完成。 这次检查将成功。 Bicep 文件中没有语法或 Linter 错误,因此可以合并拉取请求。
选择“合并拉取请求”以关闭拉取请求,并将更改合并到主分支中。
选择“确认合并”。