From 9f441d226b2c72831a9d42aab90fad63982f0a49 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 3 Jun 2024 23:29:34 +0900 Subject: [PATCH] Add buildx support to circleci --- .circleci/config.yml | 19 +++++++++++++++++++ .circleci/parse-tag.sh | 1 + .circleci/push-image-buildx.sh | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 .circleci/push-image-buildx.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 7d0d030..64ec9b1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,6 +15,24 @@ jobs: version: 20.10.18 # publish jobs require $DOCKERHUB_USER, $DOCKERHUB_PASS defined + publish_buildx: + docker: + - image: cimg/base:stable + steps: + - checkout + - setup_remote_docker: + version: 20.10.18 + - run: + command: | + source ".circleci/parse-tag.sh" + DOCKERHUB_DOCKEFILE="$DOCKERHUB_DOCKEFILE_BUILDX" + DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG" + if [ -f $DOCKERHUB_DOCKEFILE ]; then + source ".circleci/push-image-buildx.sh" + else + echo "Skipping linuxamd64 because $DOCKERHUB_DOCKEFILE_BUILDX is not found" + fi + publish_linuxamd64: docker: - image: cimg/base:stable @@ -153,6 +171,7 @@ workflows: - publish_linuxamd64 - publish_linuxarm32v7 - publish_linuxarm64v8 + - publish_buildx filters: branches: ignore: /.*/ diff --git a/.circleci/parse-tag.sh b/.circleci/parse-tag.sh index 498a275..8e02d35 100755 --- a/.circleci/parse-tag.sh +++ b/.circleci/parse-tag.sh @@ -28,6 +28,7 @@ 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" +DOCKERHUB_DOCKEFILE_BUILDX="$NODE_NAME/$NODE_VERSION/Dockerfile" DOCKER_OPTIONS="-H=$DOCKER_HOST" diff --git a/.circleci/push-image-buildx.sh b/.circleci/push-image-buildx.sh new file mode 100644 index 0000000..d603da4 --- /dev/null +++ b/.circleci/push-image-buildx.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "Pushing $DOCKERHUB_DOCKEFILE to dockerhub repository $DOCKERHUB_DESTINATION" +sudo docker $DOCKER_OPTIONS login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS +sudo docker buildx create --use +DOCKER_BUILDX_OPTS="--platform linux/amd64,linux/arm64,linux/arm/v7 --push" +sudo docker buildx build $DOCKER_BUILDX_OPTS \ + -f "$DOCKERHUB_DOCKEFILE" \ + -t $DOCKERHUB_DESTINATION \ + "$NODE_NAME/$NODE_VERSION"