Skip to content

Neurite Desktop Release #16

Neurite Desktop Release

Neurite Desktop Release #16

name: Neurite Desktop Release
on:
workflow_dispatch:
inputs:
release_type:
description: 'Release type (draft, prerelease, final)'
required: false
default: 'draft'
jobs:
set-version:
runs-on: ubuntu-latest
outputs:
timestamp: ${{ steps.version.outputs.timestamp }}
tag: ${{ steps.version.outputs.tag }}
draft: ${{ steps.version.outputs.draft }}
prerelease: ${{ steps.version.outputs.prerelease }}
steps:
- name: Generate timestamped version
id: version
run: |
timestamp=$(date +'%Y.%m.%d.%H%M%S')
echo "timestamp=$timestamp" >> $GITHUB_OUTPUT
echo "tag=electron-$timestamp" >> $GITHUB_OUTPUT
if [[ "${{ github.event.inputs.release_type }}" == "draft" ]]; then
echo "draft=true" >> $GITHUB_OUTPUT
echo "prerelease=false" >> $GITHUB_OUTPUT
elif [[ "${{ github.event.inputs.release_type }}" == "prerelease" ]]; then
echo "draft=false" >> $GITHUB_OUTPUT
echo "prerelease=true" >> $GITHUB_OUTPUT
else
echo "draft=false" >> $GITHUB_OUTPUT
echo "prerelease=false" >> $GITHUB_OUTPUT
fi
build:
needs: set-version
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
env:
RELEASE_VERSION: ${{ needs.set-version.outputs.timestamp }}
RELEASE_TAG: ${{ needs.set-version.outputs.tag }}
steps:
- name: Checkout electron branch
uses: actions/checkout@v3
with:
ref: electron
- name: Set up Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm install
- name: Write embedded version file using dev script
run: npm run set-version "${{ env.RELEASE_VERSION }}"
- name: Build Electron app
run: npm run build -- --publish=never
- name: Debug release mode
run: |
echo "Draft? ${{ needs.set-version.outputs.draft }}"
echo "Prerelease? ${{ needs.set-version.outputs.prerelease }}"
- name: Upload release asset
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ needs.set-version.outputs.tag }}
name: Neurite Desktop ${{ env.RELEASE_VERSION }}
body: |
Electron desktop release for version ${{ env.RELEASE_VERSION }}.
draft: ${{ needs.set-version.outputs.draft }}
prerelease: ${{ needs.set-version.outputs.prerelease }}
files: |
dist/*.dmg
dist/*.exe
dist/*.AppImage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
cleanup:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install GitHub CLI
run: |
sudo apt update
sudo apt install -y gh jq
- name: Authenticate with GitHub CLI
run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
- name: Delete old electron-* releases (keep latest)
run: |
# List releases, filter for 'electron-' tag, and delete all except the latest
releases=$(gh release list --limit 100 --json tagName,createdAt \
| jq -r '.[] | select(.tagName | startswith("electron-")) | "\(.createdAt) \(.tagName)"' \
| sort -r)
# Only delete if there are releases
if [ -n "$releases" ]; then
echo "$releases" | tail -n +2 | awk '{print $2}' | xargs -r -n 1 gh release delete -y
else
echo "No releases found to delete."
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}