【问题标题】:How to create an array variable used as script argument in Gitlab CI yaml file?如何在 Gitlab CI yaml 文件中创建用作脚本参数的数组变量?
【发布时间】:2019-09-27 22:21:09
【问题描述】:

我试图弄清楚如何声明一个数组变量并将其用作传递给 shell 脚本的参数。或者通过学习如何变得更加干爽

这是我尝试过的导致/bin/sh: eval: line X: syntax error: bad substitution

variables:
  EXTRA_ARGS: (. "${CI_COMMIT_SHORT_SHA} pipeline-${CI_PIPELINE_ID} latest" "pipeline-${CI_PIPELINE_ID}" $CI_COMMIT_REF_NAME $CI_COMMIT_REF_SLUG)

build:
  stage: build
  script:
    - path/to/script.sh uniqueParam1 uniqueParam2 ${EXTRA_ARGS[@]}
    - path/to/script.sh uniqueParam3 uniqueParam4 ${EXTRA_ARGS[@]}
    - path/to/script.sh uniqueParam5 uniqueParam6 ${EXTRA_ARGS[@]}

以下运行良好,但正如您所知,我重复了额外的参数:

build:
  stage: build
  script:
    - path/to/script.sh uniqueParam1 uniqueParam2 . "${CI_COMMIT_SHORT_SHA} pipeline-${CI_PIPELINE_ID} latest" "pipeline-${CI_PIPELINE_ID}" $CI_COMMIT_REF_NAME $CI_COMMIT_REF_SLUG
    - path/to/script.sh uniqueParam3 uniqueParam4 . "${CI_COMMIT_SHORT_SHA} pipeline-${CI_PIPELINE_ID} latest" "pipeline-${CI_PIPELINE_ID}" $CI_COMMIT_REF_NAME $CI_COMMIT_REF_SLUG
    - path/to/script.sh uniqueParam5 uniqueParam6 . "${CI_COMMIT_SHORT_SHA} pipeline-${CI_PIPELINE_ID} latest" "pipeline-${CI_PIPELINE_ID}" $CI_COMMIT_REF_NAME $CI_COMMIT_REF_SLUG

我也尝试删除 . 点作为参数,但错误仍然存​​在。

出于我的考虑,我尝试在 bash 中运行该概念,并成功运行如下:

#!/bin/bash

TEST1="Hello"
TEST2="human!"

ARGS=(. $TEST1 $TEST2 "${TEST2} ${TEST1}" "param1" "param2")

echo "${ARGS[*]}"

输出:

. Hello human! human! Hello param1 param2

还尝试将其放入脚本中:

script:
  - EXTRA_ARGS=(. "${CI_COMMIT_SHORT_SHA} pipeline-${CI_PIPELINE_ID} latest" "pipeline-${CI_PIPELINE_ID}" $CI_COMMIT_REF_NAME $CI_COMMIT_REF_SLUG)

而且也不行:

/bin/sh: eval: line 92: syntax error: unexpected "("

也试图逃跑\(,但没有成功。

【问题讨论】:

  • /bin/sh (很可能)不是 bash。您在 gitlab 中的 docker 没有运行 bash。
  • 你是绝对正确的@KamilCuk 我会看看我是否可以将跑步者更改为 bash,因为我认为 unix shell 不支持数组

标签: shell gitlab-ci


【解决方案1】:

正如第一条评论所指出的,该问题与基于 Alpine 的 Docker 映像有关,该映像默认具有 bourne shell 而不是 bash。

https://gitlab.com/gitlab-org/gitlab-runner/issues/1758

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2022-06-23
    • 2021-09-07
    • 2018-03-13
    • 1970-01-01
    相关资源
    最近更新 更多