chore(ci): .dockerignore + path filters on existing workflows

The repo now contains the Flutter mobile client at flutter_client/
(M7 #356). Two cleanups so the existing build pipelines don't churn
on Flutter-only changes:

1. .dockerignore — keep the Flutter project (and docs/, IDE noise,
   git metadata) out of the Docker build context. The runtime image
   was already unaffected (multi-stage drops everything but the Go
   binary), but the COPY . . layer cache invalidated on every
   Flutter edit. Build context shrinks ~2.4 MB and Flutter-only
   pushes no longer force Go rebuilds.
2. test.yml + release.yml — paths-ignore on flutter_client/**,
   docs/**, and **/*.md. Go/web tests + container build now skip
   when the diff doesn't touch them. Tag releases still build broadly
   since server + Flutter ship paired.

The Flutter-side workflow lands in M7 Task 21 with its own paths
filter restricting it to flutter_client/** and the shared web/
inputs (tokens.json, error-copy.json, album-fallback.svg).
This commit is contained in:
2026-05-02 16:05:28 -04:00
parent e46224acc9
commit d8bfdc1733
3 changed files with 46 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# Build artifacts and node_modules — never useful inside the Docker context.
**/.git
**/.gitignore
**/node_modules
**/.svelte-kit
**/build
web/build
# Flutter mobile client — built separately on developer machines / Flutter CI.
# Including it in the Go build context wastes ~70 files and invalidates the
# `COPY . .` layer cache on every Flutter-only change.
flutter_client/
# Docs and IDE noise
docs/
**/.idea
**/.vscode
**/.DS_Store
# Test outputs
**/coverage
**/.nyc_output
# Local env / secrets — fail closed.
.env
.env.*
!.env.example
# CI workflow files don't need to ship in the image.
.forgejo/
.github/
+8
View File
@@ -10,6 +10,14 @@ on:
push: push:
branches: [main] branches: [main]
tags: ['v*'] tags: ['v*']
# Tag pushes still build (tag releases are intentional, server + Flutter
# share the version). Branch pushes skip when the diff is Flutter-only —
# rebuilding the Go image for a Flutter-only merge wastes CI and churns
# the registry.
paths-ignore:
- 'flutter_client/**'
- 'docs/**'
- '**/*.md'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
+7
View File
@@ -8,8 +8,15 @@ on:
# CI on their own — opening a PR fires the pull_request event and gates # CI on their own — opening a PR fires the pull_request event and gates
# the merge. Avoids the duplicate push+pull_request runs we were # the merge. Avoids the duplicate push+pull_request runs we were
# accumulating on every PR commit. # accumulating on every PR commit.
#
# paths-ignore skips this workflow when only Flutter-client files change;
# the Flutter workflow (.forgejo/workflows/flutter.yml) handles those.
pull_request: pull_request:
branches: [main] branches: [main]
paths-ignore:
- 'flutter_client/**'
- 'docs/**'
- '**/*.md'
jobs: jobs:
test: test: