circleci - 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?
因为它到达构建作业的构建应用程序步骤。
请帮我弄清楚为什么分支构建失败但标签构建没有。
解决方案
我怀疑你遇到了这个 docker-compose 错误:https ://github.com/docker/compose/issues/6050
当 docker-compose 文件中的图像名称无效时,该错误会报告一个误导性错误(您得到的错误)。
如果您使用环境变量作为图像名称或图像标签,并且该变量是从分支名称设置的,那么它会在某些分支上失败,但在其他分支上不会。
推荐阅读
- javascript - 我们可以使用单个表单标签的操作发送两个发布请求吗?
- php - Symfony 3,ArrayCollection 的 remove() 导致错误“警告:isset 中的非法偏移类型或为空”
- c# - 在基类的实例上设置派生类的属性
- jquery - 使用 jquery none 显示跨度
- c# - .Net Standard 2.0 SQLite.Core 程序集在单元测试中找不到
- rabbitmq - 在 RabbitMQ 主题交换中,每个队列是否应该有唯一的路由键?或者每个连接应该只有一个队列?
- c# - 组合框 SelectedValue 为空
- r - Shiny:DataTable 活动行选择
- android - Android:创建一个 ENUM 并为每个键插入一个值
- python - 如何在 Python 2.7 中将 while 语句重写为 if 语句?