gh actions cli - 无法设置变量...:HTTP 403:必须拥有存储库的管理员权限

问题描述 投票:0回答:1

我尝试使用 gh actions cli 设置存储库变量 RUN_ID 的值: 代码如下:

name: test3
on:
    workflow_dispatch:
      inputs:
        runid:
           required: false
           type: number

env:
   RUNID: ${{github['run_id']}}
   GITHUB_ENV: ${{ toJSON(github) }}
   GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}ß
         
jobs: 
    Test:
        permissions: write-all
        runs-on: ubuntu-latest
        environment: TWIST_DEV      
    
        steps:
            - uses: actions/checkout@v3    
                
            - name: Display the input value
              run: |
                echo "${{env.runid}}"

            - name: Update environment file with 'run_id' value
              run: |
                echo "${{github['run_id']}}"  > file
                cat file

            - name: List directories
              run: |
                  ls -la      
            
            - name: Change mode to file
              run: chmod 777 file

            - name: List directories
              run: |
                  ls -la   

            - name: Inputs runid (workflow call)
              if: ${{ inputs.runid }} != ''
              run: 'gh variable set RUN_ID < file'


            - name: Set runid variable 
              run: echo "${{vars.runid}}" 

手动运行管道时,我收到以下错误消息:

无法设置变量“RUN_ID”:HTTP 403:必须拥有存储库的管理员权限

我会很高兴你能帮助我。

提前致谢

github-actions pipeline
1个回答
0
投票

根据列出环境变量及其相关API,您需要一个具有repo范围权限(具体来说,

repo:public_repo
范围)的PAT(
个人访问令牌
):

您必须使用具有

repo
范围的访问令牌进行身份验证才能使用此端点。

一旦您的 PAT 具有所需的范围,您就需要将其设置为您的环境机密,以供 GitHub CLI (

gh
) 使用。

除此之外,在您的工作流程中,您正在使用

environment
。要操作环境中的变量,您还需要指定
--env
-e
标志。请参阅
gh variable list
set
delete
也同样如此。

这是一个例子:

name: gh_cli_variable_test

on: workflow_dispatch

jobs:
  ci:
    runs-on: ubuntu-latest
    environment: Dev

    env:
      GITHUB_TOKEN: ${{ secrets.GH_VARIABLE_PAT }}
      TEST_VAR: 'test_var_value'
      TEST_VAR_ENV: 'test_var_value_env'

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Delete
        run: |
          gh variable delete TEST_VAR
          gh variable delete TEST_VAR_ENV --env Dev

      - name: List (repo)
        run: gh variable list

      - name: List (env Dev)
        run: gh variable list --env Dev

      - name: Set (repo)
        run: gh variable set TEST_VAR --body "$TEST_VAR"

      - name: Set (env Dev)
        run: gh variable set TEST_VAR_ENV --body "$TEST_VAR_ENV" --env Dev

      - name: List (repo)
        run: gh variable list

      - name: List (env Dev)
        run: gh variable list --env Dev

      - name: Dump
        run: |
          echo 'TEST_VAR: ${{ vars.TEST_VAR }}'
          echo 'TEST_VAR_ENV: ${{ vars.TEST_VAR_ENV }}'

输出:

© www.soinside.com 2019 - 2024. All rights reserved.