快速入门:创建用于发布应用的GitHub工作流
本快速入门介绍如何创建GitHub工作流,以便从源代码发布 .NET 应用。 自动将 .NET 应用从GitHub发布到目标称为持续部署 (CD) 。 在本快速入门中,有许多可能的目标可以发布应用程序。
先决条件
添加发布配置文件
若要将应用发布到 Azure,请打开应用程序的App 服务实例的Azure 门户。 在资源 概述中,选择 “获取发布配置文件 ”并保存 *。本地 PublishSetting 文件。
警告
发布配置文件包含敏感信息,例如用于访问Azure 应用服务资源的凭据。 应始终非常小心地处理此信息。
在GitHub存储库中,导航到设置,然后从左侧导航菜单中选择“机密”。 选择 “新建存储库机密”以添加新机密。
输入 AZURE_PUBLISH_PROFILE
为 “名称”,并将发布配置文件中的 XML 内容粘贴到 “值 ”文本区域中。 选择“添加机密”。 有关详细信息,请参阅 加密机密。
创建工作流文件
在GitHub存储库中,将新的 YAML 文件添加到 .github/workflows 目录。 选择一个有意义的文件名,这将清楚地指示工作流要执行的操作。 有关详细信息,请参阅 工作流文件。
重要
GitHub要求将工作流组合文件放置在 .github/workflows 目录中。
Workflow files typically define a composition of one or more GitHub Action via the jobs.<job_id>/steps[*]
. 有关详细信息,请参阅GitHub Actions的工作流语法。
创建名为 publish-app.yml 的新文件,将以下 YML 内容复制并粘贴到其中:
name: publish
on:
push:
branches: [ production ]
env:
AZURE_WEBAPP_NAME: DotNetWeb
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
DOTNET_VERSION: '5.0.301' # The .NET SDK version to use
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
cd DotNet.WebApp
dotnet build --configuration Release --no-restore
dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
- name: Test
run: |
cd DotNet.WebApp.Tests
dotnet test --no-restore --verbosity normal
- uses: azure/webapps-deploy@v2
name: Deploy
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
在前面的工作流组合中:
定义
name: publish
名称“发布”将显示在工作流状态锁屏提醒中。name: publish
节点
on
表示触发工作流的事件:on: push: branches: [ production ]
- 在分支上
production
发生时push
触发。
- 在分支上
节点
env
定义命名环境变量 (env var) 。env: AZURE_WEBAPP_NAME: DotNetWeb AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root: DOTNET_VERSION: '5.0.301' # The .NET SDK version to use
- 为环境变量
AZURE_WEBAPP_NAME
赋值DotNetWeb
。 - 为环境变量
AZURE_WEBAPP_PACKAGE_PATH
赋值'.'
。 - 为环境变量
DOTNET_VERSION
赋值'5.0.301'
。 稍后将引用环境变量以指定dotnet-version
actions/setup-dotnet@v1
GitHub操作。
- 为环境变量
节点
jobs
会生成工作流要执行的步骤。jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Install dependencies run: dotnet restore - name: Build run: | cd DotNet.WebApp dotnet build --configuration Release --no-restore dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true - name: Test run: | cd DotNet.WebApp.Tests dotnet test --no-restore --verbosity normal - uses: azure/webapps-deploy@v2 name: Deploy with: app-name: ${{ env.AZURE_WEBAPP_NAME }} publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }} package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
- 有一个作业,该
publish
作业将在最新版本的 Ubuntu 上运行。 actions/setup-dotnet@v1
GitHub操作用于使用环境变量中的DOTNET_VERSION
指定版本设置 .NET SDK。- 调用
dotnet restore
该命令。 - 调用
dotnet build
该命令。 - 调用
dotnet publish
该命令。 - 调用
dotnet test
该命令。 azure/webapps-deploy@v2
GitHub操作使用给定publish-profile
和package
.- 从
publish-profile
AZURE_PUBLISH_PROFILE
存储库机密分配该密钥。
- 从
- 有一个作业,该
创建工作流状态锁屏提醒
GitHub存储库通常具有存储库目录根目录的 README.md 文件。 同样,最好报告各种工作流的最新状态。 所有工作流都可以生成一个状态锁屏提醒,该锁屏提醒在 README.md 文件中具有视觉吸引力。 若要添加工作流状态锁屏提醒,请执行以下操作:
从GitHub存储库中选择“操作”导航选项。
所有存储库工作流都显示在左侧,选择所需的工作流和省略号 (...) 按钮。
- 省略号 (...) 按钮展开所选工作流的菜单选项。
选择“ 创建状态锁屏提醒 ”菜单选项。
选择 “复制状态徽章 Markdown ”按钮。
将 Markdown 粘贴到 README.md 文件中,保存文件,提交并推送更改。
有关详细信息,请参阅 添加工作流状态锁屏提醒。
发布工作流状态徽章示例
通过 | 失败 | 无状态 |
---|---|---|