Cod*_*Med 4 github github-actions github-cli
即使我们剪切并粘贴了之前运行的命令release not found返回的版本的精确名称,也会抛出退出代码 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.
Run Code Online (Sandbox Code Playgroud)
完整的工作流程代码如下:
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.
Run Code Online (Sandbox Code Playgroud)
该$repoWithToken变量已正确填充,因为gh release list --repo $repoWithToken命令运行时没有错误,如上面的日志所示。
以上使用此链接中的文档。
当我们更改命令以使用标签名称以gh release download _linux_n.1.2 --repo $repoWithToken更类似于链接中文档中给出的示例时,会引发相同的错误。
gh release download为了exact_name_of_release_linux_n.1.2成功下载版本,需要在下面的 GitHub 工作流程代码中的 CLI 命令中具体更改哪些内容?
创建一个空的存储库,仅包含以下内容:
download-a-release-linux,以及main.py简单命令的文件。print("Hello World")使用 API 创建一个版本,如下所示,这可以在上述相同工作流程的先前作业中完成:
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
Run Code Online (Sandbox Code Playgroud)
获取版本的名称,上面我们称之为exact_name_of_release_linux_n.1.2
使用上面的代码运行包含download-a-release-linux作业的工作流,并进行所需的任何修改,以使其成功下载版本并列出版本中包含的应用程序的有效内容。
仔细阅读您链接的文档。根据 的文档gh release download,该命令采用git 标签名称- 而不是 GitHub 版本名称。
Run Code Online (Sandbox Code Playgroud)gh release download [<tag>] [flags]
“ exact_name_of_release_linux_n.1.2” 是GitHub 版本名称- 不是版本git 标签名称。_linux_n.1.2是该版本的 git 标签名称。在撰写本文时,的文档gh release list实际上并未解释输出表的每一列的含义。我是通过阅读GitHub cli工具的源码才知道的。我稍后会解释。
exact_name_of_release_linux_n.1.2为了成功下载版本,在下面的 GitHub 工作流程代码中的 gh release download cli 命令中具体需要更改哪些内容?
您需要将您的呼叫更改为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
# ...
Run Code Online (Sandbox Code Playgroud)
注意(因为您对此发表了混乱的评论):尽管tarball 和 zipball不是该版本的资产列表的一部分它们与 GitHub 版本 UI 中该版本的其他实际资产显示在同一列表中。如果您想下载它们,请使用命令--archive的参数gh release download。
repoWithToken另外,如果您已经设置了环境变量,我认为您不需要使用GH_TOKEN。您应该能够使用accountName/repoName.
注意:这适用于 v2.16.1 版本的源代码,但未来的行为可能会发生变化。
如果你看一下执行命令的源代码gh release list,您会发现它打印了一个表,其中的列如下:
gh release download期望收到的内容)如果您查看实现该gh release download命令的FindDraftRelease源代码,您会发现当找不到任何版本时会返回“未找到版本”错误,并且跟踪对 的调用,当尝试查找版本FindDraftRelease时会调用它当使用给定的 git 标签进行GitHub Rest api 调用以通过 git 标签获取版本FetchRelease时,找不到任何非草稿版本。
我已经提出了一个问题,与 GitHub cli 工具的维护者讨论,主题是gh release list命令的表列的含义未明确记录。该问题已通过更新解决,该更新添加了标题行,标记输出每列的含义。
| 归档时间: |
|
| 查看次数: |
2676 次 |
| 最近记录: |