Skip to content

feat(review): local review notes across app, CLI, and agents (#88) #29

feat(review): local review notes across app, CLI, and agents (#88)

feat(review): local review notes across app, CLI, and agents (#88) #29

Workflow file for this run

name: AppImage (Linux, nix)
on:
workflow_dispatch:
push:
tags:
- "v*"
paths:
- "flake.nix"
- "flake.lock"
- "docs/icon.svg"
- "shell/gpui/**"
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/appimage.yml"
pull_request:
paths:
- "flake.nix"
- "flake.lock"
- "docs/icon.svg"
- "shell/gpui/**"
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/appimage.yml"
release:
types: [published]
permissions:
contents: read
concurrency:
group: appimage-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
appimage:
name: Build AppImage (${{ matrix.system }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- system: x86_64-linux
runner: ubuntu-latest
artifact: jayjay-gpui-x86_64-linux.AppImage
- system: aarch64-linux
runner: ubuntu-24.04-arm
artifact: jayjay-gpui-aarch64-linux.AppImage
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Validate Linux metadata
run: |
sudo apt-get update
sudo apt-get install -y appstream desktop-file-utils
desktop-file-validate shell/gpui/linux/dev.hewig.JayJay.desktop
appstreamcli validate --no-net shell/gpui/linux/dev.hewig.JayJay.metainfo.xml
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
experimental-features = nix-command flakes
- name: Cache /nix/store
uses: nix-community/cache-nix-action@7df957e333c1e5da7721f60227dbba6d06080569 # v7.0.2
with:
primary-key: nix-${{ runner.os }}-${{ matrix.system }}-${{ hashFiles('flake.nix', 'flake.lock', '**/Cargo.lock') }}
restore-prefixes-first-match: nix-${{ runner.os }}-${{ matrix.system }}-
gc-max-store-size-linux: 4G
purge: true
purge-prefixes: nix-${{ runner.os }}-${{ matrix.system }}-
purge-created: 0
purge-last-accessed: 0
purge-primary-key: never
- name: Build AppImage
run: nix build --print-build-logs ".#packages.${{ matrix.system }}.appimage"
- name: Inspect AppImage metadata
run: |
rm -rf squashfs-root
./result --appimage-extract >/tmp/jayjay-appimage-extract.log
test -f squashfs-root/dev.hewig.JayJay.desktop
test -f squashfs-root/.DirIcon
test -f squashfs-root/usr/share/icons/hicolor/scalable/apps/dev.hewig.JayJay.svg
test -f squashfs-root/usr/share/icons/hicolor/256x256/apps/dev.hewig.JayJay.png
grep -q '#3B82F6' squashfs-root/usr/share/icons/hicolor/scalable/apps/dev.hewig.JayJay.svg
grep -q '^Exec=jayjay-gpui %F$' squashfs-root/dev.hewig.JayJay.desktop
grep -q '^Icon=dev.hewig.JayJay$' squashfs-root/dev.hewig.JayJay.desktop
- name: Stage artifact
run: |
mkdir -p out
cp -L result "out/${{ matrix.artifact }}"
cd out
sha256sum "${{ matrix.artifact }}" | tee "${{ matrix.artifact }}.sha256"
ls -lh .
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ matrix.artifact }}
path: out/
retention-days: 14
release-assets:
name: Publish AppImage release assets
if: github.event_name == 'release'
needs: appimage
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download AppImage artifacts
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
path: dist/appimage
merge-multiple: true
- name: Upload release asset
env:
GH_TOKEN: ${{ github.token }}
# No checkout in this job, so gh needs the repo made explicit.
GH_REPO: ${{ github.repository }}
TAG_NAME: ${{ github.event.release.tag_name }}
run: |
ls -lh dist/appimage
gh release upload "$TAG_NAME" \
dist/appimage/*.AppImage \
dist/appimage/*.AppImage.sha256 \
--clobber