V2.2.6: Lots of UI and UX fixes #6
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release images | |
| # Tag-triggered build: the slow CUDA + flash-attn compile happens once here and | |
| # is pushed to GHCR, so users `docker pull` instead of building. Two variants: | |
| # - CPU (default): ghcr.io/<owner>/fulloch:<version>-cpu + :latest-cpu + :cpu | |
| # - GPU (override): ghcr.io/<owner>/fulloch:<version> + :latest | |
| # Weights stay out of the images (the first-run wizard downloads them). | |
| on: | |
| push: | |
| tags: ["v*"] | |
| workflow_dispatch: # allow a manual build of the current ref | |
| permissions: | |
| contents: read | |
| packages: write | |
| jobs: | |
| build-push: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - variant: gpu | |
| dockerfile: Dockerfile | |
| suffix: "" | |
| - variant: cpu | |
| dockerfile: Dockerfile.cpu | |
| suffix: "-cpu" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # The CUDA devel base + flash-attn build is large; reclaim runner disk so | |
| # the GPU build doesn't run out of space (cheap no-op for the CPU build). | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \ | |
| /opt/hostedtoolcache/CodeQL | |
| sudo docker image prune --all --force || true | |
| df -h | |
| - uses: docker/setup-buildx-action@v3 | |
| - name: Log in to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Image metadata | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ghcr.io/${{ github.repository_owner }}/fulloch | |
| flavor: | | |
| latest=false | |
| suffix=${{ matrix.suffix }} | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=raw,value=latest | |
| # Short, suffix-free alias for the CPU image (README/run docs pull | |
| # `:cpu`). suffix= overrides the global `-cpu` flavor so it lands as | |
| # exactly `:cpu`, not `:cpu-cpu`; only emitted on the CPU matrix leg. | |
| type=raw,value=cpu,suffix=,enable=${{ matrix.variant == 'cpu' }} | |
| - name: Build and push (${{ matrix.variant }}) | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ${{ matrix.dockerfile }} | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha,scope=${{ matrix.variant }} | |
| cache-to: type=gha,mode=max,scope=${{ matrix.variant }} | |
| build-obsidian-plugin: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Build plugin | |
| working-directory: obsidian-plugin | |
| run: | | |
| npm ci | |
| npm run build | |
| zip -j fulloch-obsidian-${{ github.ref_name }}.zip manifest.json main.js | |
| - name: Upload release asset | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: obsidian-plugin/fulloch-obsidian-${{ github.ref_name }}.zip | |
| fail_on_unmatched_files: true |