运行 helm 命令时出现 Gitlab 问题 - 错误 : unknown command "sh" for "helm"

标签 gitlab gitlab-ci

我有一个需要在 alpina:helm 上运行的包脚本图片 。我以前用过这个,但由于某种原因,这总是给我错误 - Error: unknown command "sh" for "helm"

package:
  <<: *artifacts
  stage: package
  image: alpine/helm
  variables:
    GIT_STRATEGY: none
  script:
    - echo $VERSION
    - helm package ./keycloak --app-version=$VERSION
  artifacts:
    paths: 
    - "*.tgz"
谁能告诉我这里有什么问题我不太确定。 Helm 命令应该按照我的假设运行,但不确定为什么不是。

最佳答案

docs 中所述,gitlab中的runner是这样启动的

  • runner 启动 image 中指定的 docker 容器并使用此容器的入口点
  • 运行者将自己附着在容器上
  • 亚军组合before_script , scriptafter_script成单个脚本
  • 运行器将组合脚本发送到容器的外壳

  • 如果你看一下 alpine/helm 的入口点图像,你看到入口点是 helm当容器启动时,它运行 helm。 gitlab 运行程序不需要入口点,或者入口点设置为启动 shell,因此您会得到 Error: unknown command "sh" for "helm"因为没有正在运行的 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: [""] )的空入口点,因为这更简洁。

    关于运行 helm 命令时出现 Gitlab 问题 - 错误 : unknown command "sh" for "helm",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67289837/

    相关文章:

    Docker GitLab 管道返回 "-t, --tag"标志 : invalid reference format 的无效参数

    github - 在推送时自动将 Gitlab 存储库镜像到 Github

    git - 'git push origin MyBranchName' 抛出错误 "HTTP Basic: Access denied"

    python - 在 GitLab CI YML 文件中使用 pywin32 - 在 pip 安装时出错

    docker - 使用 Docker Centos 7.5 镜像运行 GitLab CI 管道时,ChromeHeadless 超时

    docker - 从gitlab ci使用docker发布镜像

    gitlab - 使用Vue在Gitlab中配置gitlab-ci.yml文件

    git - 将现有的本地 Git Master Repo 导入 Gitlab : Git user Access Issues

    git - Gitlab 中的分支没有 merge 请求按钮

    git - repo upload without review(repo推送功能)