检查环境变量是否为空

问题描述 投票:0回答:1

检查 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     

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

github-actions
1个回答
20
投票

检查环境变量

如果按照为环境创建配置变量中所述添加了环境变量,则可以使用

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'"

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

result-for-unset-variable

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

result-for-set-variable

检查秘密

背景:GitHub 人员知道分叉无法获取秘密的问题,但没有宣布具体活动:https://github.community/t/github-workflow-not-running-from-pull-request-from-分叉存储库/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

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

© www.soinside.com 2019 - 2024. All rights reserved.