и pwd
, и echo $(pwd)
не отображаются в выходных данных,
Это происходит из-за того, что никакая команда фактически не выполняется внутри контейнера, потому что это изображение gittools/gitversion
содержит следующую точку входа :
ENTRYPOINT ["dotnet", "/app/GitVersion.dll"]
, которая совместима с однострочником, предложенным в https://hub.docker.com/r/gittools/gitversion:
docker run --rm -v "$(pwd):/repo" gittools/gitversion:latest-linux-netcoreapp2.2 /repo
, который завершается ошибкой, если не предоставлен аргумент командной строки, и, следовательно, происходит сбой при использовании docker exec
GitLab CI.
Более того, кажется, что изображение не поддерживает * Команда 1024 *, а точнее dotnet /app/GitVersion.dll
.
Решение 1
В качестве обходного пути вы можете переопределить точку входа и попробовать:
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_HOST: "tcp://docker:2375"
determine version:
stage: preparation
tags:
- docker
image:
name: gittools/gitversion
entrypoint: /bin/bash
script:
- pwd
- dotnet /app/GitVersion.dll /output json /showvariable FullSemVer > version.txt
- cat version.txt
artifacts:
paths:
- version.txt
expire_in: 1 hr
Решение 2
Используйте команду docker run
, созданную вручную, , используя Docker -in- Docker (dind
):
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_HOST: "tcp://docker:2375"
determine-version:
stage: preparation
tags:
- docker
image: docker:latest
services:
- docker:dind
script:
- pwd
- docker run --rm -v "$(pwd):/repo" gittools/gitversion:latest-linux-netcoreapp2.2 /repo /output json /showvariable FullSemVer > version.txt
- cat version.txt
artifacts:
paths:
- version.txt
expire_in: 1 hr