使用GitHub Actions部署Azure App Service时找不到工件问题
解决GitHub Actions部署Spring Boot到Azure App Service时的"找不到工件"错误
构建流程执行成功,但部署步骤报错Error: Unable to find any artifacts for the associated workflow.,结合你的工作流配置,问题主要出在工件路径匹配和部署阶段的文件定位上,以下是具体修复方案:
1. 确认Maven生成正确的WAR文件
很多Spring Boot项目默认打包为JAR,需先在pom.xml中明确指定打包类型:
<packaging>war</packaging>
如果需要适配Azure App Service的容器,可额外添加排除内嵌Tomcat的配置(可选):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
2. 修正工作流路径配置
构建阶段:优化上传路径并添加文件验证
原上传路径可简化,同时新增一步验证WAR文件是否生成,避免空上传:
- name: Verify WAR file exists run: ls -la target/ - name: Upload artifact for deployment job uses: actions/upload-artifact@v3 with: name: java-app path: target/*.war
部署阶段:修正部署包路径
下载工件后,文件会存放在当前工作目录的java-app子文件夹下(对应artifact名称),原配置中package: '*.war'会在根目录查找,自然找不到文件,需修改为:
- name: Deploy to Azure Web App id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: 'webApp12dg' slot-name: 'Production' publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_F2A6B2A7E43B4D568F7E92A0E5D97521 }} package: java-app/*.war
完整修复后的工作流配置
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy # More GitHub Actions for Azure: https://github.com/Azure/actions name: Build and deploy WAR app to Azure Web App - webApp12dg on: push: branches: - main workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Java version uses: actions/setup-java@v1 with: java-version: '17' - name: Build with Maven run: mvn clean install - name: Verify WAR file exists run: ls -la target/ - name: Upload artifact for deployment job uses: actions/upload-artifact@v3 with: name: java-app path: target/*.war deploy: runs-on: ubuntu-latest needs: build environment: name: 'Production' url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} steps: - name: Download artifact from build job uses: actions/download-artifact@v3 with: name: java-app - name: Deploy to Azure Web App id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: 'webApp12dg' slot-name: 'Production' publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_F2A6B2A7E43B4D568F7E92A0E5D97521 }} package: java-app/*.war
额外排查点
- 查看构建日志中"Upload artifact for deployment job"步骤的输出,确认是否成功上传文件
- 查看部署日志中"Download artifact from build job"步骤的输出,确认是否成功下载文件
- 如果Maven配置了
<finalName>自定义文件名,需确保path和package中的路径匹配该文件名

内容的提问来源于stack exchange,提问作者S_R
相关产品推荐
相关产品推荐

