From 0e8e90672a3bcbfa9d3bd3285f5ea996a2c4836e Mon Sep 17 00:00:00 2001 From: Yuzu Date: Tue, 16 Jun 2026 00:35:56 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=B7=20ci:=20Add=20dynamic=20versioning?= =?UTF-8?q?=20for=20build=20artifacts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 11 +++--- electron-builder.yml | 42 ---------------------- electronBuilder.js | 72 +++++++++++++++++++++++++++++++++++++ package.json | 9 ++--- 4 files changed, 83 insertions(+), 51 deletions(-) delete mode 100644 electron-builder.yml create mode 100644 electronBuilder.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcdafff..849d31d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,6 @@ on: tags: - 'v*' pull_request: - workflow_dispatch: jobs: build: @@ -41,9 +40,6 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Build - run: pnpm ${{ matrix.build-script }} - - name: Set artifact version id: version shell: bash @@ -54,8 +50,13 @@ jobs: echo "value=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" fi + - name: Build + env: + BUILD_VERSION: ${{ steps.version.outputs.value }} + run: pnpm ${{ matrix.build-script }} + - name: Upload artifacts - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: ${{ matrix.os }}-${{ steps.version.outputs.value }} path: | diff --git a/electron-builder.yml b/electron-builder.yml deleted file mode 100644 index 3bf7a50..0000000 --- a/electron-builder.yml +++ /dev/null @@ -1,42 +0,0 @@ -appId: cafe.kirameki.discord-rpc-relay -productName: Discord RPC Relay -directories: - buildResources: build -files: - - '!**/.vscode/*' - - '!src/*' - - '!electron.vite.config.{js,ts,mjs,cjs}' - - '!{.eslintcache,eslint.config.mjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' - - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}' - - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' -asarUnpack: - - resources/** -win: - executableName: discord-rpc-relay -nsis: - artifactName: ${name}-${version}-setup.${ext} - shortcutName: ${productName} - uninstallDisplayName: ${productName} - createDesktopShortcut: always -mac: - entitlementsInherit: build/entitlements.mac.plist - extendInfo: - - NSCameraUsageDescription: Application requests access to the device's camera. - - NSMicrophoneUsageDescription: Application requests access to the device's microphone. - - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder. - - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder. - notarize: false -dmg: - artifactName: ${name}-${version}.${ext} -linux: - target: - - AppImage - - deb - maintainer: electronjs.org - category: Utility -appImage: - artifactName: ${name}-${version}.${ext} -npmRebuild: false -publish: - provider: generic - url: https://example.com/auto-updates diff --git a/electronBuilder.js b/electronBuilder.js new file mode 100644 index 0000000..693dc87 --- /dev/null +++ b/electronBuilder.js @@ -0,0 +1,72 @@ +const { execSync } = require('child_process') + +function getBuildVersion() { + if (process.env.BUILD_VERSION) return process.env.BUILD_VERSION + try { + return execSync('git rev-parse --short HEAD').toString().trim() + } catch { + return 'unknown' + } +} + +process.env.BUILD_VERSION = getBuildVersion() + +/** + * @type {import('electron-builder').Configuration} + */ +module.exports = { + appId: 'cafe.kirameki.discord-rpc-relay', + productName: 'Discord RPC Relay', + directories: { + buildResources: 'build' + }, + files: [ + '!**/.vscode/*', + '!src/*', + '!electron.vite.config.{js,ts,mjs,cjs}', + '!electronBuilder.js', + '!{.eslintcache,eslint.config.mjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}', + '!{.env,.env.*,.npmrc,pnpm-lock.yaml}', + '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' + ], + asarUnpack: ['resources/**'], + win: { + executableName: 'discord-rpc-relay' + }, + nsis: { + artifactName: '${name}-${env.BUILD_VERSION}-setup.${ext}', + shortcutName: '${productName}', + uninstallDisplayName: '${productName}', + createDesktopShortcut: 'always' + }, + mac: { + entitlementsInherit: 'build/entitlements.mac.plist', + extendInfo: [ + { NSCameraUsageDescription: "Application requests access to the device's camera." }, + { NSMicrophoneUsageDescription: "Application requests access to the device's microphone." }, + { + NSDocumentsFolderUsageDescription: + "Application requests access to the user's Documents folder." + }, + { + NSDownloadsFolderUsageDescription: + "Application requests access to the user's Downloads folder." + } + ], + notarize: false + }, + dmg: { + artifactName: '${name}-${env.BUILD_VERSION}.${ext}' + }, + linux: { + target: ['AppImage', 'deb'], + maintainer: 'electronjs.org', + category: 'Utility', + artifactName: '${name}-${env.BUILD_VERSION}.${ext}' + }, + npmRebuild: false, + publish: { + provider: 'generic', + url: 'https://example.com/auto-updates' + } +} diff --git a/package.json b/package.json index c753f86..3e4464b 100644 --- a/package.json +++ b/package.json @@ -16,10 +16,10 @@ "dev": "electron-vite dev", "build": "npm run typecheck && electron-vite build", "postinstall": "electron-builder install-app-deps", - "build:unpack": "npm run build && electron-builder --dir", - "build:win": "npm run build && electron-builder --win", - "build:mac": "npm run build && electron-builder --mac", - "build:linux": "npm run build && electron-builder --linux" + "build:unpack": "npm run build && electron-builder --config electronBuilder.js --dir", + "build:win": "npm run build && electron-builder --config electronBuilder.js --win", + "build:mac": "npm run build && electron-builder --config electronBuilder.js --mac", + "build:linux": "npm run build && electron-builder --config electronBuilder.js --linux" }, "dependencies": { "@electron-toolkit/preload": "^3.0.2", @@ -50,6 +50,7 @@ "pnpm": { "onlyBuiltDependencies": [ "electron", + "electron-winstaller", "esbuild", "koffi" ]