练习 - 为拉取请求创建工作流

已完成

你的网站开发团队要求你更新 Linux 操作系统上运行的网站。 在此练习中,你将添加一个验证工作流,该工作流可在打开或更新拉取请求时自动运行。 然后,你将为网站的操作系统更改创建拉取请求。

在此过程中,你将:

  • 为拉取请求验证创建工作流。
  • 将 Bicep Lint 分析添加到工作流。
  • 创建拉取请求,并查看工作流运行情况。
  • 修复拉取请求验证工作流识别到的任何错误。
  • 重新运行工作流,合并并关闭拉取请求。

创建要在创建和更新拉取请求时运行的工作流

  1. 在 Visual Studio Code 中,在“.github/workflows”文件夹中创建一个名为“pr-validation.yml”的新文件。

    Visual Studio Code 的屏幕截图,其中显示了工作流文件夹内的 PR 验证 .yml 文件。

  2. 将以下代码添加到该文件:

    name: pr-validation
    
    on: pull_request
    

    此代码可确保无论在何时创建或更新拉取请求时都执行该工作流。

    注意

    你要直接使用存储库的主分支。 通常,你不会这样做,但在本练习中,你将使用主分支来简化这些步骤。 在你自己的项目中,请务必设置分支保护规则来保护主分支。

向工作流添加 Lint 作业

每当打开或编辑拉取请求时,你想要对 Bicep 文件运行 Lint 分析步骤。 存储库中有一个可重复使用的 Lint 工作流,你可从此工作流中调用它。

  1. 在现有文件内容的末尾,若要重复使用存储库中定义的 Lint 工作流,请添加以下行:

    jobs:
      lint:
        uses: ./.github/workflows/lint.yml
    

    存储库中有一个“bicepconfig.json”文件,该文件将 Linter 配置为发出错误而不是警告,因此 Lint 作业期间发生的任何失败都将导致工作流失败。

  2. 保存更改。

  3. 通过在 Visual Studio Code 终端中运行以下命令来提交更改并将其推送到 Git 存储库的主分支:

    git add .
    git commit -m "Add first version of pull request validation workflow"
    git push
    

更新 Bicep 文件

接下来,你将修改网站的 Bicep 文件,以将网站的操作系统更新为 Linux。

  1. 在 Visual Studio Code 终端中,运行以下命令来为更改创建一个新分支:

    git checkout -b feature/linux-app
    
  2. 打开 deploy 文件夹中的 main.bicep 文件。

  3. 在文件顶部附近的变量定义下方,定义应用程序框架要使用的新变量:

    // 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 框架生成应用程序。

  4. 安装 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
      }
    }
    
  5. 更新 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 拉取请求中的表现。

  6. 保存更改。

  7. 通过在 Visual Studio Code 终端中运行以下命令来提交更改并将其推送到 Git 存储库:

    git add .
    git commit -m "Update operating system to Linux"
    git push origin feature/linux-app
    

创建拉取请求

由于已配置了工作流,并且更新了 Bicep 文件,因此你可以创建拉取请求。

  1. 在浏览器中,选择“代码”。

  2. 选择“2 个分支”以打开 GitHub 存储库中的分支列表。

    GitHub 的屏幕截图,其中显示了存储库的分支列表。

    将更改推送到尚未打开拉取请求的分支时,将短时间显示比较和拉取请求。 它是“打开拉取请求”页的快捷方式。

  3. 在“feature/linux-app”分支旁边,选择“新建拉取请求”。 可能需要选择“更多”图标 (...) 才会显示“新建拉取请求”选项

    GitHub 的屏幕截图,其中显示了用于创建对功能/linux 应用分支的拉取请求的链接。

  4. 选择“创建拉取请求”。

    GitHub“打开拉取请求”窗格的屏幕截图,其中显示了“创建拉取请求”按钮。

    这时将显示拉取请求详细信息页面。

  5. 查看拉取请求详细信息的“检查”部分。

    片刻之后,你会发现已触发自动检查。 该检查将运行拉取请求验证工作流。

    工作流开始运行可能需要一些时间。 刷新浏览器窗口,直到显示状态检查。

    检查完成后,可以看到它已失败。

    GitHub 的屏幕截图,其中显示了拉取请求详细信息页面上的失败状态检查。

    注意

    GitHub 允许你合并拉取请求,即使状态检查失败。 在实际解决方案中,应配置分支保护规则,以防止拉取请求在其状态检查成功之前被合并。

修复拉取请求验证错误

  1. 在状态检查窗格中,选择“详细信息”以检查工作流日志。

    GitHub 的屏幕截图,其中显示了工作流日志,包括验证错误。

    该日志包含来自 Bicep Linter 的以下消息:

    Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
    
  2. 在 Visual Studio Code 中,打开“deploy/main.bicep”文件。

    在第 20 行,有一个名为 appServiceAppLinuxFrameworkVersion 的变量。 未使用该变量。 接下来,你将修复此错误。

  3. appServiceApp 资源定义中,将 linuxFxVersion 属性更新为使用变量,而不是将属性设置为硬编码值:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: appServiceAppLinuxFrameworkVersion
        }
      }
    }
    
  4. 在 Visual Studio Code 终端中,提交更改并将其推送到存储库。

    git add .
    git commit -m "Fix Bicep file"
    git push origin feature/linux-app
    

监视并合并拉取请求

  1. 重新打开浏览器以转到拉取请求详细信息页。

    拉取请求验证将再次运行。 如果状态检查未运行,请刷新页面。

    等待检查完成。 这次检查将成功。 Bicep 文件中没有语法或 Linter 错误,因此可以合并拉取请求。

  2. 选择“合并拉取请求”以关闭拉取请求,并将更改合并到主分支中。

    GitHub 的屏幕截图,其中显示了拉取请求详细信息页面上的“合并拉取请求”按钮。

  3. 选择“确认合并”。