如何部署到 Azure App Service
为了帮助您开始使用 GitHub Actions 进行自动化部署,我创建了三个实践实验:
-
部署到 Azure App Service
-
部署到 AWS ECS
-
部署到 GKE
所有的实践实验都假设您已经在指定的云平台上设置好了帐户。如果您使用的是单一云策略,您可以直接跳到与您相关的实验步骤,跳过其他的。
有关实践实验的详细步骤说明,请访问 GitHub 上的 链接。建议您按照该页面上的步骤操作,因为它提供了可以方便复制和粘贴的链接。在这里,我将解释背景并提供逐步指南,重点是如何部署应用。
部署 Azure 资源
Azure 资源的部署在 setup-azure.sh
脚本中进行。该脚本创建了一个资源组、一个应用服务计划和一个应用服务。您可以很容易地在工作流中执行此脚本。部署后,我们从 Web 应用中获取发布配置文件并将其存储在 GitHub 中的一个密钥中。您可以通过 Azure 门户或 Azure CLI 获取发布配置文件:
$ az webapp deployment list-publishing-profiles \
--resource-group $rgname \
--name $appName \
--xml
使用 GitHub Actions 部署应用
该工作流由两个作业组成:构建和部署。构建作业配置运行器以使用正确的 NodeJS 和 .NET 版本并构建应用程序。
以下任务使用 dotnet publish
将网站发布到名为 publish
的文件夹:
- name: Build and publish with dotnet
working-directory: ch9_release/src/Tailwind.Traders.Web
run: |
dotnet build --configuration Release
dotnet publish -c Release -o publish
下一步将构建的工件上传到 GitHub,以便在后续作业中使用。这使得您可以将相同的包发布到多个环境中:
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: website
path: ch9_release/src/Tailwind.Traders.Web/publish
此外,您可以在工作流完成后查看和检查工件(见图 9.4):

部署作业依赖于构建作业,并将应用程序部署到生产环境。在环境中,您需要设置密钥并添加必要的审查员:
Deploy:
runs-on: ubuntu-latest
environment: prod
needs: Build
该工作流下载名为 website
的工件到一个名为 website
的文件夹:
- uses: actions/download-artifact@v2
with:
name: website
path: website
接着,它使用 azure/webapps-deploy
操作并通过发布配置文件部署网站:
- name: Run Azure webapp deploy action using publish profile credentials
uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.appName }}
slot-name: Production
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE }}
package: website
最后一步只是一个如何验证部署的示例。您当然需要使用 curl
请求一个指向数据库的网站的 URL:
u=https://${{ env.appName }}.azurewebsites.net/
status=`curl --silent --head $u | head -1 | cut -f 2 -d' '`
if [ "$status" != "200" ]
then
echo "Wrong HTTP Status. Actual: '$status'"
exit 1
fi
如果您完成了实践实验中的逐步指南,您将拥有一个可以添加其他环境并部署到不同 App Service 部署插槽的测试环境(有关更多信息,请访问 Azure App Service 部署插槽文档)。