Skip to content

Commit

Permalink
Change build logic
Browse files Browse the repository at this point in the history
  • Loading branch information
VonOx committed Mar 10, 2020
1 parent 32721e2 commit 6b6e270
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 63 deletions.
19 changes: 9 additions & 10 deletions .circleci/build-image.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
#!/bin/sh

set -eu
# Conditions for image tag
if [ "${CIRCLE_BRANCH}" == "master" ] && [[ -z $VERSION]]; then
export IMAGE_ID="${REGISTRY}/${IMAGE}:dev-${TAG}"
fi
if [ "${CIRCLE_BRANCH}" != "master" ] && [[ -z $VERSION]]; then
export IMAGE_ID="${REGISTRY}/${IMAGE}:${CIRCLE_BRANCH}-${TAG}"
fi
if [[ -n $VERSION]]; then
export IMAGE_ID="${REGISTRY}/${IMAGE}:${VERSION}-${TAG}"
fi

echo $GITHUB_REPO
echo $IMAGE
echo $REGISTRY
echo $IMAGE_ID
echo $TARGET
echo $QEMU_ARCH
echo $QEMU_VERSION


# ============
# <qemu-support>
Expand Down
95 changes: 43 additions & 52 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@ shared: &shared
- run:
name: Build and push Docker image.
command: |
if git log -1 --pretty=%B | grep "^[v]\+[0-9]\+\.[0-9]\+\.[0-9]\+$"; then
MAJOR_VERSION=$(echo $CIRCLE_TAG | cut -d'.' -f 1)
VERSION=$CIRCLE_TAG
fi
if [[ $CIRCLE_BRANCH = master ]]; then
VERSION="dev";
fi
source $BASH_ENV
.circleci/build-image.sh
no_output_timeout: 2h
Expand Down Expand Up @@ -107,7 +114,7 @@ jobs:
root: ~/gladys-build
paths:
- front/build
manifest_release:
docker_manifest:
machine:
enabled: true
image: circleci/classic:201808-01
Expand All @@ -124,43 +131,40 @@ jobs:
sudo mkdir $HOME/.docker
sudo sh -c 'echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json'
echo $DOCKERHUB_PASS | sudo docker login -u $DOCKERHUB_USER --password-stdin
sudo docker manifest create --amend $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-amd64 $DOCKERHUB_REPO:$CIRCLE_TAG-i386 $DOCKERHUB_REPO:$CIRCLE_TAG-arm $DOCKERHUB_REPO:$CIRCLE_TAG-arm32v7 $DOCKERHUB_REPO:$CIRCLE_TAG-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-i386 --os linux --arch 386
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-arm --os linux --arch arm --variant v6
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest create --amend $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 $DOCKERHUB_REPO:latest-i386 $DOCKERHUB_REPO:latest-arm $DOCKERHUB_REPO:latest-arm32v7 $DOCKERHUB_REPO:latest-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-i386 --os linux --arch 386
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm --os linux --arch arm --variant v6
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:latest -p
manifest_dev:
machine:
enabled: true
image: circleci/classic:201808-01
steps:
- checkout
- run:
name: Add dynamic shared vars to env.
command: |
.circleci/load_env.sh
- run:
name: Creating manifest for releases tag
command: |
# Turn on Experimental features
sudo mkdir $HOME/.docker
sudo sh -c 'echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json'
echo $DOCKERHUB_PASS | sudo docker login -u $DOCKERHUB_USER --password-stdin
sudo docker manifest create --amend $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-amd64 $DOCKERHUB_REPO:dev-i386 $DOCKERHUB_REPO:dev-arm $DOCKERHUB_REPO:dev-arm32v7 $DOCKERHUB_REPO:dev-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-i386 --os linux --arch 386
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-arm --os linux --arch arm --variant v6
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:dev -p
if git log -1 --pretty=%B | grep "^[v]\+[0-9]\+\.[0-9]\+\.[0-9]\+$";
then
sudo docker manifest create --amend $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-amd64 $DOCKERHUB_REPO:$CIRCLE_TAG-i386 $DOCKERHUB_REPO:$CIRCLE_TAG-arm $DOCKERHUB_REPO:$CIRCLE_TAG-arm32v7 $DOCKERHUB_REPO:$CIRCLE_TAG-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-i386 --os linux --arch 386
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-arm --os linux --arch arm --variant v6
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:$CIRCLE_TAG $DOCKERHUB_REPO:$CIRCLE_TAG-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:$CIRCLE_TAG -p
sudo docker manifest create --amend $DOCKERHUB_REPO:$MAJOR_VERSION $DOCKERHUB_REPO:$MAJOR_VERSION-amd64 $DOCKERHUB_REPO:$MAJOR_VERSION-i386 $DOCKERHUB_REPO:$MAJOR_VERSION-arm $DOCKERHUB_REPO:$MAJOR_VERSION-arm32v7 $DOCKERHUB_REPO:$MAJOR_VERSION-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:$MAJOR_VERSION $DOCKERHUB_REPO:$MAJOR_VERSION-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:$MAJOR_VERSION $DOCKERHUB_REPO:$MAJOR_VERSION-i386 --os linux --arch 386
sudo docker manifest annotate $DOCKERHUB_REPO:$MAJOR_VERSION $DOCKERHUB_REPO:$MAJOR_VERSION-arm --os linux --arch arm --variant v6
sudo docker manifest annotate $DOCKERHUB_REPO:$MAJOR_VERSION $DOCKERHUB_REPO:$MAJOR_VERSION-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:$MAJOR_VERSION $DOCKERHUB_REPO:$MAJOR_VERSION-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:$MAJOR_VERSION -p
sudo docker manifest create --amend $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 $DOCKERHUB_REPO:latest-i386 $DOCKERHUB_REPO:latest-arm $DOCKERHUB_REPO:latest-arm32v7 $DOCKERHUB_REPO:latest-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-i386 --os linux --arch 386
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm --os linux --arch arm --variant v6
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:latest -p
else if [[ $CIRCLE_BRANCH = master ]];
then
sudo docker manifest create --amend $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-amd64 $DOCKERHUB_REPO:dev-i386 $DOCKERHUB_REPO:dev-arm $DOCKERHUB_REPO:dev-arm32v7 $DOCKERHUB_REPO:dev-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-i386 --os linux --arch 386
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-arm --os linux --arch arm --variant v6
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:dev $DOCKERHUB_REPO:dev-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:dev -p
fi
build-armhf:
<<: *shared
environment:
Expand Down Expand Up @@ -217,23 +221,10 @@ workflows:
- build-arm32v7:
requires:
- build-front
- manifest_release:
requires:
- build-amd64
- build-arm64v8
- build-i386
- build-armhf
- build-arm32v7
filters:
tags:
only: /v*/
- manifest_dev:
- docker_manifest:
requires:
- build-amd64
- build-arm64v8
- build-i386
- build-armhf
- build-arm32v7
filters:
branches:
only: master
1 change: 0 additions & 1 deletion .circleci/load_env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ echo 'export GITHUB_REPO=vonox/Gladys' >>$BASH_ENV
echo 'export IMAGE=gladys' >>$BASH_ENV
echo 'export REGISTRY=vonox' >>$BASH_ENV

echo 'export VERSION=${CIRCLE_TAG}' >>$BASH_ENV
echo 'export IMAGE_ID="${REGISTRY}/${IMAGE}:${VERSION}-${TAG}"' >>$BASH_ENV
echo 'export DIR=`pwd`' >>$BASH_ENV
echo 'export QEMU_VERSION="v4.2.0-2"' >>$BASH_ENV
Expand Down

0 comments on commit 6b6e270

Please sign in to comment.