From e74d5e7c2315fe3f7114e137d809ca353611b940 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Sun, 30 Mar 2025 18:50:57 +0200 Subject: [PATCH] Server: Trying to build ARM64 Docker image --- .github/scripts/publish_docker_manifest.sh | 19 +++++++++++++++++++ .github/workflows/github-actions-main.yml | 8 ++++++++ packages/tools/buildServerDocker.ts | 3 ++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 .github/scripts/publish_docker_manifest.sh diff --git a/.github/scripts/publish_docker_manifest.sh b/.github/scripts/publish_docker_manifest.sh new file mode 100644 index 0000000000..f4803fb25b --- /dev/null +++ b/.github/scripts/publish_docker_manifest.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +echo "GIT_TAG_NAME=$GIT_TAG_NAME" +echo "SERVER_TAG_PREFIX=$SERVER_TAG_PREFIX" +echo "SERVER_REPOSITORY=$SERVER_REPOSITORY" + +# Check if it's a server release, otherwise exit +if [[ $GIT_TAG_NAME != $SERVER_TAG_PREFIX-* ]]; then + exit 0 +fi + +docker manifest create $SERVER_REPOSITORY:$GIT_TAG_NAME \ + $SERVER_REPOSITORY:arm64-$GIT_TAG_NAME \ + $SERVER_REPOSITORY:amd64-$GIT_TAG_NAME + +docker manifest annotate $SERVER_REPOSITORY:$GIT_TAG_NAME $SERVER_REPOSITORY:arm64-$GIT_TAG_NAME --arch arm64 +docker manifest annotate $SERVER_REPOSITORY:$GIT_TAG_NAME $SERVER_REPOSITORY:amd64-$GIT_TAG_NAME --arch amd64 + +docker manifest push $SERVER_REPOSITORY:$GIT_TAG_NAME diff --git a/.github/workflows/github-actions-main.yml b/.github/workflows/github-actions-main.yml index 937fd2e85a..60d9bc217c 100644 --- a/.github/workflows/github-actions-main.yml +++ b/.github/workflows/github-actions-main.yml @@ -84,6 +84,14 @@ jobs: run: | yarn install && cd packages/app-desktop && yarn dist --publish=never + - name: Publish Docker manifest + if: runner.os == 'Linux' + env: + SERVER_REPOSITORY: joplin/server + SERVER_TAG_PREFIX: server + run: | + "${GITHUB_WORKSPACE}/.github/scripts/publish_docker_manifest.sh" + ServerDockerImage: if: github.repository == 'laurent22/joplin' runs-on: ${{ matrix.os }} diff --git a/packages/tools/buildServerDocker.ts b/packages/tools/buildServerDocker.ts index 0e35bc4750..ce92341ed2 100644 --- a/packages/tools/buildServerDocker.ts +++ b/packages/tools/buildServerDocker.ts @@ -87,6 +87,7 @@ async function main() { const tagName = argv.tagName || `server-${await execCommand('git describe --tags --match v*', { showStdout: false })}`; const platform = argv.platform; const source = argv.source; + const architecture = argv.platform.split('/')[1]; const isPreRelease = getIsPreRelease(tagName); const imageVersion = getVersionFromTag(tagName, isPreRelease); @@ -132,7 +133,7 @@ async function main() { const cliArgs = ['--progress=plain']; cliArgs.push(`--platform ${platform}`); - cliArgs.push(...dockerTags.map(tag => `--tag "${repository}:${tag}"`)); + cliArgs.push(...dockerTags.map(tag => `--tag "${repository}:${architecture}-${tag}"`)); cliArgs.push(...buildArgs.map(arg => `--build-arg ${arg}`)); if (pushImages) { cliArgs.push('--push');