V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ODD10
V2EX  ›  GitHub

github actions 的 token 问题

  •  
  •   ODD10 · 2020-02-22 13:28:46 +08:00 via iPhone · 4669 次点击
    这是一个创建于 1497 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token

    ${{ secrets.GITHUB_TOKEN }}只有 1 小时时效

    但我编译要 2 个小时,GITHUB_TOKEN 会失效。

    我也尝试过自建 token,在项目的 Secrets 里面进行了添加;依旧不行。

    
    Create Release
    
    Run actions/create-release@v1
      with:
        tag_name: refs/tags/V1.0
        release_name: Release refs/tags/V1.0
        body: refs/tags/V1.0
        draft: false
        prerelease: false
      env:
        REPO_URL: https://github.com/coolsnowwolf/lede
        REPO_BRANCH: master
        CONFIG_FILE: .config
        DIY_SH: diy.sh
        FREE_UP_DISK: false
        SSH_ACTIONS: false
        UPLOAD_BIN_DIR: false
        UPLOAD_FIRMWARE: true
        TZ: Asia/Shanghai
        FILE_NAME: OpenWrt-K2P-firmware
        FIRMWARE: /home/runner/work/OpenWrt-K2P-firmware/OpenWrt-K2P-firmware/openwrt/bin/targets/ramips/mt7621
        GITHUB_TOKEN: ***
    ##[error]Validation Failed
    
    
    第 1 条附言  ·  2020-02-22 16:22:09 +08:00
    - name: Create Release
    id: create_release
    uses: actions/create-release@v1
    env:
    # super_secret: ${{ secrets.RELEASES_TOKEN }}
    # GITHUB_TOKEN: ${{ secrets.RELEASES_TOKEN }}
    # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    RELEASES_TOKEN: ${{ secrets.RELEASES_TOKEN }}
    # 以上方案都试过了,都以失败告终!
    with:
    tag_name: ${{ github.ref }}
    release_name: Release ${{ github.ref }}
    body: ${{ github.ref }}
    draft: false
    prerelease: false
    24 条回复    2020-03-05 07:20:16 +08:00
    ODD10
        1
    ODD10  
    OP
       2020-02-22 13:40:51 +08:00
    ```yaml

    - name: Create Release
    id: create_release
    uses: actions/create-release@v1
    env:
    # 建议自建 TOKEN
    # 然后在项目的 [Settings-Secrets] 绑定
    # https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
    # GITHUB_TOKEN 好像有时效,1 小时后失效,会报错 [Bad credentials]
    GITHUB_TOKEN: ${{ secrets.RELEASES_TOKEN }}
    with:
    tag_name: ${{ github.ref }} # 触发工作流程运行的分支或标记 ref https://help.github.com/en/actions/reference/contexts-and-expression-syntax-for-github-actions#github-context
    release_name: Release ${{ github.ref }}
    body: ${{ github.ref }}
    draft: false
    prerelease: false

    ```
    Trim21
        2
    Trim21  
       2020-02-22 13:51:27 +08:00
    试试换个环境变量的名字,不用`GITHUB_`开头
    ODD10
        3
    ODD10  
    OP
       2020-02-22 13:54:47 +08:00
    @Trim21 #2
    super_secret: ${{ secrets.RELEASES_TOKEN }}
    我现在尝试,要过两小时才能知道结果
    不知道自建的 token 是否也会有时间限制?
    ODD10
        4
    ODD10  
    OP
       2020-02-22 13:56:04 +08:00
    @Trim21 #2
    GITHUB_开头其实文档是说不能建立 GITHUB_名字的 token,好像与 env 无关
    Trim21
        5
    Trim21  
       2020-02-22 14:00:26 +08:00
    @ODD10 #3 自建的 token 应该没有失效时间吧。

    不过我看文档说的的确是环境变量
    “设置有 GITHUB_ 前缀的环境变量或密码将导致错误。”
    ODD10
        6
    ODD10  
    OP
       2020-02-22 14:04:46 +08:00 via iPhone
    @Trim21 #5
    https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables

    才看到,我自建的使用新 env 名字的还在编译;完结再来反馈
    ODD10
        7
    ODD10  
    OP
       2020-02-22 14:07:56 +08:00 via iPhone
    @Trim21 #5
    但还有一个问题,如果 env 中不能用 GITHUB_TOKEN 使用自建 token,可能不会加密,别人就能在 actions 日志看到这个 token。猜测,待验证。
    ihciah
        8
    ihciah  
       2020-02-22 14:34:15 +08:00
    @ODD10 设置到 secret 里的 token 也会被拿去 match 日志,然后把 match 到的部分打码。
    Kr98
        9
    Kr98  
       2020-02-22 14:39:13 +08:00
    只是检查 token 能不能用的话不需要 2 小时,跳过编译直接发布空的内容就够了,确定没问题之后再完整地跑。
    GITHUB_TOKEN 这个名字是 actions/create-release@v1 要用的,你改成 super_secret 就不认了。
    怀疑可能是 token 的权限没设置对?
    ODD10
        10
    ODD10  
    OP
       2020-02-22 14:43:46 +08:00 via iPhone
    @Kr98 #9
    GITHUB_TOKEN:自建 token。
    十几分种试过,是可以的,昨天我就试过了,不过这个 2 小时还是不行。我是测试过,才来这发帖
    ODD10
        11
    ODD10  
    OP
       2020-02-22 14:45:49 +08:00 via iPhone
    ODD10
        12
    ODD10  
    OP
       2020-02-22 14:46:49 +08:00 via iPhone
    @Kr98 #9 你看看是否问题?昨天我也怀疑权限没给够,后来差不多全选了,还是不顶用
    explorerman
        13
    explorerman  
       2020-03-03 09:32:42 +08:00
    楼主,问题解决了没。
    ODD10
        14
    ODD10  
    OP
       2020-03-03 14:15:55 +08:00 via iPhone
    @explorerman #13
    actions/create-release 使用自建 token,并且不存在已创建同名 release。是可以成功执行的。
    explorerman
        15
    explorerman  
       2020-03-03 15:03:37 +08:00
    @ODD10 方便分享一下代码和设置截图(模糊处理敏感信息)不,邮箱 [email protected] ,谢谢。在项目 Secrets 里面添加 token,还是在个人账户的 Settings/Developer settings/Personal access tokens 里添加。如果在 Secrets 里添加,其值的长度和复杂程度有什么要求没哈。

    这个问题困扰很久了,谢谢指导!
    ODD10
        16
    ODD10  
    OP
       2020-03-03 18:12:02 +08:00
    @explorerman #15
    在项目 Secrets 里面添加的 token,日志都会打码***;个人账户的 Settings/Developer settings/Personal access tokens 只是给操作仓库等权限; Secrets 的大小好像有限制,64kb 还是多少来着,一般超不了。Secrets 可以开启 debug 日志等等,不一定存 token,比如存 docker 用户名、密码也是可以的。
    explorerman
        17
    explorerman  
       2020-03-03 22:48:11 +08:00
    @ODD10 意思是,直接在在项目 Secrets 里面添加的 token 就好了是吧。
    尝试自己建立的 secrets 处理
    - name: Create release
    uses: softprops/action-gh-release@v1,
    env:
    LEO_TOKEN: ${{ secrets.LEO_TOKEN }}

    但错误提示 Unexpected error fetching GitHub release for tag refs/heads/master: HttpError: Bad credentials
    explorerman
        18
    explorerman  
       2020-03-03 23:05:03 +08:00
    @ODD10 需要在 2 个地方同时设置不。
    需要在个人账户 Settings/Developer settings/Personal access tokens 里,设置一个与项目 Secrets 里相同名称的 token 吗。如果是,项目 Secrets 里值要与 Personal access tokens 里产生的值,保持一致不。
    谢谢~
    ODD10
        19
    ODD10  
    OP
       2020-03-03 23:25:05 +08:00
    @explorerman #18
    Secrets 的 token 名称是独立的,所以随便起,你自己知道是干嘛的就行。比如你要用 Settings/Developer settings/Personal access tokens 里面的 tokenA,值一定要是 tokenA 的值,Secrets 的字段名随便起。
    explorerman
        20
    explorerman  
       2020-03-03 23:34:48 +08:00
    @ODD10 能否分享一下最后正确的代码哈,谢谢~
    ODD10
        21
    ODD10  
    OP
       2020-03-03 23:41:59 +08:00
    @explorerman #20
    GITHUB_TOKEN: ${{ secrets.RELEASES_TOKEN }}
    explorerman
        22
    explorerman  
       2020-03-04 21:43:56 +08:00
    @ODD10 我可能理解不太好,还不太清楚。可以这样理解不:
    1、在个人账户 Settings/Developer settings/Personal access tokens 里建立一个 token,比如 AAA_TOKEN,产生一个值为 XXXX。
    2、在项目 Secrets 里建立一个 BBB 的 secret,将其值确定为 XXXX ( AAA_TOKEN 的一串值)。
    3、再在代码 code 里,做如下描述
    - name: Create Release
    id: create_release
    uses: actions/create-release@v1
    env:GITHUB_TOKEN: ${{ secrets.RELEASES_TOKEN }}

    4、代码里要引用 AAA_TOKEN 或者 BBB 不。

    最后能否有联系方式哈,想多请教下。我的邮箱 [email protected]
    谢谢~
    ODD10
        23
    ODD10  
    OP
       2020-03-05 00:57:21 +08:00 via iPhone
    @explorerman #22
    secrets.RELEASES_TOKEN

    secrets secrets secrets

    secrets.RELEASES_TOKEN

    ———————————-

    还不明白吗?
    「 secrets.」这里接的就是 secrets 里面的字段名。RELEASES_TOKEN 就是我在 secrets 起的名字,只是用来做 github 发布编译固件文件的令牌票据。

    secrets 就相当于 Object,里面放满了 ATOKEN、BTOKEN……
    explorerman
        24
    explorerman  
       2020-03-05 07:20:16 +08:00
    @ODD10 谢谢帮助。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5443 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:51 · PVG 16:51 · LAX 01:51 · JFK 04:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.