Jef*_*ran 1 gitlab font-awesome gitlab-ci
我正在使用 Gitlab 设置 CI,它运行良好,但我需要在脚本命令中使用变量,但我不确定如何做到这一点。我在想这样的事情
script:
- npm config set "//npm.fontawesome.com/:_authToken" $FONT_AWESOME_KEY
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些其他的路线,但我似乎无法在我想要运行的命令中获取要填充的变量值。
你能分享你的变量来自哪里吗?
您可以通过多种方式将变量放入 CI 脚本中:
variables在 CI 文件的一个部分中声明变量。这允许您创建全局变量,可用于管道中的所有作业。
stages:
- build
variables:
GLOBAL_VARIABLE_1: some value
my job:
stage: build
script:
- echo $GLOBAL_VARIABLE_1
Run Code Online (Sandbox Code Playgroud)
这可以在脚本中用作环境变量$GLOBAL_VARIABLE_1。
与上面类似,但以工作为范围。
stages:
- build
my job:
stage: build
variables:
JOB_VARIABLE_1: some value
script:
- echo $JOB_VARIABLE_1
Run Code Online (Sandbox Code Playgroud)
您还可以直接在脚本部分创建变量。这对某些人来说可能很明显,但值得一提的是:
stages:
- build
my job:
stage: build
script:
- export SCRIPT_VARIABLE_1="some value"
- echo $SCRIPT_VARIABLE_1
Run Code Online (Sandbox Code Playgroud)
您可以在 GitLab UI的项目设置> CI/CD部分定义变量。向下滚动到秘密变量部分,您将能够定义“键”(变量名称)和“值”(变量值)。这些变量将在 CI 作业中可用。
如果您选中受保护的框,则不会在非受保护分支上运行的管道中定义该变量。受保护的变量通常用于敏感的 API 密钥之类的东西(您不希望它们在 CI 文件中对所有人可见),并且您可能需要偶尔更改它们
包括完整性
这不是本机支持的,但可以使用工件来实现。请注意,由于同一阶段中的作业可以并行运行,因此仅将变量从一个阶段的作业传递到下游阶段的作业才有意义。
stages:
- build
- test
build job:
stage: build
script:
- export BUILD_JOB_VAR=123
- echo "$BUILD_JOB_VAR" > build_job_var.txt
artifacts:
paths:
- build_job_var.txt
expire_in: 2 days
test_job:
stage: test
script:
- export BUILD_JOB_VAR="$(cat build_job_var.txt)"
- echo $BUILD_JOB_VAR
Run Code Online (Sandbox Code Playgroud)
当您在脚本中使用变量时,GitLab 不会在运行时显示已解析的命令(您只会看到原始命令)。为了帮助调试,它可以帮助在命令运行之前回显命令,以便您可以看到完全解析的命令。在您的示例中,您可以尝试回显npm命令(请注意,您可能需要引用命令,并转义引号以回显确切的命令):
script:
- echo "npm config set \"//npm.fontawesome.com/:_authToken\" $FONT_AWESOME_KEY"
- npm config set "//npm.fontawesome.com/:_authToken" $FONT_AWESOME_KEY
Run Code Online (Sandbox Code Playgroud)
您可能会发现变量被正确填充。
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |