mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-01-23 13:34:54 +03:00
Merge pull request #1283 from hydralauncher/ci/testing-build-webhook
ci: testing upload build script
This commit is contained in:
commit
007731b71c
15
.github/workflows/build.yml
vendored
15
.github/workflows/build.yml
vendored
@ -2,9 +2,6 @@ name: Build
|
|||||||
|
|
||||||
on: pull_request
|
on: pull_request
|
||||||
|
|
||||||
env:
|
|
||||||
AWS_REGION: us-east-1
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
strategy:
|
strategy:
|
||||||
@ -65,6 +62,18 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.MAIN_VITE_EXTERNAL_RESOURCES_URL }}
|
MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.MAIN_VITE_EXTERNAL_RESOURCES_URL }}
|
||||||
|
|
||||||
|
- name: Test Upload build
|
||||||
|
env:
|
||||||
|
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||||
|
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
|
||||||
|
S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }}
|
||||||
|
S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }}
|
||||||
|
S3_BUILDS_BUCKET_NAME: ${{ secrets.S3_BUILDS_BUCKET_NAME }}
|
||||||
|
BUILDS_URL: ${{ secrets.BUILDS_URL }}
|
||||||
|
BUILD_WEBHOOK_URL: ${{ secrets.BUILD_WEBHOOK_URL }}
|
||||||
|
GITHUB_ACTOR: ${{ github.actor }}
|
||||||
|
run: node scripts/upload-build.cjs
|
||||||
|
|
||||||
- name: Create artifact
|
- name: Create artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
"start": "electron-vite preview",
|
"start": "electron-vite preview",
|
||||||
"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 && node ./postinstall.cjs",
|
"postinstall": "electron-builder install-app-deps && node ./scripts/postinstall.cjs",
|
||||||
"build:unpack": "npm run build && electron-builder --dir",
|
"build:unpack": "npm run build && electron-builder --dir",
|
||||||
"build:win": "electron-vite build && electron-builder --win",
|
"build:win": "electron-vite build && electron-builder --win",
|
||||||
"build:mac": "electron-vite build && electron-builder --mac",
|
"build:mac": "electron-vite build && electron-builder --mac",
|
||||||
@ -78,6 +78,7 @@
|
|||||||
"zod": "^3.24.1"
|
"zod": "^3.24.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@aws-sdk/client-s3": "^3.705.0",
|
||||||
"@commitlint/cli": "^19.6.0",
|
"@commitlint/cli": "^19.6.0",
|
||||||
"@commitlint/config-conventional": "^19.6.0",
|
"@commitlint/config-conventional": "^19.6.0",
|
||||||
"@electron-toolkit/eslint-config-prettier": "^2.0.0",
|
"@electron-toolkit/eslint-config-prettier": "^2.0.0",
|
||||||
|
64
scripts/upload-build.cjs
Normal file
64
scripts/upload-build.cjs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
const fs = require("node:fs");
|
||||||
|
const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");
|
||||||
|
const path = require("node:path");
|
||||||
|
const packageJson = require("../package.json");
|
||||||
|
|
||||||
|
if (!process.env.BUILD_WEBHOOK_URL) {
|
||||||
|
console.log("No BUILD_WEBHOOK_URL provided, skipping upload");
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const s3 = new S3Client({
|
||||||
|
region: "auto",
|
||||||
|
endpoint: process.env.S3_ENDPOINT,
|
||||||
|
forcePathStyle: true,
|
||||||
|
credentials: {
|
||||||
|
accessKeyId: process.env.S3_ACCESS_KEY_ID,
|
||||||
|
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const dist = path.resolve(__dirname, "..", "dist");
|
||||||
|
|
||||||
|
const extensionsToUpload = [".deb", ".exe"];
|
||||||
|
|
||||||
|
fs.readdir(dist, async (err, files) => {
|
||||||
|
if (err) throw err;
|
||||||
|
|
||||||
|
const uploads = await Promise.all(
|
||||||
|
files
|
||||||
|
.filter((file) => extensionsToUpload.includes(path.extname(file)))
|
||||||
|
.map(async (file) => {
|
||||||
|
console.log(`⌛️ Uploading ${file}...`);
|
||||||
|
const fileName = `${new Date().getTime()}-${file}`;
|
||||||
|
|
||||||
|
const command = new PutObjectCommand({
|
||||||
|
Bucket: process.env.S3_BUILDS_BUCKET_NAME,
|
||||||
|
Key: fileName,
|
||||||
|
Body: fs.createReadStream(path.resolve(dist, file)),
|
||||||
|
});
|
||||||
|
|
||||||
|
await s3.send(command);
|
||||||
|
|
||||||
|
return {
|
||||||
|
url: `${process.env.BUILDS_URL}/${fileName}`,
|
||||||
|
name: fileName,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
if (uploads.length > 0) {
|
||||||
|
await fetch(process.env.BUILD_WEBHOOK_URL, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
uploads,
|
||||||
|
branchName: process.env.BRANCH_NAME,
|
||||||
|
version: packageJson.version,
|
||||||
|
githubActor: process.env.GITHUB_ACTOR,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user