diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e0754d5..ef2f126 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,6 +2,9 @@ name: Build/release on: [push, pull_request] +env: + GH_TOKEN: ${{ SECRETS.GITHUB_TOKEN }} + jobs: release: runs-on: ${{ matrix.os }} @@ -20,25 +23,39 @@ jobs: with: node-version: 20 - - name: Install Snapcraft - uses: samuelmeuli/action-snapcraft@v1 - # Only install Snapcraft on Ubuntu - if: startsWith(matrix.os, 'ubuntu') - with: - # Log in to Snap Store - snapcraft_token: ${{ secrets.snapcraft_token }} + - name: Build + run: yarn --link-duplicates --pure-lockfile - name: Install libarchive-tools for pacman build # Related https://github.com/electron-userland/electron-builder/issues/4181 if: startsWith(matrix.os, 'ubuntu') run: sudo apt-get install libarchive-tools - - name: Build/release Electron app - uses: coparse-inc/action-electron-builder@v1.0.0 - with: - # GitHub token, automatically provided to the action - # (No need to define this secret in the repo settings) - github_token: ${{ secrets.github_token }} - - # If the commit is tagged with a version (e.g. "v1.0.0"), - # release the app after building - release: ${{ startsWith(github.ref, 'refs/tags/v') }} + - name: Release linux x64 + if: | + contains(github.ref, 'main') && + startsWith(matrix.os, 'ubuntu') + run: yarn dist:linux:x64 -- --publish always + + - name: Release linux arm64 + if: | + contains(github.ref, 'main') && + startsWith(matrix.os, 'ubuntu') + run: yarn dist:linux:arm64 -- --publish always + + - name: Release linux arm + if: | + contains(github.ref, 'main') && + startsWith(matrix.os, 'ubuntu') + run: yarn dist:linux:arm -- --publish always + + - name: Release macos + if: | + contains(github.ref, 'main') && + startsWith(matrix.os, 'macos') + run: yarn dist:mac -- --publish always + + - name: Release windows + if: | + contains(github.ref, 'main') && + startsWith(matrix.os, 'windows') + run: yarn dist:windows -- --publish always diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml new file mode 100644 index 0000000..4c43259 --- /dev/null +++ b/.github/workflows/snap.yml @@ -0,0 +1,59 @@ +name: Build/release for Snap + +on: push + +defaults: + run: + shell: bash + +jobs: + + snap: + runs-on: ubuntu-latest + + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }} + + steps: + - name: Check out Git repository + uses: actions/checkout@v3 + + - name: Install Node.js, NPM and Yarn + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Build + run: yarn --link-duplicates --pure-lockfile + + - name: Install Snapcraft + uses: samuelmeuli/action-snapcraft@v2 + + - name: Release + if: contains(github.ref, 'main') + run: yarn dist:linux:snap --publish always + + snap-armv7l: + runs-on: ubuntu-latest + + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }} + + steps: + - name: Check out Git repository + uses: actions/checkout@v3 + + - name: Install Node.js, NPM and Yarn + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Build + run: yarn --link-duplicates --pure-lockfile + + - name: Install Snapcraft + uses: samuelmeuli/action-snapcraft@v2 + + - name: Release + if: contains(github.ref, 'main') + run: yarn dist:linux:snap:armv7l --publish always diff --git a/package.json b/package.json index 52f996d..e980f95 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "prospect-mail", "productName": "Prospect Mail", - "version": "0.5.0-beta2", + "version": "0.5.0-beta1", "main": "src/main.js", "description": "Unofficial desktop client for Microsoft Outlook", "homepage": "https://github.com/julian-alarcon/prospect-mail", @@ -33,16 +33,22 @@ "start": "electron .", "start-minimized": "electron . --minimized", "pack": "electron-builder --dir", + "dist": "electron-builder", "dist:linux": "electron-builder --linux", - "dist:linux:appimage": "electron-builder --linux AppImage", - "dist:linux:deb": "electron-builder --linux deb", - "dist:linux:snap": "electron-builder --linux snap", - "dist:linux:pacman": "electron-builder --linux pacman", + "dist:linux:appimage": "electron-builder --x64 --armv7l --arm64 -l AppImage", + "dist:linux:deb": "electron-builder --x64 --armv7l --arm64 -l deb", + "dist:linux:pacman": "electron-builder --l pacman", + "dist:linux:rpm": "electron-builder --x64 --armv7l --arm64 -l rpm", + "dist:linux:snap": "electron-builder -l snap", + "dist:linux:snap:armv7l": "electron-builder --armv7l -l snap", + "dist:linux:targz": "electron-builder --x64 --armv7l --arm64 -l tar.gz", "dist:mac": "electron-builder --mac", - "dist:win": "electron-builder --win", - "postinstall": "electron-builder install-app-deps", - "publish": "build -p always", - "release": "electron-builder" + "dist:windows": "electron-builder --windows --x64", + "dist:linux:x64": "electron-builder --x64 -l AppImage deb rpm pacman tar.gz", + "dist:linux:arm64": "electron-builder --arm64 -l AppImage deb rpm pacman tar.gz", + "dist:linux:arm": "electron-builder --armv7l -l AppImage deb rpm pacman tar.gz", + "release": "electron-builder", + "postinstall": "electron-builder install-app-deps" }, "dependencies": { "about-window": "^1.15.2", @@ -56,7 +62,7 @@ "build": { "appId": "io.github.julian-alarcon.prospect-mail", "linux": { - "category": "Mail;Network;Office", + "category": "Email;Network;Office", "packageCategory": "net", "executableName": "prospect-mail", "synopsis": "Prospect Mail", @@ -66,25 +72,27 @@ "StartupWMClass": "prospect-mail" }, "target": [ - "rpm", - "deb", - "tar.gz", "AppImage", - "snap" + "deb", + "pacman", + "rpm", + "snap", + "tar.gz" ], "publish": { "provider": "github", "releaseType": "draft" } }, + "rpm": { + "fpm": [ + "--rpm-rpmbuild-define=_build_id_links none" + ] + }, "snap": { "summary": "Prospect Mail", "confinement": "strict", "grade": "stable", - "buildPackages": [], - "stagePackages": [ - "default" - ], "base": "core22", "plugs": [ "default", @@ -95,16 +103,12 @@ "upower-observe" ], "publish": [ - "github", - "snapStore" + "github" ], "allowNativeWayland": true }, "mac": { "category": "public.app-category.productivity", - "target": [ - "dmg" - ], "icon": "build/icon.icns", "type": "distribution", "publish": {