custom release

This commit is contained in:
pompurin404 2024-08-05 21:08:58 +08:00
parent acc9650d42
commit 40f6c478b5
No known key found for this signature in database
4 changed files with 98 additions and 13 deletions

View File

@ -3,6 +3,9 @@ on:
push:
branches:
- master
tags:
- v*
permissions: write-all
jobs:
@ -33,16 +36,30 @@ jobs:
pnpm install
pnpm prepare --${{ matrix.arch }}
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: pnpm build:win --${{ matrix.arch }}
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: Windows ${{ matrix.arch }}
path: dist/*.exe
if-no-files-found: error
- name: Publish Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: |
dist/*.exe
dist/*.blockmap
token: ${{ secrets.GITHUB_TOKEN }}
- name: Merge Yaml
if: startsWith(github.ref, 'refs/tags/v')
run: pnpm updater latest.yml
- name: Publish Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: dist/latest.yml
token: ${{ secrets.GITHUB_TOKEN }}
linux:
strategy:
@ -70,10 +87,7 @@ jobs:
pnpm install
pnpm prepare --${{ matrix.arch }}
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: pnpm build:linux --${{ matrix.arch }}
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
@ -82,6 +96,29 @@ jobs:
dist/*.deb
dist/*.rpm
if-no-files-found: error
- name: Publish Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: |
dist/*.deb
dist/*.rpm
dist/*.blockmap
token: ${{ secrets.GITHUB_TOKEN }}
- name: Merge Yaml
if: startsWith(github.ref, 'refs/tags/v') && matrix.arch == 'x64'
run: pnpm updater latest-linux.yml
- name: Merge Yaml
if: startsWith(github.ref, 'refs/tags/v') && matrix.arch == 'arm64'
run: pnpm updater latest-linux-arm64.yml
- name: Publish Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: |
dist/latest-linux.yml
dist/latest-linux-arm64.yml
token: ${{ secrets.GITHUB_TOKEN }}
macos:
strategy:
@ -119,3 +156,21 @@ jobs:
name: MacOS ${{ matrix.arch }}
path: dist/*.dmg
if-no-files-found: error
- name: Publish Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: |
dist/*.dmg
dist/*.zip
dist/*.blockmap
token: ${{ secrets.GITHUB_TOKEN }}
- name: Merge Yaml
if: startsWith(github.ref, 'refs/tags/v')
run: pnpm updater latest-mac.yml
- name: Publish Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: dist/latest-mac.yml
token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -54,7 +54,4 @@ linux:
category: Utility
artifactName: ${name}-linux-${version}-${arch}.${ext}
npmRebuild: false
publish:
provider: github
owner: pompurin404
repo: mihomo-party
publish: []

View File

@ -12,11 +12,12 @@
"typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false",
"typecheck": "npm run typecheck:node && npm run typecheck:web",
"prepare": "node scripts/prepare.mjs",
"updater": "node scripts/updater.mjs",
"dev": "electron-vite dev",
"postinstall": "electron-builder install-app-deps",
"build:win": "electron-vite build && electron-builder --win",
"build:mac": "electron-vite build && electron-builder --mac",
"build:linux": "electron-vite build && electron-builder --linux"
"build:win": "electron-vite build && electron-builder --win --publish never",
"build:mac": "electron-vite build && electron-builder --mac --publish never",
"build:linux": "electron-vite build && electron-builder --linux --publish never"
},
"dependencies": {
"@electron-toolkit/preload": "^3.0.1",

32
scripts/updater.mjs Normal file
View File

@ -0,0 +1,32 @@
/* eslint-disable @typescript-eslint/explicit-function-return-type */
import axios from 'axios'
import yaml from 'yaml'
import fs from 'fs'
let file = 'latest.yml'
if (process.argv.slice(2).length !== 0) {
file = process.argv.slice(2)[0]
}
async function check() {
try {
const res = await axios.get(
`https://github.com/pompurin404/mihomo-party/releases/latest/download/${file}`,
{
headers: { 'Content-Type': 'application/octet-stream' }
}
)
const remoteData = yaml.parse(res.data)
const currentData = yaml.parse(fs.readFileSync(`dist/${file}`, 'utf8'))
remoteData.files.push(...currentData.files)
remoteData.releaseDate = `${new Date().toISOString()}`
fs.writeFileSync(`dist/${file}`, yaml.stringify(remoteData))
} catch (error) {
return
}
}
check().catch((error) => {
console.error(error)
process.exit(0)
})