我正在尝试在.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/