GitHub Actions表达式函数:字符串操作?

14
在 GitHub Actions 工作流程定义文件中,有一组内置函数可以在表达式中使用
例如:${{ toJson(github) }} 是否有任何可用于表达式中的字符串操作函数,例如toLowerCase
文档页面没有提到任何内容。但是,我想知道 Github 是否在幕后使用某种标准模板/表达式评估库,该库提供了更多开箱即用的函数集合。

1
我有完全相同的问题,你在其他地方得到了答案吗? - Rémy
1
不,很遗憾。我通常会用Bash脚本来解决这个问题。 - Max
4个回答

9

不可能。 GitHub表达式 不允许对字符串进行修改,只能进行连接。

你可以在构建作业中使用自定义步骤来实现几乎相同的功能,但这意味着你将无法在任何地方使用该变量(例如,“processed”环境名称是不可能的)。

env:
  UPPERCASE_VAR: "HELLO"
steps:
  - id: toLowerCase
    run: INPUT=${{ env.UPPERCASE_VAR }} echo "::set-output name=lowerCaseValue::${INPUT,,}"

  - run: echo ${{steps.toLowerCase.outputs.lowerCaseValue}}

1
toUpperCase怎么样? - Leon
为什么我执行echo命令时会输出空白? - Josep Enric Sendra Serra
很遗憾,输出为空白。 - Daniel Krzyczkowski

3

我想替换git版本字符串中的一些字符,可以按照以下步骤进行:

  - name: prepare version string
    id: prep_version
    run: |
      export test_version=$(echo ${{ steps.tag_version.outputs.new_version }} |  sed 's/[^0-9,a-z,A-Z]/\-/g')
      echo ::set-output name=version::$test_version

这对我来说非常有效...所以实际上我们有任何可以在命令行上输入的东西。


2

我通常会先设置所有在整个工作流程中要使用的全局变量。

jobs:
  variables: 
    outputs:
      tag_name: ${{ steps.var.outputs.tag_name}}
    runs-on: "ubuntu-latest"
    steps:
      - name: Setting global variables
        uses: actions/github-script@v6
        id: var
        with:
          script: |
            core.setOutput('tag_name', '${{ github.head_ref }}'.toLowerCase().replaceAll(/[/.]/g, '-').trim('-'));

使用方法:

  deploy:
    needs: [build, variables]
    runs-on: [ self-hosted, preview ]
    env:
      TAG_NAME: ${{ needs.variables.outputs.tag_name }}
    step:
      -name: Echo variables 
       run: |
         echo ${{ needs.variables.outputs.tag_name }}
         echo ${{ env.TAG_NAME}}

2

在遇到最受欢迎的答案存在问题后,我发现它无法正常工作(显示空字符串),因为它只能在上下文中使用。这是我找到的解决方案:

steps:
  - id: toLowerCase
    run: echo "::set-output name=lowerCaseValue::${UPPERCASE_VAR,,}"
    env:
      UPPERCASE_VAR: ${{ env.UPPERCASE_VAR }}

 - run: echo ${{steps.toLowerCase.outputs.lowerCaseValue}}

这里,我们将 UPPERCASE_VAR 环境变量定义为 toLowerCase 步骤的输入变量。然后,在运行命令中,我们使用 ${UPPERCASE_VAR,,} 语法将变量的值转换为小写,并将其分配给 lowerCaseValue 输出变量。最后,我们在步骤内定义 UPPERCASE_VAR 环境变量,以便在 shell 命令中可用。

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