Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gitlab在作为运行helm命令时出现问题-错误:未知命令“;上海";至于;“掌舵”;_Gitlab_Gitlab Ci - Fatal编程技术网

Gitlab在作为运行helm命令时出现问题-错误:未知命令“;上海";至于;“掌舵”;

Gitlab在作为运行helm命令时出现问题-错误:未知命令“;上海";至于;“掌舵”;,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我有一个packge脚本,需要在alpina:helmimage上运行。我以前使用过这个命令,但由于某种原因,它总是给我一个错误-error:unknown命令“sh”代表“helm” 包: 如中所述,gitlab中的runner是这样启动的 运行程序启动image中指定的docker容器,并使用该容器的入口点 流道连接到容器上 运行程序将前脚本、脚本和后脚本组合为一个脚本 运行程序将组合脚本发送到容器的shell 如果查看图像的入口点,您会看到入口点是helm,当容器启动时,它运行helm

我有一个packge脚本,需要在
alpina:helm
image上运行。我以前使用过这个命令,但由于某种原因,它总是给我一个错误-
error:unknown命令“sh”代表“helm”

包:
如中所述,gitlab中的runner是这样启动的

  • 运行程序启动
    image
    中指定的docker容器,并使用该容器的入口点
  • 流道连接到容器上
  • 运行程序将
    前脚本
    脚本
    后脚本
    组合为一个脚本
  • 运行程序将组合脚本发送到容器的shell
如果查看图像的入口点,您会看到入口点是
helm
,当容器启动时,它运行helm。gitlab运行程序不需要入口点,或者入口点被设置为启动shell,因此您会得到
错误:“helm”的未知命令“sh”
,因为没有正在运行的shell

通过重写入口点,我们确保运行程序在容器中找到可以执行脚本的shell

package:
  stage: package
  image: 
    name: alpine/helm
    entrypoint: [""] 
  variables:
    GIT_STRATEGY: none
  script:
    - echo $VERSION
    - helm package ./keycloak --app-version=$VERSION
  artifacts:
    paths: 
    - "*.tgz"
编辑:
通过再次阅读文档,我将docker 17.06及更高版本的入口点更改为空入口点(
entrypoint:[“”]
),因为这更简洁。

请!特别是,您能否仅使用Docker图像在GitLab外部复制此内容?另外,它使用的是哪一个精确版本的Docker图像,您使用的是哪一个?不指定版本(或者至少是2.*之类的约束)会带来麻烦,因为它会立即跳转到新版本,即使它们破坏了向后兼容性。@UlrichEckhardt我相信这就是我所说的gitlab步骤。所以在Gitlab之外没有什么可以测试的。此特定问题仅适用于gitlab步骤。无论如何,我提到了它的阿尔卑斯山/头盔,我打算它只是最新版本。我的图表是最新版本2只。所以我没有限制,GitLab使用Docker来运行这些阶段。所以,当然,你可以在GitLab之外复制这个。问题是,这是由GitLab使用Docker的方式造成的,还是它在内部做的事情造成的。首先,尝试
docker run--rm alpine/helm…
来执行您期望GitLab运行的操作。这很有效,但是您能解释这里发生了什么吗?@danelnelz完美的答案。非常感谢。
package:
  stage: package
  image: 
    name: alpine/helm
    entrypoint: [""] 
  variables:
    GIT_STRATEGY: none
  script:
    - echo $VERSION
    - helm package ./keycloak --app-version=$VERSION
  artifacts:
    paths: 
    - "*.tgz"