如何在条件 Github 操作中检查秘密变量是否为空
How to check if a secret variable is empty in if conditional Github Actions
上下文
我想在执行作业之前检查我的工作流程是否存在秘密。
像这样:
publish:
runs-on: ubuntu-latest
if: secrets.AWS_ACCESS_KEY_ID != ''
steps:
[ ... ]
但是,我在使用这个表达式时遇到了这样的错误:
The workflow is not valid. .github/workflows/release.yml (Line: 11, Col: 9): Unrecognized named-value: 'secrets'...
我试过的
我试着用另一种方式写表达式:
if: ${{ secrets.AWS_ACCESS_KEY_ID != '' }}
if: ${{ secrets.AWS_ACCESS_KEY_ID }} != ''
问题
如何在 Github 操作工作流中实现我想要的?
Github 动作解释器当前无法识别在 if
条件表达式中使用的 secrets
关键字。因此,您不能在那里使用 secrets.VARIABLE
语法。
从 this issue discussion 中找到的解决方法是 首先将机密复制到环境变量。
示例:
steps:
env:
MY_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
if: "${{ env.MY_KEY != '' }}"
run: echo "This command is executed if AWS_ACCESS_KEY_ID secret IS NOT empty"
如果您需要在作业级别执行此操作,则需要创建一个 check-secret
作业来验证机密,然后将结果作为输出共享。
示例:
check-secret:
runs-on: ubuntu-latest
outputs:
my-key: ${{ steps.my-key.outputs.defined }}
steps:
- id: my-key
if: "${{ env.MY_KEY != '' }}"
run: echo "::set-output name=defined::true"
env:
MY_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
job1:
runs-on: ubuntu-latest
needs: [check-secret]
if: needs.check-secret.outputs.my-key == 'true'
steps:
- run: echo "This command is executed if AWS_ACCESS_KEY_ID secret IS NOT empty"
job2:
runs-on: ubuntu-latest
needs: [check-secret]
if: needs.check-secret.outputs.my-key != 'true'
steps:
- run: echo "This command is executed if AWS_ACCESS_KEY_ID secret IS empty"
上下文
我想在执行作业之前检查我的工作流程是否存在秘密。
像这样:
publish:
runs-on: ubuntu-latest
if: secrets.AWS_ACCESS_KEY_ID != ''
steps:
[ ... ]
但是,我在使用这个表达式时遇到了这样的错误:
The workflow is not valid. .github/workflows/release.yml (Line: 11, Col: 9): Unrecognized named-value: 'secrets'...
我试过的
我试着用另一种方式写表达式:
if: ${{ secrets.AWS_ACCESS_KEY_ID != '' }}
if: ${{ secrets.AWS_ACCESS_KEY_ID }} != ''
问题
如何在 Github 操作工作流中实现我想要的?
Github 动作解释器当前无法识别在 if
条件表达式中使用的 secrets
关键字。因此,您不能在那里使用 secrets.VARIABLE
语法。
从 this issue discussion 中找到的解决方法是 首先将机密复制到环境变量。
示例:
steps:
env:
MY_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
if: "${{ env.MY_KEY != '' }}"
run: echo "This command is executed if AWS_ACCESS_KEY_ID secret IS NOT empty"
如果您需要在作业级别执行此操作,则需要创建一个 check-secret
作业来验证机密,然后将结果作为输出共享。
示例:
check-secret:
runs-on: ubuntu-latest
outputs:
my-key: ${{ steps.my-key.outputs.defined }}
steps:
- id: my-key
if: "${{ env.MY_KEY != '' }}"
run: echo "::set-output name=defined::true"
env:
MY_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
job1:
runs-on: ubuntu-latest
needs: [check-secret]
if: needs.check-secret.outputs.my-key == 'true'
steps:
- run: echo "This command is executed if AWS_ACCESS_KEY_ID secret IS NOT empty"
job2:
runs-on: ubuntu-latest
needs: [check-secret]
if: needs.check-secret.outputs.my-key != 'true'
steps:
- run: echo "This command is executed if AWS_ACCESS_KEY_ID secret IS empty"