GitHub Action部署ASP.NET至Azure Web App时找不到工件问题
GitHub Actions部署ASP.NET Core到Azure Web App时找不到Artifact的排查方向
问题描述
首次使用GitHub Actions和Azure部署ASP.NET Core应用至Azure Web App时失败,报错信息:
Error: Unable to download artifact(s): Artifact not found for name: .net-app Please ensure that your artifact is not expired and the artifact was uploaded using a compatible version of toolkit/upload-artifact. For more information, visit the GitHub Artifacts FAQ: https://github.com/actions/toolkit/blob/main/packages/artifact/docs/faq.md
对应的Workflow文件:
name: Build and deploy ASP.Net Core app to Azure Web App - khj-reservations on: push: branches: - main workflow_dispatch: jobs: build: runs-on: ubuntu-latest permissions: contents: read # Required for actions/checkout steps: - uses: actions/checkout@v4 - name: Set up .NET Core uses: actions/setup-dotnet@v4 with: dotnet-version: '8.x' - name: Build with dotnet run: dotnet build --configuration Release - name: Publish the app run: dotnet publish -c Release -o publish - name: Upload artifact for deployment job uses: actions/upload-artifact@v4 with: name: .net-app path: publish deploy: runs-on: ubuntu-latest needs: build environment: name: 'Production' url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} permissions: id-token: write # Required for requesting the JWT contents: read # Required for actions/checkout steps: - name: Download artifact from build job uses: actions/download-artifact@v4 with: name: .net-app path: . - name: Login to Azure uses: azure/login@v2 with: client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_06962391311046B880D14BD1DE44D7F4 }} tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_1AAC5E194AEB462799723958F7287DF2 }} subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_F8253D89484B4CCA9912CBA4EE376D22 }} - name: Deploy to Azure Web App id: deploy-to-webapp uses: azure/webapps-deploy@v3 with: app-name: 'khj-reservations' slot-name: 'Production' package: .
已确认upload-artifact和download-artifact版本兼容,且查看错误链接FAQ未找到解决方案,以下是其他可能的排查方向:
可能的原因及排查点
- Build任务未完整执行:查看Build阶段的日志,确认
Upload artifact for deployment job步骤是否成功完成。如果前置步骤(如dotnet publish)失败,artifact根本没有被上传。 - Artifact名称匹配问题:确认上传和下载时的artifact名称完全一致(包括开头的
.),GitHub Actions的artifact名称区分大小写,任何字符差异都会导致找不到。 - Publish目录为空:在上传artifact前添加
ls -la publish命令,检查dotnet publish是否真的生成了文件到指定目录。如果目录为空,上传的artifact自然无效。 - 权限不足:Build任务当前仅配置了
contents: read权限,尝试添加actions: write权限,确保有足够权限将artifact上传至GitHub的action存储空间。 - 触发逻辑异常:确认触发Workflow的分支是
main,且Deploy任务确实在Build任务完成后才执行(虽然配置了needs: build,但可检查Workflow执行时序)。另外,检查Production环境是否有未通过的审批,导致Deploy提前启动。 - 存储空间不足:检查仓库的artifact存储用量,若空间已满,上传操作可能静默失败。
- 缓存或旧数据干扰:通过
workflow_dispatch手动重新触发Workflow,排除缓存或旧artifact残留的影响。
内容的提问来源于stack exchange,提问作者marie_antoinette
相关产品推荐
相关产品推荐

