From 36bf2c8648815e528b6ffe01203100cebe53291c Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Thu, 12 Oct 2023 09:45:23 +0530 Subject: [PATCH 1/7] feat: snapcraft release support --- .github/workflows/release-snap.yml | 43 +++++++++++ package.json | 2 +- .../bruno-electron/electron-builder-config.js | 73 ++++++++----------- packages/bruno-electron/package.json | 1 + scripts/build-electron.sh | 7 +- 5 files changed, 82 insertions(+), 44 deletions(-) create mode 100644 .github/workflows/release-snap.yml diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml new file mode 100644 index 000000000..b2b24ee89 --- /dev/null +++ b/.github/workflows/release-snap.yml @@ -0,0 +1,43 @@ +name: Publish to Snapcraft + +on: + workflow_dispatch: + inputs: + build: + description: 'Build and publish to Snapcraft' + required: true + default: 'true' + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Check package-lock.json + run: npm ci + + - name: Install dependencies + run: npm install --legacy-peer-deps + + - name: Build Electron app + run: npm run build + + - name: Install Snapcraft + run: | + sudo snap install snapcraft --classic + continue-on-error: true + + - name: Configure Snapcraft + run: | + echo ${{ secrets.SNAPCRAFT_API_KEY }} | snapcraft login --with - + + - name: Publish to Snapcraft + run: | + snapcraft push packages/bruno-electron/out/*.snap --release stable diff --git a/package.json b/package.json index 9aaaf23f2..9778c1167 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "dev:electron": "npm run dev --workspace=packages/bruno-electron", "build:bruno-query": "npm run build --workspace=packages/bruno-query", "build:graphql-docs": "npm run build --workspace=packages/bruno-graphql-docs", - "build:electron": "./scripts/build-electron.sh", + "build:electron:snap": "./scripts/build-electron.sh snap", "test:e2e": "npx playwright test", "test:report": "npx playwright show-report", "prepare": "husky install" diff --git a/packages/bruno-electron/electron-builder-config.js b/packages/bruno-electron/electron-builder-config.js index f7b1c5abc..5320c1895 100644 --- a/packages/bruno-electron/electron-builder-config.js +++ b/packages/bruno-electron/electron-builder-config.js @@ -1,56 +1,45 @@ require('dotenv').config({ path: process.env.DOTENV_PATH }); const config = { - "appId": "com.usebruno.app", - "productName": "Bruno", - "electronVersion": "21.1.1", - "directories": { - "buildResources": "resources", - "output": "out" + appId: 'com.usebruno.app', + productName: 'Bruno', + electronVersion: '21.1.1', + directories: { + buildResources: 'resources', + output: 'out' }, - "files": [ - "**/*" - ], - "afterSign": "notarize.js", - "mac": { - "artifactName": "${name}_${version}_${arch}_${os}.${ext}", - "category": "public.app-category.developer-tools", - "target": [ + files: ['**/*'], + afterSign: 'notarize.js', + mac: { + artifactName: '${name}_${version}_${arch}_${os}.${ext}', + category: 'public.app-category.developer-tools', + target: [ { - "target": "dmg", - "arch": [ - "x64", - "arm64" - ] + target: 'dmg', + arch: ['x64', 'arm64'] }, { - "target": "zip", - "arch": [ - "x64", - "arm64" - ] + target: 'zip', + arch: ['x64', 'arm64'] } ], - "icon": "resources/icons/mac/icon.icns", - "hardenedRuntime": true, - "identity": "Anoop MD (W7LPPWA48L)", - "entitlements": "resources/entitlements.mac.plist", - "entitlementsInherit": "resources/entitlements.mac.plist" + icon: 'resources/icons/mac/icon.icns', + hardenedRuntime: true, + identity: 'Anoop MD (W7LPPWA48L)', + entitlements: 'resources/entitlements.mac.plist', + entitlementsInherit: 'resources/entitlements.mac.plist' }, - "linux": { - "artifactName": "${name}_${version}_${arch}_linux.${ext}", - "icon": "resources/icons/png", - "target": [ - "AppImage", - "deb" - ] + linux: { + artifactName: '${name}_${version}_${arch}_linux.${ext}', + icon: 'resources/icons/png', + target: ['AppImage', 'deb', 'snap'] }, - "win": { - "artifactName": "${name}_${version}_${arch}_win.${ext}", - "icon": "resources/icons/png", - "certificateFile": `${process.env.WIN_CERT_FILEPATH}`, - "certificatePassword": `${process.env.WIN_CERT_PASSWORD}`, + win: { + artifactName: '${name}_${version}_${arch}_win.${ext}', + icon: 'resources/icons/png', + certificateFile: `${process.env.WIN_CERT_FILEPATH}`, + certificatePassword: `${process.env.WIN_CERT_PASSWORD}` } }; -module.exports = config; \ No newline at end of file +module.exports = config; diff --git a/packages/bruno-electron/package.json b/packages/bruno-electron/package.json index 95c1086fa..cedd5df60 100644 --- a/packages/bruno-electron/package.json +++ b/packages/bruno-electron/package.json @@ -10,6 +10,7 @@ "clean": "rimraf dist", "dev": "electron .", "dist": "electron-builder --mac --config electron-builder-config.js", + "dist:snap": "electron-builder --linux snap --config electron-builder-config.js", "pack": "electron-builder --dir", "test": "jest" }, diff --git a/scripts/build-electron.sh b/scripts/build-electron.sh index 719a0c593..a56b3bcc4 100755 --- a/scripts/build-electron.sh +++ b/scripts/build-electron.sh @@ -19,4 +19,9 @@ sed -i'' -e 's@/_next/@_next/@g' packages/bruno-electron/web/**.html # Remove sourcemaps find packages/bruno-electron/web -name '*.map' -type f -delete -npm run dist --workspace=packages/bruno-electron \ No newline at end of file +if [ "$1" == "snap" ]; then + echo "Building snap distribution" + npm run dist:snap --workspace=packages/bruno-electron +else + echo "Please pass a build distribution type" +fi \ No newline at end of file From fbfdfdca04b2381f3dc4599322ee0ab6d8c04a11 Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Thu, 12 Oct 2023 09:49:33 +0530 Subject: [PATCH 2/7] fix: updated snap publish command --- .github/workflows/release-snap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml index b2b24ee89..49ee7ebc3 100644 --- a/.github/workflows/release-snap.yml +++ b/.github/workflows/release-snap.yml @@ -40,4 +40,4 @@ jobs: - name: Publish to Snapcraft run: | - snapcraft push packages/bruno-electron/out/*.snap --release stable + snapcraft upload --release=stable packages/bruno-electron/out/*.snap From 1298df384ddf2e1f0306512ade32ab1bc79fa39c Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Thu, 12 Oct 2023 09:51:35 +0530 Subject: [PATCH 3/7] fix: updated electron build command --- .github/workflows/release-snap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml index 49ee7ebc3..a994545b8 100644 --- a/.github/workflows/release-snap.yml +++ b/.github/workflows/release-snap.yml @@ -27,7 +27,7 @@ jobs: run: npm install --legacy-peer-deps - name: Build Electron app - run: npm run build + run: npm run build:electron:snap - name: Install Snapcraft run: | From 3ca32d419971bb994e5c1ba519e3a046aaea782d Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Thu, 12 Oct 2023 09:56:20 +0530 Subject: [PATCH 4/7] fix: snap login command --- .github/workflows/release-snap.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml index a994545b8..97bbd0ed0 100644 --- a/.github/workflows/release-snap.yml +++ b/.github/workflows/release-snap.yml @@ -35,8 +35,8 @@ jobs: continue-on-error: true - name: Configure Snapcraft - run: | - echo ${{ secrets.SNAPCRAFT_API_KEY }} | snapcraft login --with - + run: snapcraft login + env: SNAPCRAFT_STORE_CREDENTIALS:${{ secrets.SNAPCRAFT_API_KEY }} - name: Publish to Snapcraft run: | From e4df7e311136aee59ee3e074165e49878fa9c19f Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Thu, 12 Oct 2023 09:59:24 +0530 Subject: [PATCH 5/7] fix: snap login command --- .github/workflows/release-snap.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml index 97bbd0ed0..b87cf3e3c 100644 --- a/.github/workflows/release-snap.yml +++ b/.github/workflows/release-snap.yml @@ -36,7 +36,8 @@ jobs: - name: Configure Snapcraft run: snapcraft login - env: SNAPCRAFT_STORE_CREDENTIALS:${{ secrets.SNAPCRAFT_API_KEY }} + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_API_KEY }} - name: Publish to Snapcraft run: | From cf96527ffbbcb05b465335cd793f6149ebd9f6b3 Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Thu, 12 Oct 2023 10:08:17 +0530 Subject: [PATCH 6/7] fix: snap login command --- .github/workflows/release-snap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml index b87cf3e3c..26b45194b 100644 --- a/.github/workflows/release-snap.yml +++ b/.github/workflows/release-snap.yml @@ -35,7 +35,7 @@ jobs: continue-on-error: true - name: Configure Snapcraft - run: snapcraft login + run: snapcraft whoami env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_API_KEY }} From 46e59eac4bda56eac1cf44b64dbae842e68323c3 Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Thu, 12 Oct 2023 10:12:30 +0530 Subject: [PATCH 7/7] fix: snap publish command --- .github/workflows/release-snap.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml index 26b45194b..2e730508c 100644 --- a/.github/workflows/release-snap.yml +++ b/.github/workflows/release-snap.yml @@ -42,3 +42,5 @@ jobs: - name: Publish to Snapcraft run: | snapcraft upload --release=stable packages/bruno-electron/out/*.snap + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_API_KEY }}