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 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: Upload Linux Artifacts uses: actions/upload-artifact@v4 id: upload-artifact with: name: linux-artifacts path: | dist/*.AppImage dist/latest*.yml - name: Generate checksum run: | sha256sum dist/*.AppImage > sha256sum.txt - name: Upload checksums uses: actions/upload-artifact@v4 with: name: checksums path: 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: Upload Windows Artifacts uses: actions/upload-artifact@v4 id: upload-artifact with: name: windows-artifacts path: | dist/*.exe dist/latest*.yml 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: Upload macOS Artifacts uses: actions/upload-artifact@v4 id: upload-artifact with: name: macos-artifacts path: | dist/*.dmg dist/latest*.yml 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: Merge latest .ymls uses: mikefarah/yq@v4.44.6 with: cmd: yq eval-all 'select(fileIndex == 0) * select(fileIndex > 0)' dist/*/*.yml > merged.yml - 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 merged.yml 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: Install jq run: sudo apt-get update && sudo apt-get install jq -y - name: Download checksums uses: actions/download-artifact@v4 with: name: checksums path: . - name: List downloaded files run: ls -R - name: Show content of sha256sum.txt run: cat sha256sum.txt - name: Extract checksum from sha256sum.txt and change build version run: | echo releasever new_checksum=$(awk 'NR==1 { print $1 }' ./sha256sum.txt) sed -i "s|sha256sums=('SKIP' 'SKIP')|sha256sums=('$new_checksum' 'SKIP')|" ./build/PKGBUILD sed -i "s/^pkgver=.*$/pkgver=${{ needs.release.outputs.version_tag }}/" ./build/PKGBUILD - name: Publish AUR package uses: KSXGitHub/github-actions-deploy-aur@v3.0.1 with: pkgname: bskydesktop pkgbuild: ./build/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