
解决GitHub Release文件上传难题gh_mirrors/up/upload-release-action实战案例分享【免费下载链接】upload-release-actionUpload files to a GitHub release项目地址: https://gitcode.com/gh_mirrors/up/upload-release-action在软件开发过程中发布版本并上传相关文件到GitHub Release是一项常见但可能繁琐的任务。特别是对于新手开发者来说手动操作不仅耗时还容易出错。今天我们将介绍一个强大的工具——gh_mirrors/up/upload-release-action它能帮助你轻松实现GitHub Release文件的自动上传让版本发布过程变得简单高效。什么是gh_mirrors/up/upload-release-actiongh_mirrors/up/upload-release-action是一个跨平台的GitHub Action它允许你选择要上传到刚刚标记的发布版本中的文件。该工具运行在GitHub提供的所有操作系统类型上能够极大地简化文件上传到GitHub Release的流程。无论是单个文件还是多个文件无论是简单的上传还是复杂的配置它都能满足你的需求。核心功能与优势支持多种文件上传方式该工具支持两种主要的文件上传方式。你可以指定单个本地文件进行上传也可以使用glob模式匹配多个文件这对于需要上传多个相关文件的场景非常有用。当使用glob模式时asset_name参数会被自动忽略文件将以其原始名称作为资产名称。灵活的版本控制选项你可以通过tag参数指定要上传到的发布标签。如果需要还可以使用target_commit参数设置标签所基于的提交哈希或分支。此外工具还提供了prerelease和draft参数分别用于将发布标记为预发布和草稿方便你在正式发布前进行修改和完善。强大的覆盖与检查机制overwrite参数允许你在资产名称已存在时覆盖现有资产而check_duplicates参数则可以检查是否存在同名资产避免重复上传。这些功能在持续集成和持续部署流程中非常实用能够确保每次发布都是最新且准确的。多平台支持作为一个跨平台工具gh_mirrors/up/upload-release-action可以在GitHub Actions支持的所有操作系统上运行包括Ubuntu、Windows和macOS。这意味着无论你的开发环境是什么都可以轻松集成这个工具。快速开始简单示例要使用gh_mirrors/up/upload-release-action首先需要将仓库克隆到本地。你可以使用以下命令git clone https://gitcode.com/gh_mirrors/up/upload-release-action下面是一个简单的使用示例展示了如何在标签创建时自动构建并上传二进制文件name: Publish on: push: tags: - * jobs: build: name: Publish binaries runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Build run: cargo build --release - name: Upload binaries to release uses: svenstaro/upload-release-actionv2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: target/release/mything asset_name: mything tag: ${{ github.ref }} overwrite: true body: This is my release text在这个示例中当有新的标签被推送时工作流会自动触发。它首先检出代码然后构建发布版本最后使用upload-release-action将构建好的二进制文件上传到对应的GitHub Release。高级应用多平台构建与上传对于需要支持多个操作系统的项目gh_mirrors/up/upload-release-action同样能够胜任。下面是一个复杂示例展示了如何为不同的操作系统构建并上传相应的二进制文件name: Publish on: push: tags: - * jobs: publish: name: Publish for ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest artifact_name: mything asset_name: mything-linux-amd64 - os: windows-latest artifact_name: mything.exe asset_name: mything-windows-amd64 - os: macos-latest artifact_name: mything asset_name: mything-macos-amd64 steps: - uses: actions/checkoutv4 - name: Build run: cargo build --release --locked - name: Upload binaries to release uses: svenstaro/upload-release-actionv2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: target/release/${{ matrix.artifact_name }} asset_name: ${{ matrix.asset_name }} tag: ${{ github.ref }}这个示例使用了GitHub Actions的矩阵功能同时在Ubuntu、Windows和macOS上构建项目。每个平台的构建结果都会被上传到同一个GitHub Release并且具有不同的资产名称方便用户根据自己的操作系统选择下载。使用glob模式上传多个文件如果你需要一次性上传多个文件可以使用file_glob参数。将其设置为true后file参数可以接受glob模式从而匹配多个文件。下面是一个示例name: Publish on: push: tags: - * jobs: build: name: Publish binaries runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Build run: cargo build --release - name: Upload binaries to release uses: svenstaro/upload-release-actionv2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: target/release/my* tag: ${{ github.ref }} overwrite: true file_glob: true在这个示例中file参数设置为target/release/my*这将匹配所有以my开头的文件。file_glob设置为true表示启用glob模式匹配。这样所有匹配的文件都会被上传到GitHub Release每个文件都以其原始名称作为资产名称。常见问题与解决方案权限问题如果在使用过程中遇到resource not accessible by integration错误通常是由于权限不足导致的。此时你需要为token添加contents: write权限。可以在工作流文件中添加以下内容permissions: contents: write需要注意的是这些权限在push事件中默认授予但在pull request事件中则不会。因此在为pull request添加此权限时要格外小心因为它允许对整个仓库内容进行广泛的更改。重复上传问题默认情况下check_duplicates参数设置为true这会检查是否存在同名资产并跳过重复上传。如果你需要禁用此检查以减少GitHub API的使用可以将check_duplicates设置为false。发布说明问题如果你需要从文件中读取发布说明并将其作为release的body可以使用以下方法- name: Read release.md and use it as a body of new release id: read_release shell: bash run: | r$(cat path/to/release.md) r${r//%/%25} r${r//$\n/%0A} r${r//$\r/%0D} echo RELEASE_BODY$r $GITHUB_OUTPUT - name: Upload Binaries to Release uses: svenstaro/upload-release-actionv2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ github.ref }} body: | ${{ steps.read_release.outputs.RELEASE_BODY }}这个方法会读取release.md文件的内容并对其进行适当的转义然后将其作为环境变量传递给upload-release-action。结语gh_mirrors/up/upload-release-action是一个功能强大且易于使用的工具它能够极大地简化将文件上传到GitHub Release的过程。无论你是新手开发者还是经验丰富的专业人士都能从中受益。通过自动化文件上传流程你可以节省时间和精力专注于更重要的开发工作。如果你还在手动上传文件到GitHub Release不妨尝试一下gh_mirrors/up/upload-release-action相信它会成为你开发流程中的得力助手。【免费下载链接】upload-release-actionUpload files to a GitHub release项目地址: https://gitcode.com/gh_mirrors/up/upload-release-action创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考