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 version: 2
jobs: jobs:
build: build:
machine: docker:
enabled: true - image: cimg/base:stable
steps: steps:
- checkout - checkout
- setup_remote_docker:
version: 20.10.7
# publish jobs require $DOCKERHUB_USER, $DOCKERHUB_PASS defined # publish jobs require $DOCKERHUB_USER, $DOCKERHUB_PASS defined
publish_linuxamd64: publish_linuxamd64:
machine: docker:
enabled: true - image: cimg/base:stable
steps: steps:
- checkout - checkout
- setup_remote_docker:
version: 20.10.7
- run: - run:
command: | command: |
source ".circleci/parse-tag.sh" source ".circleci/parse-tag.sh"
@ -30,10 +34,12 @@ jobs:
fi fi
publish_linuxarm64v8: publish_linuxarm64v8:
machine: docker:
enabled: true - image: cimg/base:stable
steps: steps:
- checkout - checkout
- setup_remote_docker:
version: 20.10.7
- run: - run:
command: | command: |
source ".circleci/parse-tag.sh" source ".circleci/parse-tag.sh"
@ -42,7 +48,7 @@ jobs:
if [ -f $DOCKERHUB_DOCKEFILE ]; then if [ -f $DOCKERHUB_DOCKEFILE ]; then
# #
# Make sure the builder is copy the arm emulator # 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 update
sudo apt install -y qemu qemu-user-static qemu-user binfmt-support 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" 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" echo "Skipping linuxarm64v8 because $DOCKERHUB_DOCKEFILE is not found"
fi fi
publish_linuxarm32v7: publish_linuxarm32v7:
machine: docker:
enabled: true - image: cimg/base:stable
steps: steps:
- checkout - checkout
- setup_remote_docker:
version: 20.10.7
- run: - run:
command: | command: |
source ".circleci/parse-tag.sh" source ".circleci/parse-tag.sh"
@ -65,7 +73,7 @@ jobs:
if [ -f $DOCKERHUB_DOCKEFILE ]; then if [ -f $DOCKERHUB_DOCKEFILE ]; then
# #
# Make sure the builder is copy the arm emulator # 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 if grep "#EnableQEMU" $DOCKERHUB_DOCKEFILE; then
sudo apt update sudo apt update
sudo apt install -y qemu qemu-user-static qemu-user binfmt-support 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" echo "Skipping linuxarm32v7 because $DOCKERHUB_DOCKEFILE is not found"
fi fi
publish_multiarch: publish_multiarch:
machine: docker:
enabled: true - image: cimg/base:stable
image: circleci/classic:201808-01
steps: steps:
- checkout - checkout
- setup_remote_docker:
version: 20.10.7
- run: - run:
command: | command: |
# Turn on Experimental features # Turn on Experimental features
sudo mkdir $HOME/.docker ssh remote-docker <<EOF
sudo sh -c 'echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json' sudo bash -c 'echo "{\"experimental\": true}" > /etc/docker/daemon.json'
sudo systemctl restart docker
EOF
source ".circleci/parse-tag.sh" 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="" IMAGES=""
if [ -f $DOCKERHUB_DOCKEFILE_AMD64 ]; then if [ -f $DOCKERHUB_DOCKEFILE_AMD64 ]; then
IMAGES="$IMAGES $DOCKERHUB_DESTINATION-amd64" IMAGES="$IMAGES $DOCKERHUB_DESTINATION-amd64"
@ -106,15 +117,15 @@ jobs:
else else
sudo docker manifest create --amend $DOCKERHUB_DESTINATION $IMAGES sudo docker manifest create --amend $DOCKERHUB_DESTINATION $IMAGES
if [ -f $DOCKERHUB_DOCKEFILE_AMD64 ]; then 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 fi
if [ -f $DOCKERHUB_DOCKEFILE_ARM32 ]; then 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 fi
if [ -f $DOCKERHUB_DOCKEFILE_ARM64 ]; then 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 fi
sudo docker manifest push $DOCKERHUB_DESTINATION -p sudo docker $DOCKER_OPTIONS manifest push $DOCKERHUB_DESTINATION -p
fi fi
workflows: workflows:

View File

@ -28,6 +28,8 @@ DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG"
DOCKERHUB_DOCKEFILE_ARM64="$NODE_NAME/$NODE_VERSION/linuxarm64v8.Dockerfile" DOCKERHUB_DOCKEFILE_ARM64="$NODE_NAME/$NODE_VERSION/linuxarm64v8.Dockerfile"
DOCKERHUB_DOCKEFILE_ARM32="$NODE_NAME/$NODE_VERSION/linuxarm32v7.Dockerfile" DOCKERHUB_DOCKEFILE_ARM32="$NODE_NAME/$NODE_VERSION/linuxarm32v7.Dockerfile"
DOCKERHUB_DOCKEFILE_AMD64="$NODE_NAME/$NODE_VERSION/linuxamd64.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 "LATEST_TAG=$LATEST_TAG"
echo "NODE_VERSION=$NODE_VERSION" echo "NODE_VERSION=$NODE_VERSION"

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
echo "Pushing $DOCKERHUB_DOCKEFILE to dockerhub repository $DOCKERHUB_DESTINATION" echo "Pushing $DOCKERHUB_DOCKEFILE to dockerhub repository $DOCKERHUB_DESTINATION"
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker $DOCKER_OPTIONS login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker build --pull -t $DOCKERHUB_DESTINATION -f "$DOCKERHUB_DOCKEFILE" "$NODE_NAME/$NODE_VERSION" sudo docker $DOCKER_OPTIONS build --pull -t $DOCKERHUB_DESTINATION -f "$DOCKERHUB_DOCKEFILE" "$NODE_NAME/$NODE_VERSION"
sudo docker push $DOCKERHUB_DESTINATION 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 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 # Postgres doesn't ship packages for 9.6
ENV PREVIOUS_VERSION 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 FROM --platform=arm64 postgres:13.4
COPY --from=downloader /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static
ENV PREVIOUS_VERSION 9.6 ENV PREVIOUS_VERSION 9.6
RUN cp /etc/apt/sources.list.d/pgdg.list /etc/apt/sources.list.d/pgdg.list.backup && \ 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 [[ "$CURRENT_PGVERSION" != "" ]]; then
if ! [ -f "/usr/lib/postgresql/$CURRENT_PGVERSION/bin/pg_upgrade" ]; 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 sed -i "s/$/ $CURRENT_PGVERSION/" /etc/apt/sources.list.d/pgdg.list
if ! apt-get update; then 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/" 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/"