From 69cc3b69b544ca6a2e1e289ee18fc464238065bf Mon Sep 17 00:00:00 2001 From: catloversg <152669316+catloversg@users.noreply.github.com> Date: Wed, 14 May 2025 23:07:26 +0700 Subject: [PATCH] WORKFLOW: Build artifacts and upload to release (#2120) --- .github/workflows/build-artifacts.yml | 115 ++++++++++++++++++++++++++ electron/icon.png | Bin 5622 -> 1382 bytes package.json | 4 +- tools/package-electron.sh | 11 ++- 4 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/build-artifacts.yml diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml new file mode 100644 index 000000000..772ce81d6 --- /dev/null +++ b/.github/workflows/build-artifacts.yml @@ -0,0 +1,115 @@ +name: Build artifacts + +on: + release: + types: [published] + +env: + GH_TOKEN: ${{ github.token }} + +jobs: + build-windows: + name: Build Windows + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - name: Install npm dependencies + run: npm ci + - name: Build the production app + shell: bash + run: npm run build + - name: Build the Electron app + shell: bash + run: npm run electron-win + - name: Zip + shell: bash + run: cd .build; for i in bitburner-*; do 7z a "$i.zip" "$i"; done; cd ../; + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: build-artifacts-win + include-hidden-files: true + path: .build/*.zip + if-no-files-found: error + + build-linux: + name: Build Linux + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - name: Install npm dependencies + run: npm ci + - name: Build the production app + run: npm run build + - name: Build the Electron app + run: npm run electron-linux + - name: Zip + run: cd .build; for i in bitburner-*; do zip -r "$i.zip" "$i"; done; cd ../; + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: build-artifacts-linux + include-hidden-files: true + path: .build/*.zip + if-no-files-found: error + + build-mac: + name: Build macOS + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - name: Install npm dependencies + run: npm ci + - name: Build the production app + run: npm run build + - name: Build the Electron app + run: npm run electron-mac + - name: Zip + run: cd .build; for i in bitburner-*; do zip -r "$i.zip" "$i"; done; cd ../; + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: build-artifacts-mac + include-hidden-files: true + path: .build/*.zip + if-no-files-found: error + + upload: + name: Upload + runs-on: ubuntu-latest + needs: [build-windows, build-linux, build-mac] + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: .build + pattern: build-artifacts-* + merge-multiple: true + - name: List files + run: ls -la .build + - name: Upload to release + env: + GH_REF_NAME: ${{ github.ref_name }} + run: | + for i in .build/*.zip; do gh release upload "$GH_REF_NAME" "$i" --clobber; done; diff --git a/electron/icon.png b/electron/icon.png index d052a0b91b68fd3034421cb1d2acb8a34fe8f30f..175ffc8b7292ba61b1117366c3d5a36e8a868b75 100644 GIT binary patch literal 1382 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