Skip to content

Build and Release

Build and Release #4

Workflow file for this run

name: Build and Release
on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
tag:
description: 'Tag to create release for (e.g., v1.0.0)'
required: true
default: 'v1.0.0'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Set environment variable
run: echo "USE_HARD_LINKS=false" >> $GITHUB_ENV
- name: Update electron-builder
run: npm install -g electron-builder@latest
- name: Cleanup Project
run: npm cache clean --force
- name: Install Dependencies
run: npm install
- name: Build Electron App (Windows x64)
if: matrix.os == 'windows-latest'
run: npx electron-builder --win --x64 --publish never
- name: Build Electron App (Linux)
if: matrix.os == 'ubuntu-latest'
run: npx electron-builder --linux --publish never
- name: Build Electron App (macOS x64)
if: matrix.os == 'macos-latest'
run: npx electron-builder --mac --x64 --publish never
- name: Build Electron App (macOS arm64)
if: matrix.os == 'macos-latest'
run: npx electron-builder --mac --arm64 --publish never
- name: Upload Artifact (Windows Portable EXE)
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-win-portable
path: dist/*portable.zip
- name: Upload Artifact (Windows EXE)
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-win-exe
path: dist/*.exe
- name: Upload Artifact (Linux DEB)
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-linux-deb
path: dist/*.deb
- name: Upload Artifact (Linux TAR.GZ)
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-linux-tar
path: dist/*.tar.gz
- name: Upload Artifact (Linux RPM)
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-linux-rpm
path: dist/*.rpm
- name: Upload Artifact (Linux AppImage)
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-linux-appimage
path: dist/*.AppImage
- name: Upload Artifact (macOS DMG x64)
if: matrix.os == 'macos-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-macos-dmg-x64
path: dist/*-x64.dmg
- name: Upload Artifact (macOS ZIP x64)
if: matrix.os == 'macos-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-macos-zip-x64
path: dist/*-x64.zip
- name: Upload Artifact (macOS DMG arm64)
if: matrix.os == 'macos-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-macos-dmg-arm64
path: dist/*-arm64.dmg
- name: Upload Artifact (macOS ZIP arm64)
if: matrix.os == 'macos-latest'
uses: actions/upload-artifact@v4
with:
name: proxycloud-gui-macos-zip-arm64
path: dist/*-arm64.zip
release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Download All Artifacts
uses: actions/download-artifact@v4
with:
path: dist/
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
files: dist/**/*.*
tag_name: ${{ github.event.inputs.tag || github.ref_name }}
name: Release ${{ github.event.inputs.tag || github.ref_name }}
body: |
## ProxyCloud GUI ${{ github.event.inputs.tag || github.ref_name }}
### 📥 Downloads
#### Windows
- [📦 Windows Installer (.exe)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}-Setup.exe)
- SHA256: 6a36596f520d6ecb24290c8536c8aaebb28838bf6e42963dd4890db6fd716155
- Size: 121 MB
- [💼 Windows Portable (.zip)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}-win-portable.zip)
#### macOS
- [🍎 macOS Intel (.dmg)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}-x64.dmg)
- SHA256: 9195ef8a922bf2d20075abf842476a276ac93751ce8bce1c102e3ba5db8d0e1c
- Size: 178 MB
- [🍎 macOS Apple Silicon (.dmg)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}-arm64.dmg)
- SHA256: 3fcfb06121c7fcb6e505f9c080704597f9518190708decf788af408b38eaa9ad
- Size: 173 MB
- [📦 macOS Intel (.zip)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}-x64.zip)
- SHA256: 00db17641c8e8402e74c3c07104589ff959757023105c3ce5e92cb0b71413802
- Size: 184 MB
- [📦 macOS Apple Silicon (.zip)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}-arm64.zip)
- SHA256: 7f24c2f56cd3c1e0354e1be80466e192693c6a29f65cee55625552e0e5654642
- Size: 178 MB
#### Linux
- [🐧 Linux (.deb)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}.deb)
- SHA256: c9acbdc48cc936291470c2a90433d63e428539e91dbd0b764acbd90dcc4e2933
- Size: 111 MB
- [🐧 Linux (.rpm)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}.rpm)
- SHA256: fe3de855c66196133fe8ac76da71c03d8b1ffe001b21a37704436f8abae6fd7a
- Size: 111 MB
- [🐧 Linux (.AppImage)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}.AppImage)
- SHA256: 812966bf295a36b8cf577b4a65ab3d0525d8e07e0148ab6008ee6262d8f0065e
- Size: 126 MB
- [🐧 Linux (.tar.gz)](https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag || github.ref_name }}/${{ github.event.repository.name }}.tar.gz)
- SHA256: d986ae7212ad94aaa025d6389d3c75b62a487ea4f65a4efed72cfa633eec0c3b
- Size: 166 MB
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}