Сборка Gitlab Docker: вызов команды оболочки в .gitlab-ci.yml - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь вызвать команду оболочки в .gitlab-ci.yml , чьи соответствующие части:

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 ...

Однако все первые три вызова команд оболочки завершились неудачно, все с ошибкой «команда not found». Сбой команды git действительно странный, потому что он должен получить git-репо перед началом секции script. То есть, я вижу, что git работает, но я просто не могу его использовать сам.

Есть ли способ заставить его работать?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Вы видите git, работающий в отдельных шагах, потому что GitLab, вероятно, делает это в другом контейнере. Они поддерживают ваш контейнер в чистоте, поэтому вы должны сами устанавливать зависимости.

Поскольку используемый вами образ основан на Alpine Linux, команда для установки git имеет вид:

apk add --no-cache git

Вы также можете пропустить все это и использовать предопределенные переменные окружения , если все, что вам нужно, это информация git. $CI_COMMIT_TAG будет содержать тег, а $CI_COMMIT_SHA будет содержать хеш коммита.

0 голосов
/ 30 мая 2019

из документации GitLab , вот определение CI_COMMIT_TAG:

CI_COMMIT_TAG - Имя тега коммита. Присутствует только при построении тегов

означает - когда вы отправите коммит в GitLab, он запустит конвейер без переменной CI_COMMIT_TAG. Когда вы сделаете тег для этого коммита и передадите этот тег в GitLab, будет запущен другой конвейер (на этот раз для тега, а не для фиксации). В этом случае будет присутствовать CI_COMMIT_TAG.

@ xpt - спасибо за доверие к голосованию и за то, что попросили записать это как ответ, надеюсь, это поможет сообществу!

...