👷 ci: Add dynamic versioning for build artifacts

This commit is contained in:
2026-06-16 00:46:02 +07:00
parent 2f8a2cb56d
commit 0e8e90672a
4 changed files with 83 additions and 51 deletions
+6 -5
View File
@@ -7,7 +7,6 @@ on:
tags: tags:
- 'v*' - 'v*'
pull_request: pull_request:
workflow_dispatch:
jobs: jobs:
build: build:
@@ -41,9 +40,6 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: pnpm install --frozen-lockfile run: pnpm install --frozen-lockfile
- name: Build
run: pnpm ${{ matrix.build-script }}
- name: Set artifact version - name: Set artifact version
id: version id: version
shell: bash shell: bash
@@ -54,8 +50,13 @@ jobs:
echo "value=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" echo "value=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
fi fi
- name: Build
env:
BUILD_VERSION: ${{ steps.version.outputs.value }}
run: pnpm ${{ matrix.build-script }}
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v5 uses: actions/upload-artifact@v6
with: with:
name: ${{ matrix.os }}-${{ steps.version.outputs.value }} name: ${{ matrix.os }}-${{ steps.version.outputs.value }}
path: | path: |
-42
View File
@@ -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
+72
View File
@@ -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'
}
}
+5 -4
View File
@@ -16,10 +16,10 @@
"dev": "electron-vite dev", "dev": "electron-vite dev",
"build": "npm run typecheck && electron-vite build", "build": "npm run typecheck && electron-vite build",
"postinstall": "electron-builder install-app-deps", "postinstall": "electron-builder install-app-deps",
"build:unpack": "npm run build && electron-builder --dir", "build:unpack": "npm run build && electron-builder --config electronBuilder.js --dir",
"build:win": "npm run build && electron-builder --win", "build:win": "npm run build && electron-builder --config electronBuilder.js --win",
"build:mac": "npm run build && electron-builder --mac", "build:mac": "npm run build && electron-builder --config electronBuilder.js --mac",
"build:linux": "npm run build && electron-builder --linux" "build:linux": "npm run build && electron-builder --config electronBuilder.js --linux"
}, },
"dependencies": { "dependencies": {
"@electron-toolkit/preload": "^3.0.2", "@electron-toolkit/preload": "^3.0.2",
@@ -50,6 +50,7 @@
"pnpm": { "pnpm": {
"onlyBuiltDependencies": [ "onlyBuiltDependencies": [
"electron", "electron",
"electron-winstaller",
"esbuild", "esbuild",
"koffi" "koffi"
] ]