如何使用 github-script 操作在 GitHub Action 中上传版本

Bri*_*ham 4 github github-api github-actions

现在,一些标准 GitHub 操作已存档并且不再受支持,我需要创建一个新版本并使用GitHub 脚本操作上传工件。

注意:我无法使用 GitHub 不支持的操作。

我已经完成了发布并正在工作,但是现在当尝试上传发布工件时,我找不到上传发布内容(这是一个 tarball)的方法。

用于上传发布资产的 API 端点的文档建议数据应该是调用输入的一部分,而不是引用文件。

如何将文件的内容获取到下面的数据参数中:

- name: Upload Assets
  uses: "actions/github-script@v6"
  with:
    script: |
        try {
          return await github.rest.repos.uploadReleaseAsset({
            owner: context.repo.owner,
            repo: context.repo.repo,
            name: "release.tar.xz",
            release_id: ${{ fromJSON(steps.deploy.outputs.result).data.id }}
            data: 
          })
        } catch (error) {
          core.setFailed(error.message);
        }
Run Code Online (Sandbox Code Playgroud)

jes*_*ing 6

创建版本和其他 GitHub 操作的一个好方法是GitHub CLI ( gh)。

GitHub 工作流程已经有一个 GitHub 令牌${{ github.TOKEN }},您可以将其传递给 env,CLI 将自动获取它。

permissions:
  contents: write

jobs:
  release:
    steps:
      - run: |
          gh release create v1.2.3 release.tar.xz
        env:
          GITHUB_TOKEN: ${{ github.TOKEN }}
        shell: bash
        name: Creates a release in GitHub and uploads attachments
Run Code Online (Sandbox Code Playgroud)

注意:由于某种原因,gh将执行一个调用来查看文件是否已上传,另一个调用来上传文件。因此,我使用这种方法突破了 API 速率限制,尝试将 500 个文件附加到一个版本。通常,您每小时应该能够跨工作流执行 1000 次 API 调用。