From 9fbf095225cac1209d8fa0a21cc60a79d04b5734 Mon Sep 17 00:00:00 2001 From: Umputun Date: Tue, 21 Sep 2021 01:43:21 -0500 Subject: [PATCH] add multi-arch docker build --- .drone.yml | 86 ---------------------------------- .github/workflows/ci-build.yml | 56 +++++++++++++++++++++- 2 files changed, 54 insertions(+), 88 deletions(-) delete mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index ffeffd19..00000000 --- a/.drone.yml +++ /dev/null @@ -1,86 +0,0 @@ -kind: pipeline -name: default -type: docker - -steps: - - - name: build server - image: umputun/baseimage:buildgo-latest - commands: - - cd backend/app - - go build -mod=vendor - - echo "build completed" - - - name: docker master - image: plugins/docker - settings: - repo: umputun/remark42 - username: - from_secret: docker_username - password: - from_secret: docker_password - build_args: - - DRONE=${DRONE} - - DRONE_TAG=${DRONE_TAG} - - DRONE_COMMIT=${DRONE_COMMIT} - - DRONE_BRANCH=${DRONE_BRANCH} - tags: - - ${DRONE_COMMIT_BRANCH/\//-} - when: - branch: [master] - event: push - - - name: docker tag - image: plugins/docker - settings: - repo: umputun/remark42 - username: - from_secret: docker_username - password: - from_secret: docker_password - build_args: - - DRONE=${DRONE} - - DRONE_TAG=${DRONE_TAG} - - DRONE_COMMIT=${DRONE_COMMIT} - tags: - - ${DRONE_TAG} - - latest - when: - event: tag - - - - name: artifacts tag - image: plugins/docker - settings: - dockerfile: Dockerfile.artifacts - build_args: - - DRONE=${DRONE} - - DRONE_TAG=${DRONE_TAG} - - DRONE_COMMIT=${DRONE_COMMIT} - - GITHUB_TOKEN=${GITHUB_TOKEN} - when: - event: tag - - - name: deploy - image: docker.umputun.com/system/deploy-ci:master - commands: - - ssh umputun@remark42.com "cd /srv && docker-compose pull" - - ssh umputun@remark42.com "cd /srv && docker-compose up -d remark42" -# - ssh umputun@remark42.com "cd /srv/remark-site && git pull && git submodule update --recursive --remote" -# - ssh umputun@remark42.com "cd /srv/remark-site && docker-compose build && docker-compose up" - when: - branch: master - event: push - - - name: notify - image: drillster/drone-email - settings: - host: smtp.mailgun.org - username: - from_secret: email_username - password: - from_secret: email_password - from: drone@mg.umputun.dev - recipients: [ sys@umputun.dev ] - when: - status: [ changed, failure ] diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 7b4e16a3..e9a5a944 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -29,5 +29,57 @@ jobs: steps: - uses: actions/checkout@v2 - - name: build docker image - run: docker build --build-arg SKIP_BACKEND_TEST=true --build-arg SKIP_FRONTEND_TEST=true --build-arg CI=github . + - name: set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + + - name: build and deploy master image to ghcr.io and dockerhub + if: ${{ github.ref == 'refs/heads/master' }} + env: + GITHUB_PACKAGE_TOKEN: ${{ secrets.PKG_TOKEN }} + DOCKER_HUB_TOKEN: ${{ secrets.DOCKER_HUB_TOKEN }} + USERNAME: ${{ github.actor }} + GITHUB_SHA: ${{ github.sha}} + GITHUB_REF: ${{ github.ref}} + run: | + ref="$(echo ${GITHUB_REF} | cut -d'/' -f3)" + echo GITHUB_REF - $ref + echo ${GITHUB_PACKAGE_TOKEN} | docker login ghcr.io -u ${USERNAME} --password-stdin + echo ${DOCKER_HUB_TOKEN} | docker login -u ${USERNAME} --password-stdin + docker buildx build --push \ + --build-arg SKIP_BACKEND_TEST=true --build-arg SKIP_FRONTEND_TEST=true --build-arg CI=github \ + --build-arg GITHUB_SHA=${GITHUB_SHA} --build-arg GIT_BRANCH=${ref} \ + --platform linux/amd64,linux/arm/v7,linux/arm64 \ + -t ghcr.io/${USERNAME}/remark42:${ref} -t ${USERNAME}/remark42:${ref} . + + - name: deploy tagged (latest) to ghcr.io and dockerhub + if: ${{ startsWith(github.ref, 'refs/tags/') }} + env: + GITHUB_PACKAGE_TOKEN: ${{ secrets.PKG_TOKEN }} + DOCKER_HUB_TOKEN: ${{ secrets.DOCKER_HUB_TOKEN }} + USERNAME: ${{ github.actor }} + GITHUB_SHA: ${{ github.sha}} + GITHUB_REF: ${{ github.ref}} + run: | + ref="$(echo ${GITHUB_REF} | cut -d'/' -f3)" + echo GITHUB_REF - $ref + echo ${GITHUB_PACKAGE_TOKEN} | docker login ghcr.io -u ${USERNAME} --password-stdin + echo ${DOCKER_HUB_TOKEN} | docker login -u ${USERNAME} --password-stdin + docker buildx build --push \ + --build-arg SKIP_BACKEND_TEST=true --build-arg SKIP_FRONTEND_TEST=true \ + --build-arg CI=github --build-arg GITHUB_SHA=${GITHUB_SHA} --build-arg GIT_BRANCH=${ref} \ + --platform linux/amd64,linux/arm/v7,linux/arm64 \ + -t ghcr.io/${USERNAME}/remark42:${ref} -t ghcr.io/${USERNAME}/remark42:latest \ + -t ${USERNAME}/remark42:${ref} -t ${USERNAME}/remark42:latest . + + - name: remote deployment to remark42.com from master + if: ${{ github.ref == 'refs/heads/master' }} + env: + UPDATER_KEY: ${{ secrets.UPDATER_KEY }} + run: curl https://jess.umputun.com/update/remark42-core/${UPDATER_KEY}