检查环境变量是否为空

use*_*404 17 github-actions

检查 Github 操作上的环境变量是否为空作为步骤条件的最好方法是什么?我尝试过这种简单的方法,但似乎不起作用。

例如:

name: SimpleWorkflow

on:
  push:   

env:
  MULTI_LINE_ARG: |
  ARG1: value
jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - name: Fetching Local Repository
        uses: actions/checkout@master
      - name: run step if multiline not null
        if: ${{env.MULTI_LINE_ARG}} != ""
        run: echo multiline not null     
Run Code Online (Sandbox Code Playgroud)

无论我如何尝试,我都无法正确检查 env 是否为空。

kop*_*por 14

检查环境变量

如果按照为环境创建配置变量中所述添加了环境变量,则可以用于if: ${{ env:VAR_NAME == '' }}检查。

以下示例提供了环境变量的示例工作流程TEXT

on:
  workflow_dispatch:
  push:
env:
  env_text: ${{ vars.TEXT }}
jobs:
  greeting_job:
    runs-on: ubuntu-latest
    steps:
      - if: ${{ env.env_text == '' }}
        run: |
          echo "Empty text"
      - if: ${{ env.env_text != '' }}
        run: |
          echo "Text: '$env_text'"
Run Code Online (Sandbox Code Playgroud)

如果变量未定义,则输出如下:

未设置变量的结果

如果定义了变量,则输出如下:

集变量的结果

检查秘密

背景:GitHub 人员知道分叉无法获取秘密的问题,但没有宣布具体活动:https ://github.community/t/github-workflow-not-running-from-pull-request-from-forked-存储库/16379/41?u=koppor

人们可以使用步骤的输出变量来确定秘密是否可用。

GitHub 中秘密的名称是SECRET

      - name: Check secrets presence
        id: checksecrets
        shell: bash
        run: |
          if [ "$SECRET" == "" ]; then
            echo "secretspresent=NO" >> $GITHUB_OUTPUT
          else
            echo "secretspresent=YES" >> $GITHUB_OUTPUT
          fi
        env:
          SECRET: ${{ secrets.SECRET}}
      - name: run step if secret is present
        if: (steps.checksecrets.outputs.secretspresent == 'YES')
        run: echo secret is present
Run Code Online (Sandbox Code Playgroud)

注意:解决方案改编自https://github.community/t/if-express-with-context-variable/16558/6?u=koppor