Gitlab-CI 多行脚本和多脚本的区别

Mos*_*she 3 continuous-deployment gitlab gitlab-ci kubernetes kubernetes-helm

GitLab-CI 的新手,我正在尝试通过 Helm 在 Kubernetes 集群上进行部署。我有这个:

image: docker:stable

deploy:
  stage: deploy
  image:
    name: alpine/helm:3.4.1
  script:
    - echo "Deploying to production"
    - helm list --all-namespaces
Run Code Online (Sandbox Code Playgroud)

它失败了:

Error: unknown command "sh" for "helm"
Run Code Online (Sandbox Code Playgroud)

并且echo没有回显,但是,如果我要删除该echo行,则helmcmd 将成功执行。

我想我在问如何使多行脚本运行?gitlab-runner 如何执行script:数组中提供的一系列命令?

Mat*_*att 6

script数组中的每个条目都在一个shshell 中运行。

sh -x 'echo "Deploying to production"'
Run Code Online (Sandbox Code Playgroud)

alpine/helm您正在使用的图像包含一个入口点,helm 这意味着shgitlab 尝试运行的命令正在作为参数附加到入口点(例如helm sh -x 'echo "Deploying to production"'

覆盖入口点

deploy:
  stage: deploy
  image:
    name: alpine/helm:3.4.1
  entrypoint: [""]
  script:
    - echo "Deploying to production"
Run Code Online (Sandbox Code Playgroud)