如何从actions/upload-artifact@v3归档自动生成GitHub发布草稿及路径问题解决
问题1:unzip找不到文件的修复方案
你的核心错误是错误使用了actions/download-artifact@v2的path参数:该参数指定的是下载目标目录,不是文件路径。你把它设为${{ github.workspace }}/release_artifacts.zip,导致工具解析路径时出现异常,最终zip文件被存放在了workspace的上一级目录(/home/runner/work/relaymono/),而你在unzip时用了workspace的路径(/home/runner/work/relaymono/relaymono/),自然找不到文件。
修复步骤:
方案1:正确下载到目录(推荐)
修改download-artifact配置,指定目标目录而非文件名,工具会自动将artifact内容下载到该目录(无需手动解压):
- name: Download artifact uses: actions/download-artifact@v2 with: name: release_artifacts path: ${{ github.workspace }}/release_artifacts
方案2:修正unzip路径(临时 workaround)
如果你坚持手动解压,需要调整unzip的路径指向实际文件位置:
- name: Extract artifacts for release upload run: | mkdir ${{ github.workspace }}/pkg ls ${{ github.workspace }}/../ unzip ${{ github.workspace }}/../release_artifacts.zip -d ${{ github.workspace }}/pkg/
问题2:从artifact自动生成GitHub发布草稿
使用softprops/action-gh-release(比官方actions/create-release更灵活)可以一键创建发布草稿并上传artifact内容,结合修复后的下载流程,完整配置如下:
publish: runs-on: ubuntu-20.04 needs: build steps: - name: Download artifact uses: actions/download-artifact@v2 with: name: release_artifacts path: ${{ github.workspace }}/release_artifacts - name: Create Draft Release uses: softprops/action-gh-release@v1 with: draft: true # 匹配release_artifacts目录下所有文件,可根据需求调整 files: | ${{ github.workspace }}/release_artifacts/**/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
关键参数说明:
draft: true:创建草稿发布,不会对外公开files:指定要上传到发布的文件,支持通配符匹配目录下所有内容GITHUB_TOKEN:默认仓库秘钥,拥有创建发布的权限
如果你的artifact是单个zip包,直接指定该文件路径即可:
files: ${{ github.workspace }}/release_artifacts.zip
内容的提问来源于stack exchange,提问作者freylint
相关产品推荐
相关产品推荐

