mirror of
https://github.com/Retropex/dockerfile-deps.git
synced 2025-05-12 16:40:40 +02:00
167 lines
6.4 KiB
YAML
167 lines
6.4 KiB
YAML
# This configuration will automatically create docker images based on conventions
|
|
# For example, if a tag BitcoinCore/0.17.0 is pushed
|
|
# Then on docker hub "btcpayserver/BitcoinCore" will be pushed:
|
|
# - 0.17.0-arm32v7 from BitcoinCore/0.17.0/linuxarm32v7.Dockerfile
|
|
# - 0.17.0-amd64 from BitcoinCore/0.17.0/linuxamd64.Dockerfile
|
|
# - 0.17.0 multi arch image
|
|
version: 2
|
|
jobs:
|
|
build:
|
|
docker:
|
|
- image: cimg/base:stable
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker:
|
|
version: 20.10.7
|
|
|
|
# publish jobs require $DOCKERHUB_USER, $DOCKERHUB_PASS defined
|
|
publish_linuxamd64:
|
|
docker:
|
|
- image: cimg/base:stable
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker:
|
|
version: 20.10.7
|
|
- run:
|
|
command: |
|
|
source ".circleci/parse-tag.sh"
|
|
DOCKERHUB_DOCKEFILE="$DOCKERHUB_DOCKEFILE_AMD64"
|
|
DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG-amd64"
|
|
if [ -f $DOCKERHUB_DOCKEFILE ]; then
|
|
source ".circleci/push-image.sh"
|
|
else
|
|
echo "Skipping linuxamd64 because $DOCKERHUB_DOCKEFILE is not found"
|
|
fi
|
|
|
|
publish_linuxarm64v8:
|
|
docker:
|
|
- image: cimg/base:stable
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker:
|
|
version: 20.10.7
|
|
- run:
|
|
command: |
|
|
source ".circleci/parse-tag.sh"
|
|
DOCKERHUB_DOCKEFILE="$DOCKERHUB_DOCKEFILE_ARM64"
|
|
DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG-arm64v8"
|
|
if [ -f $DOCKERHUB_DOCKEFILE ]; then
|
|
#
|
|
# Make sure the builder is copy the arm emulator
|
|
sudo docker $DOCKER_OPTIONS run --rm --privileged multiarch/qemu-user-static:register --reset
|
|
sudo apt update
|
|
sudo apt install -y qemu qemu-user-static qemu-user binfmt-support
|
|
sudo cp /usr/bin/qemu-aarch64-static "$(dirname "$DOCKERHUB_DOCKEFILE")/qemu-aarch64-static"
|
|
sed -i -e 's/#EnableQEMU //g' "$DOCKERHUB_DOCKEFILE"
|
|
#
|
|
source ".circleci/push-image.sh"
|
|
else
|
|
echo "Skipping linuxarm64v8 because $DOCKERHUB_DOCKEFILE is not found"
|
|
fi
|
|
publish_linuxarm32v7:
|
|
docker:
|
|
- image: cimg/base:stable
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker:
|
|
version: 20.10.7
|
|
- run:
|
|
command: |
|
|
source ".circleci/parse-tag.sh"
|
|
DOCKERHUB_DOCKEFILE="$DOCKERHUB_DOCKEFILE_ARM32"
|
|
DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG-arm32v7"
|
|
if [ -f $DOCKERHUB_DOCKEFILE ]; then
|
|
#
|
|
# Make sure the builder is copy the arm emulator
|
|
sudo docker $DOCKER_OPTIONS run --rm --privileged multiarch/qemu-user-static:register --reset
|
|
if grep "#EnableQEMU" $DOCKERHUB_DOCKEFILE; then
|
|
sudo apt update
|
|
sudo apt install -y qemu qemu-user-static qemu-user binfmt-support
|
|
sudo cp /usr/bin/qemu-arm-static "$(dirname "$DOCKERHUB_DOCKEFILE")/qemu-arm-static"
|
|
sed -i -e 's/#EnableQEMU //g' "$DOCKERHUB_DOCKEFILE"
|
|
fi
|
|
#
|
|
source ".circleci/push-image.sh"
|
|
else
|
|
echo "Skipping linuxarm32v7 because $DOCKERHUB_DOCKEFILE is not found"
|
|
fi
|
|
publish_multiarch:
|
|
docker:
|
|
- image: cimg/base:stable
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker:
|
|
version: 20.10.7
|
|
- run:
|
|
command: |
|
|
# Turn on Experimental features
|
|
ssh remote-docker <<EOF
|
|
sudo bash -c 'echo "{\"experimental\": true}" > /etc/docker/daemon.json'
|
|
sudo systemctl restart docker
|
|
EOF
|
|
source ".circleci/parse-tag.sh"
|
|
#
|
|
sudo docker $DOCKER_OPTIONS login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
|
|
IMAGES=""
|
|
if [ -f $DOCKERHUB_DOCKEFILE_AMD64 ]; then
|
|
IMAGES="$IMAGES $DOCKERHUB_DESTINATION-amd64"
|
|
fi
|
|
if [ -f $DOCKERHUB_DOCKEFILE_ARM64 ]; then
|
|
IMAGES="$IMAGES $DOCKERHUB_DESTINATION-arm64v8"
|
|
fi
|
|
if [ -f $DOCKERHUB_DOCKEFILE_ARM32 ]; then
|
|
IMAGES="$IMAGES $DOCKERHUB_DESTINATION-arm32v7"
|
|
fi
|
|
if [ -z "$IMAGES" ]; then
|
|
echo "Skipping $DOCKERHUB_DESTINATION as there were no supported platforms to build for"
|
|
else
|
|
sudo docker manifest create --amend $DOCKERHUB_DESTINATION $IMAGES
|
|
if [ -f $DOCKERHUB_DOCKEFILE_AMD64 ]; then
|
|
sudo docker $DOCKER_OPTIONS manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-amd64 --os linux --arch amd64
|
|
fi
|
|
if [ -f $DOCKERHUB_DOCKEFILE_ARM32 ]; then
|
|
sudo docker $DOCKER_OPTIONS manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-arm32v7 --os linux --arch arm --variant v7
|
|
fi
|
|
if [ -f $DOCKERHUB_DOCKEFILE_ARM64 ]; then
|
|
sudo docker $DOCKER_OPTIONS manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-arm64v8 --os linux --arch arm64 --variant v8
|
|
fi
|
|
sudo docker $DOCKER_OPTIONS manifest push $DOCKERHUB_DESTINATION -p
|
|
fi
|
|
|
|
workflows:
|
|
version: 2
|
|
publish:
|
|
jobs:
|
|
- publish_linuxamd64:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
# Example: BitcoinCore/0.17.0 or BitcoinCore/0.17.0-1 or Bitcoin/0.21.0-based-taproot0.1
|
|
tags:
|
|
only: /^[^/]+[/][0-9]+(\.[0-9]+)*(-[a-z0-9\.-]+)?/
|
|
- publish_linuxarm32v7:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
# Example: BitcoinCore/0.17.0
|
|
only: /^[^/]+[/][0-9]+(\.[0-9]+)*(-[a-z0-9\.-]+)?/
|
|
- publish_linuxarm64v8:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
# Example: BitcoinCore/0.17.0
|
|
only: /^[^/]+[/][0-9]+(\.[0-9]+)*(-[a-z0-9\.-]+)?/
|
|
- publish_multiarch:
|
|
requires:
|
|
- publish_linuxamd64
|
|
- publish_linuxarm32v7
|
|
- publish_linuxarm64v8
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
# Example: BitcoinCore/0.17.0
|
|
only: /^[^/]+[/][0-9]+(\.[0-9]+)*(-[a-z0-9\.-]+)?/
|