Neurite Desktop Release #16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |