作为 GitHub Action 环境变量的仓库名称?

44

如何在GitHub Actions中将仓库名称(而不是用户或组织)作为环境变量获取? 我发现github.repository,但它包含所有者作为第一部分,像这样:owner/repo

5个回答

54

尝试使用github.event.repository.name

- run: echo "REPO_NAME=${{ github.event.repository.name }}" >> $GITHUB_ENV

文档 不说,我真的推荐在某个测试仓库中倾倒上下文,以便熟悉它们,因为有很多数据可能在编写非平凡工作流程时有用,也可能没有用。

- name: Dump github context
  run:   echo "$GITHUB_CONTEXT"
  shell: bash
  env:
   GITHUB_CONTEXT: ${{ toJson(github) }}

请注意,github 上下文的变化取决于触发工作流程的事件,因此最好再次确认你想要使用的数据是否适用于工作流程中使用的所有事件。


3
谢谢!为了背景,我需要这个信息用于pull request事件,我发现变量是github.event.pull_request.base.repo.name。由于您提供的非常好的调试建议并引导我找到解决方案,我将标记您的帖子作为答案。 - CalculatingKraken
7
github.event.repository.name 对我有用。 - msdundar
13
可能需要提醒一下,当你的工作流程按计划触发时,github.event.repository.name不可用。我正在处理这个问题! :) - davidrmcharles
github.repository.name 不是有效的,也不包含存储库名称。本答案的其余部分是信息性的,但第一个示例是无效的。 - grenade
无法赞同这个足够!如果我知道toJson(github),我会节省很多时间... - tarikki
显示剩余2条评论

23

我认为你要找的语法实际上是 github.event.repository.name

@Samira的toJson(github)小贴士非常有用。我花了一段时间才注意到repository属性在`event.下面缩进了一些。

您可以直接使用该值,或者使用以下方法将其分配到顶级:

env:
  REPO_NAME: ${{ github.event.repository.name }}

15

这似乎是最可靠的方法,因为 github.event... 对于定时触发器等不起作用。这将始终有效。 - Kristofer
这适用于任何事件,不受影响。 - Luis Alejandro

4
你可以从github.repository中提取它:
name: Print repo name

on:
    workflow_dispatch:

jobs:
    print-name:
        runs-on: ubuntu-latest
        steps:
            - name: get-name
              run: |
                  echo "REPO_NAME=$(basename ${{ github.repository }})" >> $GITHUB_ENV
            - name: print-name
              run: |
                  echo "${{ env.REPO_NAME }}"

1
目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community
1
这个答案的优点是适用于所有工作流事件。 - JoshuaCWebDeveloper

1

现在${{ github.repository }}已经足够了。

如果你只需要基本名称,不包括仓库所有者或其他计算值,请参考下面的示例。


请注意!

如果您想计算某个值,请考虑使用设置输出,因为它:

  • 更安全;
  • 在您切换到可重用操作(例如组合操作)时更灵活。

这是Vue应用程序部署到Github Pages的完整示例:

on:
  push:

jobs:
  pages:
    runs-on: ubuntu-latest
    name: Pages Deploy
    steps:
    - uses: actions/checkout@v2

    # Output setting example
    - id: repo-basename
      run: |
        echo "value=`basename ${{ github.repository }}`" >> $GITHUB_OUTPUT
      shell: bash

    - uses: xRealNeon/VuePagesAction@1.0.1
      with:
        token: ${{ secrets.GITHUB_TOKEN }} # Leave this line unchanged
        username: ${{ github.repository_owner }}

        # Using of computed variable example
        reponame: ${{ steps.repo-basename.outputs.value }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接