Update images CI

This commit is contained in:
nicolas.dorier 2021-10-21 12:50:35 +09:00
parent 1882d54625
commit 4eb388b722
No known key found for this signature in database
GPG Key ID: 6618763EF09186FE
6 changed files with 53 additions and 25 deletions

View File

@ -7,17 +7,21 @@
version: 2
jobs:
build:
machine:
enabled: true
docker:
- image: cimg/base:stable
steps:
- checkout
- setup_remote_docker:
version: 20.10.7
# publish jobs require $DOCKERHUB_USER, $DOCKERHUB_PASS defined
publish_linuxamd64:
machine:
enabled: true
docker:
- image: cimg/base:stable
steps:
- checkout
- checkout
- setup_remote_docker:
version: 20.10.7
- run:
command: |
source ".circleci/parse-tag.sh"
@ -30,10 +34,12 @@ jobs:
fi
publish_linuxarm64v8:
machine:
enabled: true
docker:
- image: cimg/base:stable
steps:
- checkout
- checkout
- setup_remote_docker:
version: 20.10.7
- run:
command: |
source ".circleci/parse-tag.sh"
@ -42,7 +48,7 @@ jobs:
if [ -f $DOCKERHUB_DOCKEFILE ]; then
#
# Make sure the builder is copy the arm emulator
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
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"
@ -53,10 +59,12 @@ jobs:
echo "Skipping linuxarm64v8 because $DOCKERHUB_DOCKEFILE is not found"
fi
publish_linuxarm32v7:
machine:
enabled: true
docker:
- image: cimg/base:stable
steps:
- checkout
- setup_remote_docker:
version: 20.10.7
- run:
command: |
source ".circleci/parse-tag.sh"
@ -65,7 +73,7 @@ jobs:
if [ -f $DOCKERHUB_DOCKEFILE ]; then
#
# Make sure the builder is copy the arm emulator
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
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
@ -78,19 +86,22 @@ jobs:
echo "Skipping linuxarm32v7 because $DOCKERHUB_DOCKEFILE is not found"
fi
publish_multiarch:
machine:
enabled: true
image: circleci/classic:201808-01
docker:
- image: cimg/base:stable
steps:
- checkout
- setup_remote_docker:
version: 20.10.7
- run:
command: |
# Turn on Experimental features
sudo mkdir $HOME/.docker
sudo sh -c 'echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json'
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 login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker $DOCKER_OPTIONS login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
IMAGES=""
if [ -f $DOCKERHUB_DOCKEFILE_AMD64 ]; then
IMAGES="$IMAGES $DOCKERHUB_DESTINATION-amd64"
@ -106,15 +117,15 @@ jobs:
else
sudo docker manifest create --amend $DOCKERHUB_DESTINATION $IMAGES
if [ -f $DOCKERHUB_DOCKEFILE_AMD64 ]; then
sudo docker manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-amd64 --os linux --arch amd64
sudo docker $DOCKER_OPTIONS manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-amd64 --os linux --arch amd64
fi
if [ -f $DOCKERHUB_DOCKEFILE_ARM32 ]; then
sudo docker manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-arm32v7 --os linux --arch arm --variant v7
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 manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-arm64v8 --os linux --arch arm64 --variant v8
sudo docker $DOCKER_OPTIONS manifest annotate $DOCKERHUB_DESTINATION $DOCKERHUB_DESTINATION-arm64v8 --os linux --arch arm64 --variant v8
fi
sudo docker manifest push $DOCKERHUB_DESTINATION -p
sudo docker $DOCKER_OPTIONS manifest push $DOCKERHUB_DESTINATION -p
fi
workflows:

View File

@ -28,6 +28,8 @@ DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG"
DOCKERHUB_DOCKEFILE_ARM64="$NODE_NAME/$NODE_VERSION/linuxarm64v8.Dockerfile"
DOCKERHUB_DOCKEFILE_ARM32="$NODE_NAME/$NODE_VERSION/linuxarm32v7.Dockerfile"
DOCKERHUB_DOCKEFILE_AMD64="$NODE_NAME/$NODE_VERSION/linuxamd64.Dockerfile"
DOCKER_OPTIONS="--tlsverify -H=$DOCKER_HOST --tlscacert=$DOCKER_CERT_PATH/ca.pem --tlscert=$DOCKER_CERT_PATH/cert.pem --tlskey=$DOCKER_CERT_PATH/key.pem"
echo "LATEST_TAG=$LATEST_TAG"
echo "NODE_VERSION=$NODE_VERSION"

View File

@ -1,6 +1,6 @@
#!/bin/bash
echo "Pushing $DOCKERHUB_DOCKEFILE to dockerhub repository $DOCKERHUB_DESTINATION"
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker build --pull -t $DOCKERHUB_DESTINATION -f "$DOCKERHUB_DOCKEFILE" "$NODE_NAME/$NODE_VERSION"
sudo docker push $DOCKERHUB_DESTINATION
sudo docker $DOCKER_OPTIONS login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker $DOCKER_OPTIONS build --pull -t $DOCKERHUB_DESTINATION -f "$DOCKERHUB_DOCKEFILE" "$NODE_NAME/$NODE_VERSION"
sudo docker $DOCKER_OPTIONS push $DOCKERHUB_DESTINATION

View File

@ -1,4 +1,11 @@
FROM postgres:13.4 as downloader
RUN set -ex \
&& apt-get update \
&& apt-get install -qq --no-install-recommends qemu-user-static binfmt-support
FROM --platform=arm postgres:13.4
COPY --from=downloader /usr/bin/qemu-arm-static /usr/bin/qemu-arm-static
# Postgres doesn't ship packages for 9.6
ENV PREVIOUS_VERSION 9.6

View File

@ -1,4 +1,11 @@
FROM postgres:13.4 as downloader
RUN set -ex \
&& apt-get update \
&& apt-get install -qq --no-install-recommends qemu-user-static binfmt-support
FROM --platform=arm64 postgres:13.4
COPY --from=downloader /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static
ENV PREVIOUS_VERSION 9.6
RUN cp /etc/apt/sources.list.d/pgdg.list /etc/apt/sources.list.d/pgdg.list.backup && \

View File

@ -12,6 +12,7 @@ if [[ "$CURRENT_PGVERSION" != "$EXPECTED_PGVERSION" ]] && \
[[ "$CURRENT_PGVERSION" != "" ]]; then
if ! [ -f "/usr/lib/postgresql/$CURRENT_PGVERSION/bin/pg_upgrade" ]; then
echo "Trying to install Postgres $CURRENT_PGVERSION migration tools"
sed -i "s/$/ $CURRENT_PGVERSION/" /etc/apt/sources.list.d/pgdg.list
if ! apt-get update; then
echo "apt-get update failed. Are you using raspberry pi 4? If yes, please follow https://blog.samcater.com/fix-workaround-rpi4-docker-libseccomp2-docker-20/"