即使在剪切和粘贴前面运行的gh release list --repo $repoWithToken命令返回的发行版的确切名称时,退出代码1也会引发一个gh release list --repo $repoWithToken错误。
GitHub错误日志的相关部分是:
About list releases
exact_name_of_release_linux_n.1.2 _linux_n.1.2 2022-09-19T23:28:08Z
About to download release
release not found
Error: Process completed with exit code 1.工作流的完整代码如下:
download-a-release-linux:
runs-on: ubuntu-latest
steps:
- shell: bash
name: Download a Release
env:
VERSION: ${{ inputs.version }}
GH_TOKEN: ${{ secrets.GITPAT }}
run: |
echo "About list releases"
repoWithToken="https://"$GH_TOKEN"@github.com/accountName/repoName"
gh release list --repo $repoWithToken
echo "About to download release"
gh release download exact_name_of_release_linux_n.1.2 --repo $repoWithToken
echo "About to list contents of directory after download"
ls -al$repoWithToken变量的填充是正确的,因为gh release list --repo $repoWithToken命令运行时没有出错,如上面的日志所示。
上面使用的是来自此链接的文档。
当我们将命令更改为使用标记名作为gh release download _linux_n.1.2 --repo $repoWithToken时,会引发相同的错误,以更接近于链接中的文档中给出的示例。
问题
为了成功下载gh release download发行版,需要在下面的GitHub工作流代码中的exact_name_of_release_linux_n.1.2 CLI命令中具体更改什么?
复制步骤
- a workflow file that includes the `download-a-release-linux` job shown above, and
- a `main.py` file with a simple `print("Hello World")` command to represent an app.exact_name_of_release_linux_n.1.2download-a-release-linux作业的工作流,并对其进行任何必要的修改,以便成功下载发行版,并列出发行版中包含的应用程序的有效内容。发布于 2022-09-22 03:12:32
仔细阅读你联系的那些医生。根据gh release download的docs,该命令采用git标记名,而不是GitHub发布名。
gh发行版下载
"exact_name_of_release_linux_n.1.2“是GitHub发行版的名称,而不是发行版的git标记名。_linux_n.1.2是该版本的git标记名。在撰写本文时,gh release list并没有实际解释输出表的每一列的含义。我只通过阅读GitHub cli工具的源代码就知道了。我稍后再解释。
回答
为了成功下载GitHub发行版,需要在下面的
exact_name_of_release_linux_n.1.2工作流代码中的gh release命令中具体更改哪些内容?
您需要更改对gh release download的调用,以使用发行版的git 标记名称,而不是GitHub发行版的名称。
# ...
jobs:
download-a-release-linux:
runs-on: ubuntu-latest
steps:
- shell: bash
name: Download a Release
env:
VERSION: ${{ inputs.version }}
GH_TOKEN: ${{ secrets.GITPAT }}
run: |
echo "About to list releases"
repoWithToken="https://"$GH_TOKEN"@github.com/accountName/repoName"
gh release list --repo $repoWithToken
echo "About to download release"
gh release download _linux_n.1.2 --repo $repoWithToken
echo "About to list contents of directory after download"
ls -al
# ...注意(因为您在混淆中对此进行了评论):tarball和zipball并不是发行版资产列表的一部分,尽管它们与GitHub版本UI中发布的其他实际资产显示在同一个列表中。如果您想下载这些文件,请使用--archive命令的gh release download参数。
此外,如果您已经设置了repoWithToken环境变量,那么我不认为您需要使用GH_TOKEN。您应该能够使用accountName/repoName。
源代码阅读练习
注意:这适用于v2.16.1版本的源代码,但未来的行为可能会发生变化。
如果您查看命令,您将看到它打印了一个列所在的表:
gh release download期望接收的)如果您查看命令,您将看到当FindDraftRelease没有找到任何版本时返回“releases”错误,并跟踪对FindDraftRelease的调用,当FetchRelease试图使用给定的git标记查找一个版本时,当它生成通过git标记获得GitHub rest版本的调用时没有发现任何非草稿版本,就会调用该错误。
我已经打开了与GitHub cli工具的维护人员讨论的一个问题,主题是gh release list命令的表列的含义没有显式记录。这个问题已经通过一个更新来解决,它添加了一个标题行,标记输出的每一列意味着什么。
https://stackoverflow.com/questions/73780525
复制相似问题