GitHub 操作如果包含不适用于 env.VARIABLE 的函数

Gom*_*ius 5 github-actions

我已经使用以下方法设置了一个环境变量:

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

Nic*_*ste 8

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)


Sam*_*ira 6

您不需要${{}}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)