我正在尝试在.gitlab-ci.yml中调用shell命令,其相关部分是:

image: docker:latest
services:
  - docker:dind

stages:
  - build
  - deploy

...

build:
  stage: build
  script:
    - apt-get update -y
    - GIT_TAG=$(git tag | tail -1)
    - GIT_TAG=$(/usr/bin/git tag | tail -1)
    - docker ...

但是,所有前三个Shell命令调用均失败,均带有“command not found”错误。 git命令失败确实很奇怪,因为它必须在启动script部分之前首先获取git repo。即,我可以看到git正在运行,但我自己不能使用它。

有什么办法可以使其正常工作?

最佳答案

您会看到git在单独的步骤中工作,因为GitLab可能正在另一个容器中进行操作。它们使您的容器保持清洁,因此您必须自己安装依赖项。

由于您使用的镜像基于Alpine Linux,因此安装git的命令为:

apk add --no-cache git

如果您只需要git信息,也可以跳过整个过程并使用predefined environment variables$CI_COMMIT_TAG将包含标签,而$CI_COMMIT_SHA将包含提交哈希。

关于shell - Gitlab Docker构建:在.gitlab-ci.yml中调用shell命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56227593/

10-14 14:11
查看更多