Gitlab Docker构建:在.gitlab-ci.yml中调用shell命令

时间:2019-05-20 20:14:32

标签: shell docker environment-variables gitlab

我正在尝试在.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在工作,但是我自己不能使用它。

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

2 个答案:

答案 0 :(得分:1)

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

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

apk add --no-cache git

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

答案 1 :(得分:0)

documentation of GitLab中的

,这是CI_COMMIT_TAG的定义:

CI_COMMIT_TAG-提交标记名称。仅在构建标签时显示

表示-当您将提交推送到GitLab时,它将启动没有CI_COMMIT_TAG变量的管道。当您在该提交上创建标签并将该标签推入GitLab时,将启动另一个管道(这次是标签,而不是提交)。在这种情况下,将出现CI_COMMIT_TAG

@xpt-感谢投票的信任,并要求将其写下来作为答案,希望这对社区有所帮助!