【问题标题】:Is there a way to get the project folder name only on a Github action?有没有办法仅在 Github 操作上获取项目文件夹名称?
【发布时间】:2020-02-16 11:01:37
【问题描述】:

我可以通过${{ 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-actions


    【解决方案1】:

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

    在您熟悉它们之前,创建测试工作流/作业以打印所有上下文数据可能是个好主意,请参阅Example printing context information to the log file


    至于替换文本,您始终可以使用::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 吗? b4 所有工作都开始了吗?可能不是,所以我必须为每项工作重做? ::set-env 很高兴知道。
    • @redanimalwar 如果 N 个作业需要相同的环境调整,您可以将其全部保存在脚本文件中。只需添加- run: ./setup-env.sh(将调用echo ::set-env)作为每个作业的第一步 - 稍后,在 .sh 中完成的任何环境调整都会影响整个工作流程。
    • Gitlab 有一个简单的$CI_COMMIT_SLUG 类似的东西。不知道他们是怎么得到的,也许我可以从 git 本身得到一些东西。我喜欢的是标签构建时的标签和分支时的分支,而不是丑陋的提交哈希,什么都不说。当我什至不知道它是否总是在那里时,不得不深入挖掘那个物体似乎很烦人。我想我会使用github.repository,但用- 替换/,因为这对文件名不好。我现在可能实际上只需要它在一份工作中。
    • ${{ github.event.repository.name }} 对我不起作用,至少在env 下不起作用;这是空字符串/未定义。 ${{ github.repository_owner }} 虽然有效(但当然不能解决问题)。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 2013-01-08
      • 2021-09-29
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多