fix(ci): rpm uses aarch64 & x86_64 as convention, which fails the name matching

This commit is contained in:
Neko Ayaka
2025-10-20 15:31:08 +08:00
parent c1a83fa830
commit de15c9d15c
3 changed files with 166 additions and 22 deletions
+24 -8
View File
@@ -5,6 +5,8 @@ permissions:
env:
BUNDLE_NAME: ''
DEB_BUNDLE_NAME: ''
RPM_BUNDLE_NAME: ''
PRODUCT_NAME: 'AIRI'
VERSION: ''
@@ -141,19 +143,26 @@ jobs:
name: ${{ env.BUNDLE_NAME }}
path: apps/stage-tamagotchi/bundle/${{ env.BUNDLE_NAME }}
- name: Get Linux Artifact Names (Nightly + Linux Only)
if: ${{ github.event_name == 'schedule' && (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm') }}
working-directory: ./apps/stage-tamagotchi
run: |
echo "DEB_BUNDLE_NAME=$(pnpm exec tsx scripts/artifacts-metadata.ts ${{ matrix.target }} --get-filename deb)" >> $GITHUB_ENV
echo "RPM_BUNDLE_NAME=$(pnpm exec tsx scripts/artifacts-metadata.ts ${{ matrix.target }} --get-filename rpm)" >> $GITHUB_ENV
- name: Upload Artifacts (Nightly + Linux deb)
if: ${{ github.event_name == 'schedule' && (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm') }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.deb
path: apps/stage-tamagotchi/bundle/${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.deb
name: ${{ env.DEB_BUNDLE_NAME }}
path: apps/stage-tamagotchi/bundle/${{ env.DEB_BUNDLE_NAME }}
- name: Upload Artifacts (Nightly + Linux rpm)
if: ${{ github.event_name == 'schedule' && (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm') }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.rpm
path: apps/stage-tamagotchi/bundle/${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.rpm
name: ${{ env.RPM_BUNDLE_NAME }}
path: apps/stage-tamagotchi/bundle/${{ env.RPM_BUNDLE_NAME }}
# ---------
# Workflow Dispatch only
@@ -183,6 +192,13 @@ jobs:
run: |
pnpm run -F @proj-airi/stage-tamagotchi rename-artifacts ${{ matrix.target }} --release ${{ !inputs.build_only && !inputs.artifacts_only }} --tag ${{ inputs.tag }} --auto-tag ${{ !inputs.build_only }}
- name: Get Linux Artifact Names (Manual + Non-Release + Linux Only)
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.build_only && inputs.artifacts_only && (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm') }}
working-directory: ./apps/stage-tamagotchi
run: |
echo "DEB_BUNDLE_NAME=$(pnpm exec tsx scripts/artifacts-metadata.ts ${{ matrix.target }} --get-filename deb --release ${{ !inputs.build_only && !inputs.artifacts_only }} --tag ${{ inputs.tag }} --auto-tag ${{ !inputs.build_only }})" >> $GITHUB_ENV
echo "RPM_BUNDLE_NAME=$(pnpm exec tsx scripts/artifacts-metadata.ts ${{ matrix.target }} --get-filename rpm --release ${{ !inputs.build_only && !inputs.artifacts_only }} --tag ${{ inputs.tag }} --auto-tag ${{ !inputs.build_only }})" >> $GITHUB_ENV
- name: Upload Artifacts (Manual + Non-Release + Non-Linux)
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.build_only && inputs.artifacts_only && (matrix.os != 'ubuntu-latest' && matrix.os != 'ubuntu-24.04-arm') }}
uses: actions/upload-artifact@v4
@@ -194,15 +210,15 @@ jobs:
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.build_only && inputs.artifacts_only && (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm') }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.deb
path: apps/stage-tamagotchi/bundle/${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.deb
name: ${{ env.DEB_BUNDLE_NAME }}
path: apps/stage-tamagotchi/bundle/${{ env.DEB_BUNDLE_NAME }}
- name: Upload Artifacts (Manual + Non-Release + Linux rpm)
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.build_only && inputs.artifacts_only && (matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm') }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.rpm
path: apps/stage-tamagotchi/bundle/${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-linux-${{ matrix.arch }}.rpm
name: ${{ env.RPM_BUNDLE_NAME }}
path: apps/stage-tamagotchi/bundle/${{ env.RPM_BUNDLE_NAME }}
- name: Upload To GitHub Releases (Manual + Overwrite Release)
if: ${{ github.event_name == 'workflow_dispatch' && !inputs.build_only && !inputs.artifacts_only }}
@@ -11,6 +11,11 @@ async function main() {
'Rename with version from package.json',
{ default: false },
)
.option(
'--get-filename <ext>',
'Get the release artifact filename for a specific extension (e.g., deb, rpm, dmg, exe)',
{ default: '', type: [String] },
)
.option(
'--auto-tag',
'Automatically tag the release with the latest git ref',
@@ -46,6 +51,7 @@ async function main() {
getBundleName: boolean
getProductName: boolean
getVersion: boolean
getFilename: string[]
}
const target = args.args[0]
@@ -53,6 +59,16 @@ async function main() {
const filenames = await getFilenames(target, argOptions)
console.info(filenames[0].releaseArtifactFilename)
}
if (argOptions.getFilename && argOptions.getFilename[0]) {
const ext = String(argOptions.getFilename[0]).trim()
const filenames = await getFilenames(target, argOptions)
const match = filenames.find(f => f.extension === ext)
if (!match) {
console.error(`No artifact found for extension: ${ext}`)
process.exit(1)
}
console.info(match.releaseArtifactFilename)
}
if (argOptions.getProductName) {
const electronBuilderConfig = await getElectronBuilderConfig()
console.info(electronBuilderConfig.productName)
+126 -14
View File
@@ -84,6 +84,34 @@ interface FilenameOutputEntry {
version: string
}
function mapArchFor(
target: string,
ext: string,
): string {
switch (true) {
case target === 'aarch64-unknown-linux-gnu':
if (ext === 'rpm') {
return 'aarch64'
}
return 'arm64'
case target === 'x86_64-unknown-linux-gnu':
if (ext === 'rpm') {
return 'x86_64'
}
return 'x64'
case target === 'aarch64-apple-darwin':
return 'arm64'
case target === 'x86_64-apple-darwin':
return 'x64'
case target === 'x86_64-pc-windows-msvc':
return 'x64'
default:
return 'x64'
}
}
export async function getFilenames(target: string, options: { release: boolean, autoTag: boolean, tag: string[] }): Promise<FilenameOutputEntry[]> {
const electronBuilder = await getElectronBuilderConfig()
const version = await getVersion(options)
@@ -102,8 +130,20 @@ export async function getFilenames(target: string, options: { release: boolean,
{
target: 'x86_64-pc-windows-msvc',
extension: 'exe',
outputFilename: applyTemplateOfArtifactName(electronBuilder.nsis?.artifactName!, productName, beforeVersion, 'x64', 'exe'),
releaseArtifactFilename: applyTemplateOfArtifactName(electronBuilder.nsis?.artifactName!, productName, version, 'x64', 'exe'),
outputFilename: applyTemplateOfArtifactName(
electronBuilder.nsis?.artifactName!,
productName,
beforeVersion,
mapArchFor(target, 'exe'),
'exe',
),
releaseArtifactFilename: applyTemplateOfArtifactName(
electronBuilder.nsis?.artifactName!,
productName,
version,
mapArchFor(target, 'exe'),
'exe',
),
productName,
version,
},
@@ -120,8 +160,20 @@ export async function getFilenames(target: string, options: { release: boolean,
{
target: 'x86_64-unknown-linux-gnu',
extension: 'deb',
outputFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, beforeVersion, 'x64', 'deb'),
releaseArtifactFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, version, 'x64', 'deb'),
outputFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
beforeVersion,
mapArchFor(target, 'deb'),
'deb',
),
releaseArtifactFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
version,
mapArchFor(target, 'deb'),
'deb',
),
productName,
version,
},
@@ -136,8 +188,20 @@ export async function getFilenames(target: string, options: { release: boolean,
{
target: 'x86_64-unknown-linux-gnu',
extension: 'rpm',
outputFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, beforeVersion, 'x64', 'rpm'),
releaseArtifactFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, version, 'x64', 'rpm'),
outputFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
beforeVersion,
mapArchFor(target, 'rpm'),
'rpm',
),
releaseArtifactFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
version,
mapArchFor(target, 'rpm'),
'rpm',
),
productName,
version,
},
@@ -159,8 +223,20 @@ export async function getFilenames(target: string, options: { release: boolean,
{
target: 'aarch64-unknown-linux-gnu',
extension: 'deb',
outputFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, beforeVersion, 'arm64', 'deb'),
releaseArtifactFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, version, 'arm64', 'deb'),
outputFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
beforeVersion,
mapArchFor(target, 'deb'),
'deb',
),
releaseArtifactFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
version,
mapArchFor(target, 'deb'),
'deb',
),
productName,
version,
},
@@ -175,8 +251,20 @@ export async function getFilenames(target: string, options: { release: boolean,
{
target: 'aarch64-unknown-linux-gnu',
extension: 'rpm',
outputFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, beforeVersion, 'arm64', 'rpm'),
releaseArtifactFilename: applyTemplateOfArtifactName(electronBuilder.linux.artifactName!, productName, version, 'arm64', 'rpm'),
outputFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
beforeVersion,
mapArchFor(target, 'rpm'),
'rpm',
),
releaseArtifactFilename: applyTemplateOfArtifactName(
electronBuilder.linux.artifactName!,
productName,
version,
mapArchFor(target, 'rpm'),
'rpm',
),
productName,
version,
},
@@ -191,8 +279,20 @@ export async function getFilenames(target: string, options: { release: boolean,
{
target: 'aarch64-apple-darwin',
extension: 'dmg',
outputFilename: applyTemplateOfArtifactName(electronBuilder.dmg?.artifactName!, productName, beforeVersion, 'arm64', 'dmg'),
releaseArtifactFilename: applyTemplateOfArtifactName(electronBuilder.dmg?.artifactName!, productName, version, 'arm64', 'dmg'),
outputFilename: applyTemplateOfArtifactName(
electronBuilder.dmg?.artifactName!,
productName,
beforeVersion,
mapArchFor(target, 'dmg'),
'dmg',
),
releaseArtifactFilename: applyTemplateOfArtifactName(
electronBuilder.dmg?.artifactName!,
productName,
version,
mapArchFor(target, 'dmg'),
'dmg',
),
productName,
version,
},
@@ -202,8 +302,20 @@ export async function getFilenames(target: string, options: { release: boolean,
{
target: 'x86_64-apple-darwin',
extension: 'dmg',
outputFilename: applyTemplateOfArtifactName(electronBuilder.dmg?.artifactName!, productName, beforeVersion, 'x64', 'dmg'),
releaseArtifactFilename: applyTemplateOfArtifactName(electronBuilder.dmg?.artifactName!, productName, version, 'x64', 'dmg'),
outputFilename: applyTemplateOfArtifactName(
electronBuilder.dmg?.artifactName!,
productName,
beforeVersion,
mapArchFor(target, 'dmg'),
'dmg',
),
releaseArtifactFilename: applyTemplateOfArtifactName(
electronBuilder.dmg?.artifactName!,
productName,
version,
mapArchFor(target, 'dmg'),
'dmg',
),
productName,
version,
},