无法通过GitHub Release工作流上传二进制文件
我希望在每次推送标签时发布一个二进制文件。这是我的发布工作流:
name: Release
on:
push:
tags:
- 'v*'
env:
BUILD_TYPE: Release
jobs:
build-and-release:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: write
with:
tag_name: ${{ github.ref_name }}
release_name: Release ${{ github.ref_name }}
body: |
Release created by GitHub Actions for tag ${{ github.ref_name }}.
draft: false
prerelease: false
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{github.workspace}}\.bin\${{env.BUILD_TYPE}}\ccecho.exe
asset_name: ccecho-${{github.ref}}.exe
tag: ${{ github.ref }}
overwrite: true
body: "Releasing echo server ${{github.ref}}"
我想把发布的二进制文件作为制品的一部分上传。我给该仓库设置的GitHub细粒度权限为 "Contents: Read & write"、"Workflows: Release & write"、"Secrets: Read & write"。
以下是 日志。
解决方案
说明:我不使用 actions/create-release,softprops/actions-gh-release 是我使用的替代方案。
你对GitHub令牌的权限设置不正确。这个需要在工作流或作业级别完成:
name: Release
on:
push:
tags:
- 'v*'
env:
BUILD_TYPE: Release
jobs:
build-and-release:
runs-on: windows-latest
# set your permission here
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
release_name: Release ${{ github.ref_name }}
body: |
Release created by GitHub Actions for tag ${{ github.ref_name }}.
draft: false
prerelease: false
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{github.workspace}}\.bin\${{env.BUILD_TYPE}}\ccecho.exe
asset_name: ccecho-${{github.ref}}.exe
tag: ${{ github.ref }}
overwrite: true
body: "Releasing echo server ${{github.ref}}"
在env中设置只创建了两个环境变量,permissions 为空,contents=write 对权限也没有任何作用。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。