【问题标题】:How to get a git ref from within GitHub Actions?如何从 GitHub Actions 中获取 git ref?
【发布时间】:2022-01-13 20:46:15
【问题描述】:

这就是我正在尝试的:

- name: Create tag
  uses: actions/github-script@v3
  with:
    script: |
      console.log(await github.git.getRef({
        owner: context.repo.owner,
        ref: "refs/tags/v0.0.1",
        repo: context.repo.repo,
      }));

但是,它会产生“未找到”错误。

如果我使用 git 检查,我可以看到该标签存在:

$ git ls-remote
From git@github.com:contra/contra-deploy-tools.git
fc857fff2008eca7c4a547ad4bb35cd7ef5f3891    HEAD
fc857fff2008eca7c4a547ad4bb35cd7ef5f3891    refs/heads/main
b4e20f75a51aac030e3d8ca1360ee1ff84f10c18    refs/tags/v0.0.1

这似乎是一个权限问题。但是,我可以创建标签,并且工作流权限配置为“读写权限”。

更令人惊讶的是,我能够在工作流程中列出参考资料:

Run git ls-remote
From https://github.com/contra/contra-deploy-tools
f0191b469168aa48ee177d270fa2af507d3f7710    HEAD
f0191b469168aa48ee177d270fa2af507d3f7710    refs/heads/main
b4e20f75a51aac030e3d8ca1360ee1ff84f10c18    refs/tags/v0.0.1

这似乎是特定于 API 的问题。

我错过了什么?

【问题讨论】:

    标签: github-actions


    【解决方案1】:

    您不需要该 API 中的 refs/ 前缀。看着docs,上面写着:

    从您的 Git 数据库返回单个引用。 URL 中的 :ref 必须格式化为 head/ 用于分支和 tags/ 用于标记。

    因此,如果您将步骤更改为以下,它应该可以工作。

    - name: Create tag
      uses: actions/github-script@v3
      with:
        script: |
          console.log(await github.git.getRef({
            owner: context.repo.owner,
            ref: "tags/v0.0.1",
            repo: context.repo.repo,
          }));
    

    注意:您使用的是 github-script 版本 3,但已经有 v5。如果您想让您的操作保持最新,我之前描述了如何使用dependabot 来完成:https://stackoverflow.com/a/70196496/1080523

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 2021-09-30
      • 2020-01-21
      • 2021-02-14
      • 2020-10-01
      • 2022-01-19
      • 2022-01-08
      • 2020-01-14
      • 2022-06-21
      相关资源
      最近更新 更多