有没有办法只在 Github 操作中获取项目文件夹名称?

Is there a way to get the project folder name only on a Github action?

我可以用 ${{ github.repository }} 得到 repoowner/repo-name,但我只想得到 repo-name

当我在做的时候。

GitLab 有一个直接的变量。

如何从 .yaml 不在脚本中获取引用访问环境变量? ${{ $ENV_VAR }} 有效吗?可能不是。

有没有办法直接在 yaml 中删除或替换斜杠?

  build:
    needs: test
    name: Build release Zip
    runs-on: ubuntu-latest
    env:
      DEPLOY_REF: ${{ github.sha }}
      DEPLOY_REF_SHORT: ${{ github.sha }}
      DEPLOY_ZIPFILE: ${{ github.workspace }}/build/zip/${{ github.repository }}-${{ github.sha }}.zip
    steps:

github 上下文还包含事件数据,您可以从中轻松阅读一些更详细的信息。在这种情况下,${{ github.event.repository.name }} 只会给你 repo-name 部分。

创建测试 workflow/job 以打印所有上下文数据可能是个好主意,直​​到您熟悉它们为止,请参阅 Example printing context information to the log file


至于替换文本,您始终可以使用 ::set-env or ::set-output 中的第一个步骤来准备您以后需要的所有内容。您只需要以特定格式打印 name/value,这样您就可以使用任何您熟悉的 shell 来操作文本:

# All steps after this one will have env variable `GHA_BRANCH` passed to them.
- run:   echo ::set-env name=GHA_BRANCH::$(echo $GITHUB_REF | awk -F / '{print }')
  shell: bash

除了@Samira 回复之外,您还可以使用 ${GITHUB_REPOSITORY#*/} 来获取存储库名称,因为它会删除 / 前缀之前的所有内容。

例如,在我的工作流程中,我使用:

- run: echo ::set-env name=TF_VAR_instance_label::${GITHUB_REPOSITORY#*/}-${GITHUB_SHA:0:7}