From 7df1894af355c7d33f1ede0622fabdc6038a206e Mon Sep 17 00:00:00 2001 From: pompurin404 Date: Mon, 21 Oct 2024 13:48:24 +0800 Subject: [PATCH] fix artifact --- .github/workflows/build.yml | 136 +++++++++++++++++- scripts/artifact.mjs | 278 +++++++++++++++++------------------- 2 files changed, 269 insertions(+), 145 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 549b753..dec248b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -272,10 +272,12 @@ jobs: body_path: changelog.md token: ${{ secrets.GITHUB_TOKEN }} - artifact: + artifact-windows: if: startsWith(github.ref, 'refs/heads/') - needs: [windows, macos, linux, windows7, macos10] + needs: windows runs-on: ubuntu-latest + concurrency: + group: artifact services: telegram-bot-api: image: aiogram/telegram-bot-api:latest @@ -294,10 +296,140 @@ jobs: - name: Download Artifacts uses: actions/download-artifact@v4 with: + pattern: 'Windows*' merge-multiple: true - name: Upload Artifacts env: TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + ARTIFACT_TARGET: windows + run: pnpm artifact + + artifact-windows7: + if: startsWith(github.ref, 'refs/heads/') + needs: windows7 + runs-on: ubuntu-latest + concurrency: + group: artifact + services: + telegram-bot-api: + image: aiogram/telegram-bot-api:latest + env: + TELEGRAM_API_ID: ${{ secrets.TELEGRAM_BOT_API_ID }} + TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_BOT_API_HASH }} + ports: + - 8081:8081 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup pnpm + run: npm install -g pnpm + - name: Install Dependencies + run: pnpm install + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + pattern: 'Win7*' + merge-multiple: true + - name: Upload Artifacts + env: + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + ARTIFACT_TARGET: windows7 + run: pnpm artifact + + artifact-macos: + if: startsWith(github.ref, 'refs/heads/') + needs: macos + runs-on: ubuntu-latest + concurrency: + group: artifact + services: + telegram-bot-api: + image: aiogram/telegram-bot-api:latest + env: + TELEGRAM_API_ID: ${{ secrets.TELEGRAM_BOT_API_ID }} + TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_BOT_API_HASH }} + ports: + - 8081:8081 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup pnpm + run: npm install -g pnpm + - name: Install Dependencies + run: pnpm install + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + pattern: 'MacOS*' + merge-multiple: true + - name: Upload Artifacts + env: + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + ARTIFACT_TARGET: macos + run: pnpm artifact + + artifact-macos10: + if: startsWith(github.ref, 'refs/heads/') + needs: macos10 + runs-on: ubuntu-latest + concurrency: + group: artifact + services: + telegram-bot-api: + image: aiogram/telegram-bot-api:latest + env: + TELEGRAM_API_ID: ${{ secrets.TELEGRAM_BOT_API_ID }} + TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_BOT_API_HASH }} + ports: + - 8081:8081 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup pnpm + run: npm install -g pnpm + - name: Install Dependencies + run: pnpm install + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + pattern: 'Catalina*' + merge-multiple: true + - name: Upload Artifacts + env: + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + ARTIFACT_TARGET: macos10 + run: pnpm artifact + + artifact-linux: + if: startsWith(github.ref, 'refs/heads/') + needs: linux + runs-on: ubuntu-latest + concurrency: + group: artifact + services: + telegram-bot-api: + image: aiogram/telegram-bot-api:latest + env: + TELEGRAM_API_ID: ${{ secrets.TELEGRAM_BOT_API_ID }} + TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_BOT_API_HASH }} + ports: + - 8081:8081 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup pnpm + run: npm install -g pnpm + - name: Install Dependencies + run: pnpm install + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + pattern: 'Linux*' + merge-multiple: true + - name: Upload Artifacts + env: + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + ARTIFACT_TARGET: linux run: pnpm artifact updater: diff --git a/scripts/artifact.mjs b/scripts/artifact.mjs index cba2ca8..c740e9f 100644 --- a/scripts/artifact.mjs +++ b/scripts/artifact.mjs @@ -7,152 +7,144 @@ import { execSync } from 'child_process' const CHAT_ID = '@MihomoPartyCi' const GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE +const ARTIFACT_TARGET = process.env.ARTIFACT_TARGET const pkg = fs.readFileSync('package.json', 'utf-8') const { version } = JSON.parse(pkg) const hash = execSync('git rev-parse --short HEAD').toString().trim() const message = execSync('git log -1 --pretty=%B').toString().trim() -const linuxFiles = [ - path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-aarch64.rpm`), - path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-arm64.deb`), - path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-x86_64.rpm`), - path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-amd64.deb`) -] - -const macosFiles = [ - path.join(GITHUB_WORKSPACE, `mihomo-party-macos-${version}-arm64.pkg`), - path.join(GITHUB_WORKSPACE, `mihomo-party-macos-${version}-x64.pkg`) -] - -const macos10Files = [ - path.join(GITHUB_WORKSPACE, `mihomo-party-catalina-${version}-arm64.pkg`), - path.join(GITHUB_WORKSPACE, `mihomo-party-catalina-${version}-x64.pkg`) -] - -const windowsFiles = [ - path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-x64-setup.exe`), - path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-x64-portable.7z`), - path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-ia32-setup.exe`), - path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-ia32-portable.7z`), - path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-arm64-setup.exe`), - path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-arm64-portable.7z`) -] - -const windows7Files = [ - path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-x64-setup.exe`), - path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-x64-portable.7z`), - path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-ia32-setup.exe`), - path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-ia32-portable.7z`) -] - -const windowsMedia = windowsFiles.map((file, index) => ({ - type: 'document', - media: `attach://file${index}` -})) -windowsMedia[windowsMedia.length - 1].caption = `#${hash} #Windows10 #Windows11\n${message}` -const windowsForm = new FormData() -windowsForm.append('chat_id', CHAT_ID) -windowsForm.append('media', JSON.stringify(windowsMedia)) -windowsFiles.forEach((file, index) => { - windowsForm.append(`file${index}`, fs.createReadStream(file)) -}) - -const windows7Media = windows7Files.map((file, index) => ({ - type: 'document', - media: `attach://file${index}` -})) -windows7Media[windows7Media.length - 1].caption = `#${hash} #Windows7 #Windows8\n${message}` -const windows7Form = new FormData() -windows7Form.append('chat_id', CHAT_ID) -windows7Form.append('media', JSON.stringify(windows7Media)) -windows7Files.forEach((file, index) => { - windows7Form.append(`file${index}`, fs.createReadStream(file)) -}) - -const linuxMedia = linuxFiles.map((file, index) => ({ - type: 'document', - media: `attach://file${index}` -})) -linuxMedia[linuxMedia.length - 1].caption = `#${hash} #Linux\n${message}` -const linuxForm = new FormData() -linuxForm.append('chat_id', CHAT_ID) -linuxForm.append('media', JSON.stringify(linuxMedia)) -linuxFiles.forEach((file, index) => { - linuxForm.append(`file${index}`, fs.createReadStream(file)) -}) - -const macosMedia = macosFiles.map((file, index) => ({ - type: 'document', - media: `attach://file${index}` -})) -macosMedia[macosMedia.length - 1].caption = `#${hash} #macOS11+\n${message}` -const macosForm = new FormData() -macosForm.append('chat_id', CHAT_ID) -macosForm.append('media', JSON.stringify(macosMedia)) -macosFiles.forEach((file, index) => { - macosForm.append(`file${index}`, fs.createReadStream(file)) -}) - -const macos10Media = macos10Files.map((file, index) => ({ - type: 'document', - media: `attach://file${index}` -})) -macos10Media[macos10Media.length - 1].caption = `#${hash} #macOS10+\n${message}` -const macos10Form = new FormData() -macos10Form.append('chat_id', CHAT_ID) -macos10Form.append('media', JSON.stringify(macos10Media)) -macos10Files.forEach((file, index) => { - macos10Form.append(`file${index}`, fs.createReadStream(file)) -}) - -function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)) +switch (ARTIFACT_TARGET) { + case 'windows': { + const windowsFiles = [ + path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-x64-setup.exe`), + path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-x64-portable.7z`), + path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-ia32-setup.exe`), + path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-ia32-portable.7z`), + path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-arm64-setup.exe`), + path.join(GITHUB_WORKSPACE, `mihomo-party-windows-${version}-arm64-portable.7z`) + ] + const windowsMedia = windowsFiles.map((file, index) => ({ + type: 'document', + media: `attach://file${index}` + })) + windowsMedia[windowsMedia.length - 1].caption = `#${hash} #Windows10 #Windows11\n${message}` + const windowsForm = new FormData() + windowsForm.append('chat_id', CHAT_ID) + windowsForm.append('media', JSON.stringify(windowsMedia)) + windowsFiles.forEach((file, index) => { + windowsForm.append(`file${index}`, fs.createReadStream(file)) + }) + await axios.post( + `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, + windowsForm, + { + headers: windowsForm.getHeaders() + } + ) + break + } + case 'windows7': { + const windows7Files = [ + path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-x64-setup.exe`), + path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-x64-portable.7z`), + path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-ia32-setup.exe`), + path.join(GITHUB_WORKSPACE, `mihomo-party-win7-${version}-ia32-portable.7z`) + ] + const windows7Media = windows7Files.map((file, index) => ({ + type: 'document', + media: `attach://file${index}` + })) + windows7Media[windows7Media.length - 1].caption = `#${hash} #Windows7 #Windows8\n${message}` + const windows7Form = new FormData() + windows7Form.append('chat_id', CHAT_ID) + windows7Form.append('media', JSON.stringify(windows7Media)) + windows7Files.forEach((file, index) => { + windows7Form.append(`file${index}`, fs.createReadStream(file)) + }) + await axios.post( + `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, + windows7Form, + { + headers: windows7Form.getHeaders() + } + ) + break + } + case 'macos': { + const macosFiles = [ + path.join(GITHUB_WORKSPACE, `mihomo-party-macos-${version}-arm64.pkg`), + path.join(GITHUB_WORKSPACE, `mihomo-party-macos-${version}-x64.pkg`) + ] + const macosMedia = macosFiles.map((file, index) => ({ + type: 'document', + media: `attach://file${index}` + })) + macosMedia[macosMedia.length - 1].caption = `#${hash} #macOS11+\n${message}` + const macosForm = new FormData() + macosForm.append('chat_id', CHAT_ID) + macosForm.append('media', JSON.stringify(macosMedia)) + macosFiles.forEach((file, index) => { + macosForm.append(`file${index}`, fs.createReadStream(file)) + }) + await axios.post( + `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, + macosForm, + { + headers: macosForm.getHeaders() + } + ) + break + } + case 'macos10': { + const macos10Files = [ + path.join(GITHUB_WORKSPACE, `mihomo-party-catalina-${version}-arm64.pkg`), + path.join(GITHUB_WORKSPACE, `mihomo-party-catalina-${version}-x64.pkg`) + ] + const macos10Media = macos10Files.map((file, index) => ({ + type: 'document', + media: `attach://file${index}` + })) + macos10Media[macos10Media.length - 1].caption = `#${hash} #macOS10+\n${message}` + const macos10Form = new FormData() + macos10Form.append('chat_id', CHAT_ID) + macos10Form.append('media', JSON.stringify(macos10Media)) + macos10Files.forEach((file, index) => { + macos10Form.append(`file${index}`, fs.createReadStream(file)) + }) + await axios.post( + `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, + macos10Form, + { + headers: macos10Form.getHeaders() + } + ) + break + } + case 'linux': { + const linuxFiles = [ + path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-aarch64.rpm`), + path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-arm64.deb`), + path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-x86_64.rpm`), + path.join(GITHUB_WORKSPACE, `mihomo-party-linux-${version}-amd64.deb`) + ] + const linuxMedia = linuxFiles.map((file, index) => ({ + type: 'document', + media: `attach://file${index}` + })) + linuxMedia[linuxMedia.length - 1].caption = `#${hash} #Linux\n${message}` + const linuxForm = new FormData() + linuxForm.append('chat_id', CHAT_ID) + linuxForm.append('media', JSON.stringify(linuxMedia)) + linuxFiles.forEach((file, index) => { + linuxForm.append(`file${index}`, fs.createReadStream(file)) + }) + await axios.post( + `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, + linuxForm, + { + headers: linuxForm.getHeaders() + } + ) + break + } } - -await axios.post( - `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, - windowsForm, - { - headers: windowsForm.getHeaders() - } -) - -await sleep(10000) - -await axios.post( - `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, - windows7Form, - { - headers: windows7Form.getHeaders() - } -) - -await sleep(10000) - -await axios.post( - `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, - macosForm, - { - headers: macosForm.getHeaders() - } -) - -await sleep(10000) - -await axios.post( - `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, - macos10Form, - { - headers: macos10Form.getHeaders() - } -) - -await sleep(10000) - -await axios.post( - `http://127.0.0.1:8081/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMediaGroup`, - linuxForm, - { - headers: linuxForm.getHeaders() - } -)