name: Release on: push: branches: [ main ] workflow_dispatch: jobs: release-check: name: Check if version changed runs-on: ubuntu-latest defaults: run: shell: bash steps: - uses: actions/checkout@v5 with: fetch-depth: 0 ref: main - name: Use Node.js from nvmrc uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" - name: Check if version has been updated id: check uses: EndBug/version-check@v2 outputs: publish: ${{ steps.check.outputs.changed }} release: name: Release needs: release-check if: ${{ needs.release-check.outputs.publish == 'true' }} runs-on: ubuntu-latest defaults: run: shell: bash steps: - uses: actions/checkout@v5 with: fetch-depth: 0 ref: main - name: Use Node.js from nvmrc uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" registry-url: "https://registry.npmjs.org" - name: Set up Go for desktop build uses: actions/setup-go@v6 with: go-version: ^1.23.x cache-dependency-path: desktop/go.sum id: go - name: Get version id: package-version uses: martinbeentjes/npm-get-version-action@v1.3.1 - name: Install run: npm ci - name: Build run: | npm run build-desktop - name: Tag commit and push id: tag_version uses: mathieudutour/github-tag-action@v6.2 with: github_token: ${{ secrets.GITHUB_TOKEN }} custom_tag: ${{ steps.package-version.outputs.current-version }} - name: Create Archives run: | zip -r "desktop-${{ steps.package-version.outputs.current-version }}" desktop/bin/ - name: Build Release Notes id: release_notes run: | RELEASE_NOTES_PATH="${PWD}/release_notes.txt" ./build/release-notes.js > ${RELEASE_NOTES_PATH} echo "release_notes=${RELEASE_NOTES_PATH}" >> $GITHUB_OUTPUT - name: Create GitHub Release id: create_regular_release uses: ncipollo/release-action@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag: ${{ steps.tag_version.outputs.new_tag }} name: ${{ steps.tag_version.outputs.new_tag }} bodyFile: ${{ steps.release_notes.outputs.release_notes }} artifacts: "desktop-${{ steps.package-version.outputs.current-version }}.zip" allowUpdates: true draft: false prerelease: false