我开始学习 github actions(从 jenkins piplines 转换)。我对 yaml 不是很熟悉。
我无法弄清楚何时或为何应使用双花括号与单花括号引用变量。我感觉这里有一个重要的区别......你能告诉我吗?
name: sample
on:
workflow_dispatch
env:
MY_VAR: "something"
jobs:
do_things:
runs-on: ubuntu-latest
steps:
- name: "Step 1"
run: echo "${MY_VAR}"
- name: "Step 2"
run: echo "${{env.MY_VAR}}"
Run Code Online (Sandbox Code Playgroud)
Edw*_*son 28
这行:
run: echo "${MY_VAR}"
Run Code Online (Sandbox Code Playgroud)
实际上是在运行一个 bash 脚本,上面写着:
echo "${MY_VAR}"
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,${MY_VAR}根据 bash 的规则进行扩展;在这种情况下,它只会打印环境变量MY_VAR,但是您可以使用bash 的参数扩展来做各种疯狂的事情。
另一方面,这一行:
run: echo "${{env.MY_VAR}}"
Run Code Online (Sandbox Code Playgroud)
是GitHub Actions 的表达式语法,将由 GitHub Actions 运行器扩展。MY_VAR在这种情况下,环境上下文中的变量将在 shell 脚本中被替换。
将执行的文字 shell 脚本中将包含环境变量值。因此,如果MY_VAR=foo,那么将运行的 bash 脚本是:
echo "foo"
Run Code Online (Sandbox Code Playgroud)
因此,尽管最终的结果相似,但根据替换发生的时间,实现这一目标的方法却截然不同。
| 归档时间: |
|
| 查看次数: |
6556 次 |
| 最近记录: |