fixed deploy script logic
This commit is contained in:
parent
088015653c
commit
ad2f124b61
2 changed files with 78 additions and 34 deletions
|
@ -15,3 +15,7 @@ deploy:
|
||||||
script: bash deploy.sh
|
script: bash deploy.sh
|
||||||
on:
|
on:
|
||||||
branch: master
|
branch: master
|
||||||
|
- provider: script
|
||||||
|
script: bash deploy.sh
|
||||||
|
on:
|
||||||
|
branch: develop
|
108
deploy.sh
108
deploy.sh
|
@ -1,11 +1,24 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# Travis-ci convenience environment vars used:
|
||||||
|
# TRAVIS_BRANCH | branch name
|
||||||
|
# $TRAVIS_REPO_SLUG | organization/project (GitHub Capitalization)
|
||||||
|
# Travis-ci manual environment vars used:
|
||||||
|
# GITHUB_USER | github username
|
||||||
|
# GITHUB_TOKEN | $GITHUB_USER's token
|
||||||
|
# DOCKER_USER | docker username
|
||||||
|
# DOCKER_PASSWORD | $DOCKER_USER's password
|
||||||
|
|
||||||
VERSION="$(grep -i version varken/__init__.py | cut -d' ' -f3 | tr -d \")"
|
VERSION="$(grep -i version varken/__init__.py | cut -d' ' -f3 | tr -d \")"
|
||||||
|
|
||||||
# Docker
|
# Set branch to latest if master, else keep the same
|
||||||
GITHUB_USER='dirtycajunrice'
|
if [[ "$TRAVIS_BRANCH" == "master" ]]; then
|
||||||
DOCKER_USER='dirtycajunrice'
|
BRANCH="latest"
|
||||||
PROJECT='varken'
|
else
|
||||||
NAMESPACE="boerderij/${PROJECT}"
|
BRANCH="$TRAVIS_BRANCH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# get the docker lowercase variant of the repo_name
|
||||||
|
REPOSITORY="$(echo $TRAVIS_REPO_SLUG | tr '[:upper:]' '[:lower:]')"
|
||||||
|
|
||||||
# Docker experimental config
|
# Docker experimental config
|
||||||
echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
|
echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
|
||||||
|
@ -15,42 +28,69 @@ echo '{"experimental":"enabled"}' | sudo tee ~/.docker/config.json
|
||||||
sudo service docker restart
|
sudo service docker restart
|
||||||
|
|
||||||
# Auth
|
# Auth
|
||||||
echo "$DOCKER_PASSWORD" | docker login -u="$DOCKER_USER" --password-stdin
|
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USER" --password-stdin
|
||||||
|
|
||||||
# Latest x64
|
# Prepare QEMU for ARM builds
|
||||||
docker build -t "${NAMESPACE}:latest" . && \
|
|
||||||
docker push "${NAMESPACE}:latest"
|
|
||||||
# x64 Arch
|
|
||||||
docker tag "${NAMESPACE}:latest" "${NAMESPACE}:latest-amd64" && \
|
|
||||||
docker push "${NAMESPACE}:latest-amd64"
|
|
||||||
# Versioned x64
|
|
||||||
docker tag "${NAMESPACE}:latest" "${NAMESPACE}:${VERSION}" && \
|
|
||||||
docker push "${NAMESPACE}:${VERSION}"
|
|
||||||
docker tag "${NAMESPACE}:latest" "${NAMESPACE}:${VERSION}-amd64" && \
|
|
||||||
docker push "${NAMESPACE}:${VERSION}-amd64"
|
|
||||||
|
|
||||||
# Prepare qemu for ARM builds
|
|
||||||
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||||
wget -P tmp/ "https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/qemu-aarch64-static"
|
wget -P tmp/ "https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/qemu-aarch64-static"
|
||||||
wget -P tmp/ "https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/qemu-arm-static"
|
wget -P tmp/ "https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/qemu-arm-static"
|
||||||
chmod +x tmp/qemu-aarch64-static tmp/qemu-arm-static
|
chmod +x tmp/qemu-aarch64-static tmp/qemu-arm-static
|
||||||
|
|
||||||
# ARM images
|
# Set tag based off of branch
|
||||||
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
|
TAG="$VERSION"
|
||||||
|
else
|
||||||
|
TAG="$BRANCH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# AMDx64
|
||||||
|
docker build -t "${REPOSITORY}:${TAG}-amd64" . && \
|
||||||
|
docker push "${REPOSITORY}:${TAG}-amd64"
|
||||||
|
|
||||||
|
# Create Initial Manifests
|
||||||
|
docker manifest create "${REPOSITORY}:${TAG}" "${REPOSITORY}:${TAG}-amd64"
|
||||||
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
|
docker manifest create "${REPOSITORY}:${BRANCH}" "${REPOSITORY}:${TAG}-amd64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ARM variants
|
||||||
for i in $(ls *arm*); do
|
for i in $(ls *arm*); do
|
||||||
arch="$(echo ${i} | cut -d. -f2)"
|
ARCH="$(echo ${i} | cut -d. -f2)"
|
||||||
# Latest
|
docker build -t "${REPOSITORY}:${TAG}-${ARCH}" . && \
|
||||||
docker build -f "./Dockerfile.${arch}" -t "${NAMESPACE}:latest-${arch}" . && \
|
docker push "${REPOSITORY}:${TAG}-${ARCH}"
|
||||||
docker push "${NAMESPACE}:latest-${arch}" && \
|
# Add variant to manifest
|
||||||
# Versioned
|
docker manifest create -a "${REPOSITORY}:${TAG}" "${REPOSITORY}:${TAG}-${ARCH}"
|
||||||
docker tag "${NAMESPACE}:latest-${arch}" "${NAMESPACE}:${VERSION}-${arch}" && \
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
docker push "${NAMESPACE}:${VERSION}-${arch}"
|
docker manifest create -a "${REPOSITORY}:${BRANCH}" "${REPOSITORY}:${TAG}-${ARCH}"
|
||||||
|
fi
|
||||||
|
if [[ "$ARCH" == "arm64" ]]; then
|
||||||
|
docker manifest annotate "${REPOSITORY}:${TAG}" "${REPOSITORY}:${TAG}-${ARCH}" --variant v8 --arch arm64
|
||||||
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
|
docker manifest annotate "${REPOSITORY}:${BRANCH}" "${REPOSITORY}:${TAG}-${ARCH}" --variant v8 --arch arm64
|
||||||
|
fi
|
||||||
|
elif [[ "$ARCH" == "armhf" ]]; then
|
||||||
|
docker manifest annotate "${REPOSITORY}:${TAG}" "${REPOSITORY}:${TAG}-${ARCH}" --variant v7 --arch arm
|
||||||
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
|
docker manifest annotate "${REPOSITORY}:${BRANCH}" "${REPOSITORY}:${TAG}-${ARCH}" --variant v7 --arch arm
|
||||||
|
fi
|
||||||
|
elif [[ "$ARCH" == "arm" ]]; then
|
||||||
|
docker manifest annotate "${REPOSITORY}:${TAG}" "${REPOSITORY}:${TAG}-${ARCH}" --variant v6 --arch arm
|
||||||
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
|
docker manifest annotate "${REPOSITORY}:${BRANCH}" "${REPOSITORY}:${TAG}-${ARCH}" --variant v6 --arch arm
|
||||||
|
fi
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
wget -O manifest-tool https://github.com/estesp/manifest-tool/releases/download/v0.9.0/manifest-tool-linux-amd64 && \
|
docker manifest inspect "${REPOSITORY}:${TAG}" && \
|
||||||
chmod +x manifest-tool && \
|
docker manifest push "${REPOSITORY}:${TAG}"
|
||||||
python3 manifest_generator.py && \
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
./manifest-tool --username "$DOCKER_USER" --password "$DOCKER_PASSWORD" push from-spec ".manifest.yaml"
|
docker manifest inspect "${REPOSITORY}:${BRANCH}" && \
|
||||||
|
docker manifest push "${REPOSITORY}:${BRANCH}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Git tags
|
# Git tags
|
||||||
git remote set-url origin "https://${GITHUB_USER}:${GITHUB_API_KEY}@github.com/${NAMESPACE}.git" && \
|
if [[ "$BRANCH" == "latest" ]]; then
|
||||||
git tag "${VERSION}" && \
|
git remote set-url origin "https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/${REPOSITORY}.git" && \
|
||||||
git push --tags
|
git tag "${VERSION}" && \
|
||||||
|
git push --tags
|
||||||
|
fi
|
Loading…
Reference in a new issue