检查 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 是否为空。
如果按照为环境创建配置变量中所述添加了环境变量,则可以使用
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'"
如果变量未定义,输出如下:
如果定义了变量,则输出如下:
背景: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.