Skip to content

Build and Release bsky-desktop #13

Build and Release bsky-desktop

Build and Release bsky-desktop #13

name: Build and Release bsky-desktop
on:
push:
branches: [$default-branch]
pull_request:
branches: [$default-branch]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-linux:
name: Build bsky-desktop (Linux)
runs-on: ubuntu-latest
env:
ext: "AppImage"
GITHUB_TOKEN: ${{ secrets.GHT }}
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Setup node and npm
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm install
- name: Build (x64)
run: npm run build -- --arch x64
- name: Build (arm64)
run: npm run build -- --arch arm64
- name: Download appimagelint and its deps
run: |
sudo apt update && sudo apt install fuse -y
wget https://github.com/TheAssassin/appimagelint/releases/download/continuous/appimagelint-x86_64.AppImage
chmod +x appimagelint-x86_64.AppImage
- name: Check the appimage(s)
run: ./appimagelint-x86_64.AppImage dist/*.AppImage
- name: Generate checksum
run: |
sha256sum dist/*.AppImage > dist/sha256sum.txt
- name: Upload Linux Artifacts
uses: actions/upload-artifact@v4
id: upload-artifact
with:
name: linux-artifacts
path: |
dist/*.AppImage
dist/latest*.yml
dist/sha256sum.txt
build-windows:
name: Build bsky-desktop (Windows)
runs-on: windows-latest
env:
ext: "exe"
GITHUB_TOKEN: ${{ secrets.GHT }}
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Setup node and npm
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm install
- name: Build (x64)
run: npm run build -- --arch x64
- name: Build (arm64)
run: npm run build -- --arch arm64
- name: Generate checksum
run: |
sha256sum dist/*.exe > dist/sha256sum.txt
- name: Upload Windows Artifacts
uses: actions/upload-artifact@v4
id: upload-artifact
with:
name: windows-artifacts
path: |
dist/*.exe
dist/latest*.yml
dist/sha256sum.txt
build-macos:
name: Build bsky-desktop (macOS)
runs-on: macos-latest
env:
ext: "dmg"
GITHUB_TOKEN: ${{ secrets.GHT }}
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Setup node and npm
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm install
- name: Build (x64)
run: npm run build -- --arch x64
- name: Build (arm64)
run: npm run build -- --arch arm64
- name: Generate checksum
run: |
shasum -a 256 dist/*.dmg > dist/sha256sum.txt
- name: Upload macOS Artifacts
uses: actions/upload-artifact@v4
id: upload-artifact
with:
name: macos-artifacts
path: |
dist/*.dmg
dist/latest*.yml
dist/sha256sum.txt
release:
name: Create Release
runs-on: ubuntu-latest
needs: [build-linux, build-windows, build-macos]
outputs:
version_tag: ${{ steps.version.outputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GHT }}
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Get app version
id: version
uses: pchynoweth/action-get-npm-version@1.1.1
- name: Download Linux Artifacts
uses: actions/download-artifact@v4
with:
name: linux-artifacts
path: dist/linux
- name: Download Windows Artifacts
uses: actions/download-artifact@v4
with:
name: windows-artifacts
path: dist/windows
- name: Download macOS Artifacts
uses: actions/download-artifact@v4
with:
name: macos-artifacts
path: dist/macos
- name: Display structure of downloaded files
run: ls -R dist
- name: Combine checksums
run: |
cat dist/linux/sha256sum.txt dist/windows/sha256sum.txt dist/macos/sha256sum.txt > sha256sums.txt
- name: Upload Release
id: create_release
uses: softprops/action-gh-release@v2.1.0
with:
tag_name: "v${{ steps.version.outputs.version }}"
name: "bsky-desktop v${{ steps.version.outputs.version }}"
generate_release_notes: true
files: |
dist/linux/*.AppImage
dist/windows/*.exe
dist/macos/*.dmg
sha256sums.txt
aur:
name: Publish to AUR
runs-on: ubuntu-latest
needs: release
env:
AUR_TOKEN: ${{ secrets.AUR_TOKEN }}
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Download linux artifacts
uses: actions/download-artifact@v4
with:
name: linux-artifacts
path: dist/linux
- name: List downloaded files
run: ls -R dist
- name: Show content of sha256sum.txt
run: cat dist/linux/sha256sum.txt
- name: Get app version
id: version
uses: pchynoweth/action-get-npm-version@1.1.1
- name: Extract checksum from sha256sum.txt and change build version
run: |
new_checksum=$(awk 'NR==1 { print $1 }' ./dist/linux/sha256sum.txt)
sed -i "s|sha256sums=('SKIP' 'SKIP')|sha256sums=('$new_checksum' 'SKIP')|" ./build/PKGBUILD
sed -i "s/^pkgver=.*$/pkgver=${{ steps.version.outputs.version }}/" ./build/PKGBUILD
- name: Publish AUR package
uses: KSXGitHub/github-actions-deploy-aur@v3.0.1
with:
pkgname: bskydesktop
pkgbuild: ./build/arch-pkg/PKGBUILD
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: New Version
ssh_keyscan_types: rsa,ecdsa,ed25519