我已经使用以下方法设置了一个环境变量:
echo "::set-env name=PROJECT_TO_TEST::$(sh scripts/test.sh)"
Run Code Online (Sandbox Code Playgroud)
test.sh 只是回应“SomeString, MoreString”
我确实看到通过执行以下操作正确设置了 PROJECT_TO_TEST 变量:
echo "env.PROJECT_TO_TEST = ${{ env.PROJECT_TO_TEST }}"
Run Code Online (Sandbox Code Playgroud)
输出“env.PROJECT_TO_TEST = SomeString, MoreString”
在接下来的一个步骤中,我正在执行 if 检查以查看 PROJECT_TO_TEST 变量包含一些像这样的字符串:
- name: Conditionally Run
if: contains('${{ env.PROJECT_TO_TEST }}', 'SomeString')
run: |
echo "SomeString did exist and should run"
- name: Conditionally Run
if: contains('${{ env.PROJECT_TO_TEST }}', 'ShouldNotRun')
run: |
echo "ShouldNotRun"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,应该只打印“SomeString 确实存在并且应该运行”,但也会打印“ShouldNotRun”。
完整代码在这里:https : //github.com/gomfucius/github-actions/blob/master/.github/workflows/pullrequest.yml
说明问题的工作流程:https : //github.com/gomfucius/github-actions/runs/590320131
Github 已弃用使用“set-env”。
该
set-env命令被禁用。ACTIONS_ALLOW_UNSECURE_COMMANDS请升级到使用环境文件或通过将环境变量设置为 来选择不安全的命令执行true。有关更多信息,请参阅:https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
您应该使用以下语法:
- name: set env variable
run: |
echo "PROJECT_TO_TEST=$(sh scripts/test.sh)" >> $GITHUB_ENV
# Then you can use it in your if statement like so
- name: Conditionally Run
if: contains(env.PROJECT_TO_TEST, 'SomeString')
run: |
echo "let's run"
Run Code Online (Sandbox Code Playgroud)
您不需要${{}}inside if,因为它可以env直接访问上下文。
- run: echo PROJECT_TO_TEST=SomeString,MoreString >> $GITHUB_ENV
- name: Conditionally Run
if: contains(env.PROJECT_TO_TEST, 'SomeString')
run: echo "SomeString did exist and should run"
- name: Conditionally Run
if: contains(env.PROJECT_TO_TEST, 'ShouldNotRun')
run: echo "ShouldNotRun"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |