From 0d11f5bae90dcb7d6f193c20be50c926377d152f Mon Sep 17 00:00:00 2001 From: Sebastian Pekarek Date: Sun, 3 Mar 2024 15:48:10 +0100 Subject: [PATCH] ci: Use @sebbo2002/semantic-release-docker instead of bash script --- .github/workflows/release-publish.sh | 42 ----- .github/workflows/release.yml | 7 +- package-lock.json | 239 ++++++++++++++++++++++++++- package.json | 1 + release.config.js | 8 +- 5 files changed, 249 insertions(+), 48 deletions(-) delete mode 100755 .github/workflows/release-publish.sh diff --git a/.github/workflows/release-publish.sh b/.github/workflows/release-publish.sh deleted file mode 100755 index da05938..0000000 --- a/.github/workflows/release-publish.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash - -if [[ "${BRANCH}" == "main" ]] -then - DOCKER_TAG="latest" -else - DOCKER_TAG="next" -fi - - -docker manifest create "ubud/server:${VERSION}" \ - "ubud/server:${VERSION}-x86_64" \ - "ubud/server:${VERSION}-arm64" \ - "ubud/server:${VERSION}-aarch64" \ - "ubud/server:${VERSION}-amd64" \ - "ubud/server:${VERSION}-armhf" \ - "ubud/server:${VERSION}-i386" - -docker manifest create "ubud/server:${DOCKER_TAG}" \ - "ubud/server:${VERSION}-x86_64" \ - "ubud/server:${VERSION}-arm64" \ - "ubud/server:${VERSION}-aarch64" \ - "ubud/server:${VERSION}-amd64" \ - "ubud/server:${VERSION}-armhf" \ - "ubud/server:${VERSION}-i386" - -docker manifest annotate --arch "amd64" --os "linux" "ubud/server:${DOCKER_TAG}" --variant "x86_64" "ubud/server:${VERSION}-x86_64" -docker manifest annotate --arch "arm64" --os "linux" "ubud/server:${DOCKER_TAG}" "ubud/server:${VERSION}-arm64" -docker manifest annotate --arch "arm64" --os "linux" "ubud/server:${DOCKER_TAG}" --variant "aarch64" "ubud/server:${VERSION}-aarch64" -docker manifest annotate --arch "amd64" --os "linux" "ubud/server:${DOCKER_TAG}" "ubud/server:${VERSION}-amd64" -docker manifest annotate --arch "arm" --os "linux" "ubud/server:${DOCKER_TAG}" "ubud/server:${VERSION}-armhf" -docker manifest annotate --arch "386" --os "linux" "ubud/server:${DOCKER_TAG}" "ubud/server:${VERSION}-i386" - -docker manifest annotate --arch "amd64" --os "linux" "ubud/server:${VERSION}" --variant "x86_64" "ubud/server:${VERSION}-x86_64" -docker manifest annotate --arch "arm64" --os "linux" "ubud/server:${VERSION}" "ubud/server:${VERSION}-arm64" -docker manifest annotate --arch "arm64" --os "linux" "ubud/server:${VERSION}" --variant "aarch64" "ubud/server:${VERSION}-aarch64" -docker manifest annotate --arch "amd64" --os "linux" "ubud/server:${VERSION}" "ubud/server:${VERSION}-amd64" -docker manifest annotate --arch "arm" --os "linux" "ubud/server:${VERSION}" "ubud/server:${VERSION}-armhf" -docker manifest annotate --arch "386" --os "linux" "ubud/server:${VERSION}" "ubud/server:${VERSION}-i386" - -docker manifest push -p "ubud/server:${VERSION}" -docker manifest push -p "ubud/server:${DOCKER_TAG}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 420bd58..e6f058d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -85,7 +85,7 @@ jobs: context: . github-token: ${{ secrets.GITHUB_TOKEN }} builder: ${{ steps.buildx.outputs.name }} - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64,linux/arm64,linux/i386 pull: true push: true tags: | @@ -114,7 +114,7 @@ jobs: context: . github-token: ${{ secrets.GITHUB_TOKEN }} builder: ${{ steps.buildx.outputs.name }} - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64,linux/arm64,linux/i386 push: true tags: ubud/server:${{ github.sha }} labels: | @@ -167,12 +167,13 @@ jobs: - name: semantic-release run: BRANCH=${GITHUB_REF#refs/heads/} npx semantic-release env: - DOCKER_CLI_EXPERIMENTAL: enabled NPM_TOKEN: ${{ secrets.NPM_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_ORG: ubud SENTRY_PROJECT: server SENTRY_URL: ${{ secrets.SENTRY_URL }} + DOCKER_LOCAL_IMAGE_DH: ubud/server:${{ github.sha }} + DOCKER_LOCAL_IMAGE_GH: ghcr.io/${{ github.repository }}:${{ github.sha }} NOTIFY_WEBHOOK_SECRET: ${{ secrets.NOTIFY_WEBHOOK_SECRET }} GH_TOKEN: ${{ secrets.GH_TOKEN }} MICROBADGER_WEBHOOK_SECRET: ${{ secrets.MICROBADGER_WEBHOOK_SECRET }} diff --git a/package-lock.json b/package-lock.json index e5b8334..facab8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,7 @@ "ubud-user": "bin/user" }, "devDependencies": { + "@sebbo2002/semantic-release-docker": "^4.0.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", @@ -1127,6 +1128,152 @@ "node": ">=0.1.90" } }, + "node_modules/@sebbo2002/semantic-release-docker": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@sebbo2002/semantic-release-docker/-/semantic-release-docker-4.0.2.tgz", + "integrity": "sha512-knfqJTX1kMWTL8muVp56KxOyCt/ZoMaJ+81cGkjBm4UmzlZl2tjLnq++NegSD1WCZCKNDTlKheZl34OtJ8/v4g==", + "dev": true, + "dependencies": { + "execa": "^8.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sebbo2002/semantic-release-docker/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/changelog": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", @@ -4537,7 +4684,7 @@ "node_modules/glob": { "version": "6.0.4", "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "devOptional": true, + "optional": true, "dependencies": { "inflight": "^1.0.4", "inherits": "2", @@ -13126,6 +13273,94 @@ } } }, + "@sebbo2002/semantic-release-docker": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@sebbo2002/semantic-release-docker/-/semantic-release-docker-4.0.2.tgz", + "integrity": "sha512-knfqJTX1kMWTL8muVp56KxOyCt/ZoMaJ+81cGkjBm4UmzlZl2tjLnq++NegSD1WCZCKNDTlKheZl34OtJ8/v4g==", + "dev": true, + "requires": { + "execa": "^8.0.1" + }, + "dependencies": { + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true + }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, "@semantic-release/changelog": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", @@ -15613,7 +15848,7 @@ "glob": { "version": "6.0.4", "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "devOptional": true, + "optional": true, "requires": { "inflight": "^1.0.4", "inherits": "2", diff --git a/package.json b/package.json index 16c6407..37e3bf7 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "ofx": "^0.4.0" }, "devDependencies": { + "@sebbo2002/semantic-release-docker": "^4.0.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", diff --git a/release.config.js b/release.config.js index 13c57f9..4a6ab30 100644 --- a/release.config.js +++ b/release.config.js @@ -23,7 +23,6 @@ const plugins = [ '@semantic-release/changelog', ['@semantic-release/exec', { prepareCmd: 'VERSION=${nextRelease.version} BRANCH=${options.branch} ./.github/workflows/release-prepare.sh', - publishCmd: 'VERSION=${nextRelease.version} BRANCH=${options.branch} ./.github/workflows/release-publish.sh', successCmd: 'VERSION=${nextRelease.version} BRANCH=${options.branch} ./.github/workflows/release-success.sh' }], '@semantic-release/npm', @@ -38,6 +37,13 @@ if (process.env.BRANCH === 'main') { }]); } +plugins.push(['@sebbo2002/semantic-release-docker', { + images: [ + process.env.DOCKER_LOCAL_IMAGE_DH, + process.env.DOCKER_LOCAL_IMAGE_GH + ] +}]); + module.exports = { branches: [ {