feat: snapcraft release support

This commit is contained in:
Anoop M D 2023-10-12 09:45:23 +05:30
parent 36caa5c2d3
commit 36bf2c8648
5 changed files with 82 additions and 44 deletions

43
.github/workflows/release-snap.yml vendored Normal file
View File

@ -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

View File

@ -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"

View File

@ -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;
module.exports = config;

View File

@ -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"
},

View File

@ -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
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