Commit Graph

7 Commits

Author SHA1 Message Date
Eligio Mariño 87eb48fdc0 ci: parallelize image validation (#453)
- Splits the monolithic `test_image` job (~20m serial) into
`build_image` + parallel `test_image` (CST) and `scan_image` (Scout)
consumers — wall-clock drops to ~15m (~5m saved per PR).

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2026-05-18 22:21:33 +02:00
Eligio Mariño 6a853e8017 feat: implement p2 image handoff (#451)
Adds the handoff plumbing that future parallelized validation (p3) will consume.

- New `Compute handoff tag` step: emits `tag` (`pr-N` or `branch-<slug>`) and `is_fork` predicate.
- `Build image` step: `load: true` replaced with multi-line `outputs:` — emits both `type=docker` (local) and `type=registry,push=true,name=...` (registry) in a single buildx run. Registry output is gated on non-fork; multi-output requires buildx ≥ 0.13 (Feb 2024, stable).
- New `Save image as artifact` + `Upload image artifact` steps (fork-PR only): `docker save | gzip` → `actions/upload-artifact@v5` with `retention-days: 1`, `compression-level: 0`.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2026-05-13 22:51:44 +02:00
Eligio Mariño 08dcebad40 ci: switch build cache to GHCR registry backend (#449)
- Swaps `cache-from`/`cache-to` in `build.yml/test_image` from
`type=gha` to a GHCR registry tag at
`ghcr.io/<owner>/flutter-android:buildcache`.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2026-05-13 21:16:58 +02:00
Eligio Mariño ae53ad7a4b feat(release): publish flutter-windows image; archive p1 (#443)
Two related units of work landing together:

**p2-release-windows-image** — adds a `release_windows` job to
`.github/workflows/release.yml` so that cutting a tag publishes
`flutter-windows:<flutter-version>` to Docker Hub, GHCR, and Quay.io
alongside the existing `flutter-android` image. Implementation details:

- Plain `docker build` with multiple `--tag`/`--label` flags parsed from
`docker/metadata-action` outputs, then `docker push` per
registry-prefixed tag. `docker/build-push-action` is not viable on
Windows containers ([issue
#18](https://github.com/docker/build-push-action/issues/18)) and
buildkit's experimental WCOW worker is not available on hosted runners.
**p1-fix-windows-ci-tests archive** — moves the completed change to
`openspec/changes/archive/2026-05-10-p1-fix-windows-ci-tests/` and
promotes the `windows-image-testing` capability spec to
`openspec/specs/`. Also picks up the refined `flutter doctor`
requirement merged from #442.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2026-05-11 22:29:14 +02:00
Eligio Mariño b8b0869a57 docs: add DeepWiki integration (#444)
- Adds a DeepWiki badge to the README header (sourced in
`docs/src/badges.mdx`, compiled into `readme.md`) linking to
`https://deepwiki.com/gmeligio/flutter-docker-image`

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2026-05-11 19:15:29 +02:00
Eligio Mariño 792b91c445 ci: test windows image (#339)
- **`windows.Dockerfile`** — fixes the `COPY` source path from
`./test/Windows.Tests.ps1` to `./test/windows/Windows.Tests.ps1` (root
cause of the 12-month "in_progress forever" state); adds `COPY
./config/version.json` to the `test` stage; replaces the commented `CMD`
with a real `CMD` so `docker run`/`docker compose run` invokes Pester
without arguments.
- **`test/windows/Windows.Tests.ps1`** — fixes the `VC.CMake.Project`
pattern typo (`,versiona*` → `,version=*`) and standardises all three
VS-component patterns to `,version=*`; adds a `Flutter version` test
that reads `config/version.json` and asserts `flutter --version` inside
the container reports the same version; adds a `Flutter doctor` test
with a per-line parser (skip disabled platforms, fail on any non-`[✓]`
for Windows toolchain lines, fail on `[✗]` elsewhere).
- **`script/RunPester.ps1`** — forces `[Console]::OutputEncoding = UTF8`
so the `[✓]`/`[!]`/`[✗]` doctor glyphs survive the `windows-2025`
runner's default OEM codepage.
- **`test/windows/`** — deletes the dead `ory/dockertest` Go skeleton
(`main.go`, `main_test.go`, `go.mod`, `go.sum`) that was never wired
into CI and had its only meaningful assertion commented out.
- **`.github/workflows/windows.yml`** — deletes three commented-out
blocks (`Scan with Docker Scout`, `Push to Docker Hub`,
`validate_version` job referencing the deleted `config/version.cue`);
drops the now-unused elevated permissions (`packages: write`,
`pull-requests: write`, `security-events: write`).

---------

Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 16:15:33 +02:00
Eligio Mariño 846ffd66cb feat(ci): adopt gx for GitHub Actions version tracking (#439)
Adopts [`gmeligio/gx`](https://github.com/gmeligio/gx) (0.7.1) as the
source of truth for GitHub Actions versions in this repo:

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 17:31:26 +02:00