Skip to content

chore(release): v1.1.16 Kickoff v1.1.16: clean rebuild scripts + rele… #39

chore(release): v1.1.16 Kickoff v1.1.16: clean rebuild scripts + rele…

chore(release): v1.1.16 Kickoff v1.1.16: clean rebuild scripts + rele… #39

Workflow file for this run

name: Build PlainScript AppImage
on:
push:
tags:
- 'v*'
workflow_dispatch:
env:
SKIP_THEIA_CHECK: 1
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ELECTRON_DOWNLOAD_MAX_ATTEMPTS: 5
ELECTRON_BUILD_DOWNLOAD_TIMEOUT: 120000
ELECTRON_BUILD_DOWNLOAD_RETRY: 5
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clear caches (Linux)
run: |
rm -rf ~/.cache/electron ~/.cache/electron-builder || true
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Prepare Electron cache (Linux)
env:
ELECTRON_CACHE: $RUNNER_TEMP/electron-cache
run: |
mkdir -p "$ELECTRON_CACHE"
echo "Using Electron cache: $ELECTRON_CACHE"
- name: Prefetch Electron to warm cache (Linux)
env:
ELECTRON_CACHE: $RUNNER_TEMP/electron-cache
run: |
npm config set fetch-retry-maxtimeout 120000
npm config set fetch-retries 5
npm install electron@38.4.0 --no-audit --prefer-offline || true
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y p7zip-full build-essential python3 libsecret-1-dev libx11-dev libxkbfile-dev
- name: Clean install
run: |
rm -rf node_modules package-lock.json
npm config set fetch-retry-maxtimeout 120000
npm config set fetch-retries 5
npm install --no-audit --prefer-offline
- name: Download Theia plugins
run: npm run download:plugins
- name: Build custom-ui
run: npm run build --workspace=custom-ui
- name: Build browser-app
run: npm run build --workspace=browser-app
- name: Build electron-app
run: |
export NODE_OPTIONS=--max_old_space_size=4096
npm run build --workspace=electron-app
- name: Prepare plugins for electron-app
run: npm run prepare:plugins --workspace=electron-app
- name: Package AppImage
run: npm run package --workspace=electron-app
- name: Make AppImage executable
run: chmod +x electron-app/dist/*.AppImage
- name: Upload AppImage artifact
uses: actions/upload-artifact@v4
with:
name: plainscript-appimage
path: electron-app/dist/*.AppImage
retention-days: 30
- name: Create Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: electron-app/dist/*.AppImage
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Clear caches (macOS)
run: |
rm -rf "$HOME/Library/Caches/electron" "$HOME/Library/Caches/electron-builder" || true
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Prepare Electron cache (macOS)
env:
ELECTRON_CACHE: $RUNNER_TEMP/electron-cache
run: |
mkdir -p "$ELECTRON_CACHE"
echo "Using Electron cache: $ELECTRON_CACHE"
- name: Clean install
run: |
rm -rf node_modules package-lock.json
npm config set fetch-retry-maxtimeout 120000
npm install
- name: Download Theia plugins
run: npm run download:plugins
- name: Build custom-ui
run: npm run build --workspace=custom-ui
- name: Build browser-app
run: npm run build --workspace=browser-app
- name: Build electron-app
run: |
export NODE_OPTIONS=--max_old_space_size=4096
npm run build --workspace=electron-app
- name: Prepare plugins for electron-app
run: npm run prepare:plugins --workspace=electron-app
- name: Package macOS (DMG + ZIP)
run: npm run package --workspace=electron-app
- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
name: plainscript-macos
path: electron-app/dist/*.{dmg,zip}
retention-days: 30
- name: Create Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: electron-app/dist/*.{dmg,zip}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Clean install and rebuild
shell: pwsh
run: |
Remove-Item -Force -Recurse "$env:LOCALAPPDATA\electron\Cache" -ErrorAction SilentlyContinue
Remove-Item -Force -Recurse "$env:LOCALAPPDATA\electron-builder\Cache" -ErrorAction SilentlyContinue
Remove-Item -Force -Recurse node_modules -ErrorAction SilentlyContinue
if (Test-Path package-lock.json) { Remove-Item -Force package-lock.json }
npm config set fetch-retry-maxtimeout 120000
npm config set fetch-retries 5
npm install --no-audit --prefer-offline
- name: Download Theia plugins
run: npm run download:plugins
- name: Build custom-ui
run: npm run build --workspace=custom-ui
- name: Build browser-app
run: npm run build --workspace=browser-app
- name: Build electron-app
run: npm run build --workspace=electron-app
- name: Prepare plugins for electron-app
run: npm run prepare:plugins --workspace=electron-app
- name: Package Windows (NSIS + Portable)
run: npm run package --workspace=electron-app
- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: plainscript-windows
path: electron-app/dist/*.exe
retention-days: 30
- name: Create Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: electron-app/dist/*.exe
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}