diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 7caeaff..e1bad6e 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -5,13 +5,48 @@ on: - 'app-v*' jobs: - publish-tauri: + create-release: + permissions: + contents: write + runs-on: ubuntu-20.04 + outputs: + release_id: ${{ steps.create-release.outputs.result }} + + steps: + - uses: actions/checkout@v4 + + - name: setup node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: get version + run: echo "PACKAGE_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV + + - name: create release + id: create-release + uses: actions/github-script@v6 + with: + script: | + const { data } = await github.rest.repos.createRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + tag_name: `app-v${process.env.PACKAGE_VERSION}`, + name: `Desktop App v${process.env.PACKAGE_VERSION}`, + body: 'Take a look at the assets to download and install this app.', + draft: true, + prerelease: false + }) + return data.id + + build-tauri: + needs: create-release permissions: contents: write strategy: fail-fast: false matrix: - platform: [macos-latest windows-latest] + platform: [macos-latest, ubuntu-20.04, windows-latest] runs-on: ${{ matrix.platform }} steps: @@ -22,18 +57,42 @@ jobs: with: node-version: 20 - - name: install Rust nightly - uses: dtolnay/rust-toolchain@nightly + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + + - name: install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-20.04' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - name: install frontend dependencies - run: npm install --include=dev --legacy-peer-deps + run: npm install --legacy-peer-deps --include=dev - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version - releaseName: 'App v__VERSION__' - releaseBody: 'See the assets to download this version and install.' - releaseDraft: true - prerelease: false + releaseId: ${{ needs.create-release.outputs.release_id }} + + publish-release: + permissions: + contents: write + runs-on: ubuntu-20.04 + needs: [create-release, build-tauri] + + steps: + - name: publish release + id: publish-release + uses: actions/github-script@v6 + env: + release_id: ${{ needs.create-release.outputs.release_id }} + with: + script: | + github.rest.repos.updateRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: process.env.release_id, + draft: false, + prerelease: false + })