From c07954f2b83956bb46328db1f6f79849a7610907 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 12 Nov 2022 14:43:29 +0100 Subject: [PATCH] feat(ci): use docker buildx for multiarch builds --- .drone.yml | 230 ++++++---------------------------- Dockerfile | 2 +- docker-manifest-unstable.tmpl | 17 --- docker-manifest.tmpl | 23 ---- 4 files changed, 41 insertions(+), 231 deletions(-) delete mode 100644 docker-manifest-unstable.tmpl delete mode 100644 docker-manifest.tmpl diff --git a/.drone.yml b/.drone.yml index 046754b028..e6982e971c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -342,111 +342,7 @@ steps: --- kind: pipeline type: docker -name: docker-arm-release - -depends_on: - - release-latest - - release-version - -platform: - os: linux - arch: arm64 - -trigger: - ref: - - refs/heads/main - - "refs/tags/**" - event: - exclude: - - cron - -steps: - - name: docker-unstable - image: plugins/docker:linux-arm - pull: always - settings: - username: - from_secret: docker_username - password: - from_secret: docker_password - repo: vikunja/frontend - tags: unstable-linux-arm - build_args: - - USE_RELEASE=true - - RELEASE_VERSION=unstable - when: - ref: - - refs/heads/main - depends_on: - - clone - - - name: docker-version - image: plugins/docker:linux-arm - pull: always - settings: - username: - from_secret: docker_username - password: - from_secret: docker_password - repo: vikunja/frontend - auto_tag: true - auto_tag_suffix: linux-arm - build_args: - - USE_RELEASE=true - - RELEASE_VERSION=${DRONE_TAG##v} - when: - ref: - - "refs/tags/**" - depends_on: - - clone - - - name: docker-unstable-arm64 - image: plugins/docker:linux-arm64 - pull: always - settings: - username: - from_secret: docker_username - password: - from_secret: docker_password - repo: vikunja/frontend - tags: unstable-linux-arm64 - build_args: - - USE_RELEASE=true - - RELEASE_VERSION=unstable - when: - ref: - - refs/heads/main - depends_on: - - clone - - - name: docker-version-arm64 - image: plugins/docker:linux-arm64 - pull: always - settings: - username: - from_secret: docker_username - password: - from_secret: docker_password - repo: vikunja/frontend - auto_tag: true - auto_tag_suffix: linux-arm64 - build_args: - - USE_RELEASE=true - - RELEASE_VERSION=${DRONE_TAG##v} - when: - ref: - - "refs/tags/**" - depends_on: - - clone - ---- -kind: pipeline -type: docker -name: docker-amd64-release - -platform: - os: linux - arch: amd64 +name: docker-release depends_on: - release-latest @@ -461,101 +357,57 @@ trigger: - cron steps: + - name: fetch-tags + image: docker:git + commands: + - git fetch --tags + - name: docker-unstable - image: plugins/docker:linux-amd64 - pull: always + image: thegeeklab/drone-docker-buildx + privileged: true + pull: true settings: username: from_secret: docker_username password: from_secret: docker_password repo: vikunja/frontend - tags: unstable-linux-amd64 - build_args: - - USE_RELEASE=true - - RELEASE_VERSION=unstable - when: - ref: - - refs/heads/main - - - name: docker-version - image: plugins/docker:linux-amd64 - pull: always - settings: - username: - from_secret: docker_username - password: - from_secret: docker_password - repo: vikunja/frontend - auto_tag: true - auto_tag_suffix: linux-amd64 - build_args: - - USE_RELEASE=true - - RELEASE_VERSION=${DRONE_TAG##v} - when: - ref: - - "refs/tags/**" - ---- -kind: pipeline -type: docker -name: docker-manifest - -trigger: - ref: - - refs/heads/main - - "refs/tags/**" - event: - exclude: - - cron - -depends_on: - - docker-amd64-release - - docker-arm-release - -steps: - - name: manifest-unstable - pull: always - image: plugins/manifest - settings: tags: unstable - spec: docker-manifest-unstable.tmpl - password: - from_secret: docker_password - username: - from_secret: docker_username + build_args: + - USE_RELEASE=true + - RELEASE_VERSION=unstable + platforms: + - linux/386 + - linux/amd64 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64/v8 + depends_on: [ fetch-tags ] when: ref: - refs/heads/main - - name: manifest-release - pull: always - image: plugins/manifest + - name: docker-release + image: thegeeklab/drone-docker-buildx + privileged: true + pull: true settings: + username: + from_secret: docker_username + password: + from_secret: docker_password + repo: vikunja/frontend auto_tag: true - ignore_missing: true - spec: docker-manifest.tmpl - password: - from_secret: docker_password - username: - from_secret: docker_username - when: - ref: - - "refs/tags/**" - - - name: manifest-release-latest - pull: always - image: plugins/manifest - depends_on: - - clone - settings: - tags: latest - ignore_missing: true - spec: docker-manifest.tmpl - password: - from_secret: docker_password - username: - from_secret: docker_username + build_args: + - USE_RELEASE=true + - RELEASE_VERSION=${DRONE_TAG##v} + platforms: + - linux/386 + - linux/amd64 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64/v8 + depends_on: [ fetch-tags ] when: ref: - "refs/tags/**" @@ -578,9 +430,7 @@ depends_on: - release-version - release-latest - trigger-desktop-update - - docker-arm-release - - docker-amd64-release - - docker-manifest + - docker-release steps: - name: notify @@ -663,6 +513,6 @@ steps: from_secret: crowdin_key --- kind: signature -hmac: 6784e836f6568c67abfb909449c6e845cc73cbe9a31e9e7ad9166a0eb59e30a2 +hmac: 9f26b5af73e3464e9ee1b5fbcb96854ca8a7e5f8d6ee2d85fd8376aad951b446 ... diff --git a/Dockerfile b/Dockerfile index 332949fae8..e843188b04 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Build application -FROM node:18-alpine AS compile-image +FROM --platform=$BUILDPLATFORM node:18-alpine AS compile-image WORKDIR /build diff --git a/docker-manifest-unstable.tmpl b/docker-manifest-unstable.tmpl deleted file mode 100644 index 10ded1e165..0000000000 --- a/docker-manifest-unstable.tmpl +++ /dev/null @@ -1,17 +0,0 @@ -image: vikunja/frontend:unstable -manifests: - - - image: vikunja/frontend:unstable-linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: vikunja/frontend:unstable-linux-arm64 - platform: - architecture: arm64 - os: linux - - - image: vikunja/frontend:unstable-linux-arm - platform: - architecture: arm - os: linux diff --git a/docker-manifest.tmpl b/docker-manifest.tmpl deleted file mode 100644 index d12a955252..0000000000 --- a/docker-manifest.tmpl +++ /dev/null @@ -1,23 +0,0 @@ -image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - - image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 - platform: - architecture: arm64 - os: linux - - - image: vikunja/frontend:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm - platform: - architecture: arm - os: linux