diff --git a/.circleci/config.yml b/.circleci/config.yml index c36b629..c878876 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -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 < /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: diff --git a/.circleci/parse-tag.sh b/.circleci/parse-tag.sh index 08ee37a..954adb1 100755 --- a/.circleci/parse-tag.sh +++ b/.circleci/parse-tag.sh @@ -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" diff --git a/.circleci/push-image.sh b/.circleci/push-image.sh index 191f817..9173d39 100755 --- a/.circleci/push-image.sh +++ b/.circleci/push-image.sh @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/Postgres/13.4/linuxarm32v7.Dockerfile b/Postgres/13.4/linuxarm32v7.Dockerfile index 475224b..0686f10 100644 --- a/Postgres/13.4/linuxarm32v7.Dockerfile +++ b/Postgres/13.4/linuxarm32v7.Dockerfile @@ -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 diff --git a/Postgres/13.4/linuxarm64v8.Dockerfile b/Postgres/13.4/linuxarm64v8.Dockerfile index 093f394..7405c02 100644 --- a/Postgres/13.4/linuxarm64v8.Dockerfile +++ b/Postgres/13.4/linuxarm64v8.Dockerfile @@ -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 && \ diff --git a/Postgres/13.4/migrate-docker-entrypoint.sh b/Postgres/13.4/migrate-docker-entrypoint.sh index 6abe1a3..0182d4a 100755 --- a/Postgres/13.4/migrate-docker-entrypoint.sh +++ b/Postgres/13.4/migrate-docker-entrypoint.sh @@ -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/"