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

red*_*war 21 github github-actions

我可以得到reowner/repo-name${{ github.repository }}但我喜欢只得到repo-name.

当我在做的时候。

Gitlab 有一些我可以用的东西

如何从.yaml非内部脚本获取引用访问环境变量?不${{ $ENV_VAR }}工作?可能不是。

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

  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:
Run Code Online (Sandbox Code Playgroud)

Sam*_*ira 24

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

创建测试工作流/作业以打印所有上下文数据可能是一个好主意,直​​到您熟悉它们为止,请参阅示例将上下文信息打印到日志文件


至于替换文本,您始终可以使用::set-env::set-output第一步用于准备您以后需要的所有内容。您只需要以特定格式打印名称/值,这样您就可以在执行此操作时使用您熟悉的任何 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 $3}')
  shell: bash
Run Code Online (Sandbox Code Playgroud)

  • `${{ github.event.repository.name }}` 对我不起作用,至少在 `env` 下不起作用;这是空字符串/未定义。`${{ github.repository_owner }}` 虽然有效(但当然没有解决问题)。 (2认同)

小智 24

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

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

- run: echo ::set-env name=TF_VAR_instance_label::${GITHUB_REPOSITORY#*/}-${GITHUB_SHA:0:7}
Run Code Online (Sandbox Code Playgroud)

  • 新的 bash shell 用户可以在 [Bash 参考手册 § 3.5.3 Shell 参数扩展](https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-扩张)。 (2认同)