Сборка ветки CircleCI не удалась, но сборка тега прошла успешно
Я строю свой проект на CircleCI, и у меня есть работа по сборке, которая выглядит следующим образом:
build:
<<: *defaults
steps:
- checkout
- setup_remote_docker
- run:
name: Install pip
command: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && sudo python get-pip.py
- run:
name: Install AWS CLI
command: curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" && unzip awscli-bundle.zip && sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
- run:
name: Login to Docker Registry
command: aws ecr get-login --no-include-email --region us-east-1 | sh
- run:
name: Install Dep
command: curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
- run:
name: Save Version Number
command: echo "export VERSION_NUM=${CIRCLE_TAG}.${CIRCLE_BUILD_NUM}" > deployment/dev/.env
- run:
name: Build App
command: source deployment/dev/.env && docker-compose -f deployment/dev/docker-compose.yml build
- run:
name: Test App
command: |
git config --global url."https://${GITHUB_PERSONAL_ACCESS_TOKEN} :x-oauth-basic@github.com/".insteadOf "https://github.com/"
dep ensure
go test -v ./...
- run:
name: Push Image
command: |
if [[ "${CIRCLE_TAG}" =~ ^v[0.9]+(\.[0-9]+)*-[a-z]*$ ]]; then
source deployment/dev/.env
docker-compose -f deployment/dev/docker-compose.yml push
else
echo 'No tag, not deploying'
fi
- persist_to_workspace:
root: .
paths:
- deployment/*
- tools/*
Когда я помещаю изменения в ветку, сборка завершается ошибкой каждый раз с Couldn't connect to Docker daemon at ... - is it running?
когда он достигает шага Build App задания по сборке.
Пожалуйста, помогите мне выяснить, почему сборки веток терпят неудачу, а сборки тегов - нет.
2 ответа
Я подозреваю, что вы столкнулись с этой ошибкой docker-compose: https://github.com/docker/compose/issues/6050
Ошибка сообщает о вводящей в заблуждение ошибке (той, которую вы получаете), когда имя изображения в файле docker-compose недопустимо.
Если вы используете переменную окружения для имени изображения или тега изображения, и эта переменная задается из имени ветви, то в некоторых ветвях произойдет сбой, но не в других.
Проблема возникала на Save Version Number
шаг. Иногда эта версия будет .${CIRCLE_BUILD_NUM}
поскольку тег не был передан. Докер не любит эти теги, начиная с .
, поэтому я добавил условную проверку, чтобы увидеть, если CIRCLE_TAG
был пуст, и если это было, используйте некоторую версию по умолчанию: v0.1.0-build
,