我想在env:GitHub Action的部分设置一个环境变量,并使用GitHub Actions的上下文和表达式语法。我试过这个:
jobs:
build:
runs-on: ubuntu-latest
env:
MYVAR: ${{ format('{0}:{1}', ${{ env.PATH }}, ${{ env.HOME }} ) }}
steps:
- name: Check environment
run: echo $MYVAR
Run Code Online (Sandbox Code Playgroud)
这会导致错误消息:
### ERRORED 10:45:52Z
- Your workflow file was invalid: The pipeline is not valid. .github/workflows/main.yml (Line: 10, Col: 14): Unexpected symbol: '${{'. Located at position 19 within expression: format('{0}:{1}', ${{ env.PATH
Run Code Online (Sandbox Code Playgroud)
此语法:
env:
MYVAR: ${{ format('{0}:{1}', {{ env.PATH }}, {{ env.HOME }} ) }}
Run Code Online (Sandbox Code Playgroud)
导致错误:
### ERRORED 13:14:18Z
- Your workflow file was invalid: The pipeline is not valid. .github/workflows/main.yml (Line: 10, Col: 14): Unexpected symbol: '{{'. Located at position 19 within expression: format('{0}:{1}', {{ env.PATH
Run Code Online (Sandbox Code Playgroud)
和:
env:
MYVAR: ${{ format('{0}:{1}', env.PATH, env.HOME ) }}
Run Code Online (Sandbox Code Playgroud)
导致错误:
### ERRORED 13:16:12Z
- Your workflow file was invalid: The pipeline is not valid. .github/workflows/main.yml (Line: 10, Col: 14): Unrecognized named-value: 'env'. Located at position 19 within expression: format('{0}:{1}', env.PATH, env.HOME )
Run Code Online (Sandbox Code Playgroud)
我知道如何在 GitHub Actions 中使用 bash 表达式设置 env var中的解决方案?和Github Actions,如何在作业步骤之间共享计算值?用于设置环境变量,但我想了解表达式语法。
在工作流程开始时,env上下文还不存在。这就是您收到错误的原因。此外,每个作业的第一步都会看到一个空env上下文,因此即使env存在,打印的结果MYVAR也只是:。
我通过一些实验得出了上述结论。
env:
MYVAR: ${{ format('{0}:{1}', env.PATH, env.HOME) }}
Run Code Online (Sandbox Code Playgroud)
您使用的最后一个语法是正确的形式,但由于env上下文尚不存在,因此工作流无法运行。
为了向自己证明env第一步上下文实际上是空的,请尝试以下工作:
jobs
env-dump-context:
runs-on: ubuntu-latest
steps:
- run: echo env is: ${{ toJSON(env) }}
Run Code Online (Sandbox Code Playgroud)
话虽这么说,仍然可以满足您的需求:
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: printf "MYVAR=${PATH}:${HOME}" | tee --append "$GITHUB_ENV"
- name: Check environment
run: echo ${{env.MYVAR}}
Run Code Online (Sandbox Code Playgroud)
正如 @jonrsharpe 指出的,不可能env在工作流环境变量的值中使用上下文。这是在这里讨论的:
https://github.community/t5/GitHub-Actions/How-to-use-env-context/td-p/38951
| 归档时间: |
|
| 查看次数: |
4088 次 |
| 最近记录: |