diff --git a/.github/workflows/release-snap.yml b/.github/workflows/release-snap.yml new file mode 100644 index 000000000..2e730508c --- /dev/null +++ b/.github/workflows/release-snap.yml @@ -0,0 +1,46 @@ +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:electron:snap + + - name: Install Snapcraft + run: | + sudo snap install snapcraft --classic + continue-on-error: true + + - name: Configure Snapcraft + run: snapcraft whoami + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_API_KEY }} + + - name: Publish to Snapcraft + run: | + snapcraft upload --release=stable packages/bruno-electron/out/*.snap + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_API_KEY }} 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 11c9822e8..1b75e4d13 100644 --- a/packages/bruno-electron/electron-builder-config.js +++ b/packages/bruno-electron/electron-builder-config.js @@ -32,7 +32,7 @@ const config = { linux: { artifactName: '${name}_${version}_${arch}_linux.${ext}', icon: 'resources/icons/png', - target: ['AppImage', 'deb', 'rpm'] + target: ['AppImage', 'deb', 'snap', 'rpm'] }, win: { artifactName: '${name}_${version}_${arch}_win.${ext}', 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