Github Actions 中的布尔环境变量

6

我有一个布尔类型的环境变量TAG_EVENT,并且在其中一个步骤中将其更新为false(我也打印出来,看到它是false),但由于某些原因,最后一步没有执行,尽管TAG_EVENT是false。希望能够得到帮助。

on:
 workflow_dispatch:

 env:
 TAG_EVENT: ${{ true }}

 jobs:
   push_images:
   name: Push images
   runs-on: ubuntu-latest
   if: ${{ github.event_name != 'pull_request' }}
   steps:
   - id: version
     name: Infer version
     run: |
        version="${GITHUB_REF#refs/tags/v}"
        echo $version
        if  [[ $version == refs/* ]] ;
         then
           echo 'TAG_EVENT=false' >> $GITHUB_ENV
           branch="${GITHUB_REF#refs/heads/}"
           version=$branch

       fi
       echo ::set-output name=version::$version
   - name: Publish latest image tag for release
     if: github.event_name != 'pull_request' && TAG_EVENT == false
     run: |
       echo "printme!!!"
5个回答

4

当您使用像bash这样的基于文本的shell时,您将不得不处理字符串。因此,您无法检查false,但需要检查'false'。但我建议使用GitHub内置的toJSONfromJSON函数来编组布尔值:

...
steps:
  - name: I produce a boolean output
    id: output_producer
    shell: bash
    run: |
      if [[ $RANDOM > 100 ]]; then i=true; else i=false; fi
      echo "::set-output name=boolean_output::${{ toJSON($i) }}"
      echo "::set-output name=integer_output::${{ toJSON($i) }}"
  - name: I run conditionally on that boolean
    if: fromJSON(steps.output_producer.outputs.boolean_output) 
    shell: bash
    run: |
      echo "Ran successfully!"
  - name: I run always
    if: always()
    shell: bash
    run: |
      echo ${{ fromJSON(steps.output_producer.outputs.integer_output) }}

2

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

1
尝试在第二个if语句中使用${{ env.TAG_EVENT == false }}

1

0
感谢@zswqa的回答,这对我很有帮助。
env:    
  RUN_TESTS: ${{ true }}

然后逐步进行
- name: Gradle Test
  if: ${{ env.RUN_TESTS == 'true' }}
  run: gradle test

如果我将RUN_TESTS设置为false,那么测试步骤不会运行。

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