Conversation
Rename the existing devcontainer and build both native platforms through Bake. Publish one OCI index for meaningful master inputs and exact stable QGC releases, preserving application builders and read-only PR validation. Bake the locked developer tools and verify native Qt, LLVM and Clazy before promotion.
mrpollo
left a comment
There was a problem hiding this comment.
Is this image really cross arch??
| egress-policy: audit | ||
|
|
||
| - name: Enable RunsOn magic cache | ||
| if: github.repository_owner == 'mavlink' |
There was a problem hiding this comment.
Useless stop trying to make this happen; the package itself already handles this internally
There was a problem hiding this comment.
Removed the owner conditional. The shared qgc-dev action now initializes runs-on/action unconditionally before Buildx, including on hosted fallbacks. Updated in 1b85790.
| EVENT_NAME: ${{ github.event_name }} | ||
| RELEASE_TAG: ${{ github.event.release.tag_name || inputs.release_tag }} | ||
| run: | | ||
| publish=false |
There was a problem hiding this comment.
This logic is absurdly complicated and maybe better handled elsewhere in a programming language that simplifies most of it
There was a problem hiding this comment.
Moved publication planning, release/source validation, smoke orchestration, and index promotion into .github/scripts/qgc_dev.py. The workflow now orchestrates native Bake jobs rather than embedding the publication shell logic. Bake explicitly uses the checked-out release source. Updated in 1b85790.
| uses: docker/metadata-action@v6 | ||
| with: | ||
| context: git | ||
| images: ghcr.io/mavlink/qgroundcontrol-dev |
There was a problem hiding this comment.
Didn't we decide on qgc-dev as the image name?
There was a problem hiding this comment.
Renamed the existing development container consistently to qgc-dev: Docker target, Bake target, local qgc-dev:local tag, VS Code identity, and published ghcr.io/mavlink/qgc-dev package. No separate analysis image or architecture-specific public image names. Updated in 1b85790.
| provenance: false | ||
| sbom: false | ||
| cache-from: type=gha,version=2,scope=qgc-docker-devcontainer-devcontainer | ||
| cache-to: ${{ github.event_name != 'pull_request' && 'type=gha,version=2,scope=qgc-docker-devcontainer-devcontainer,mode=max' || '' }} |
There was a problem hiding this comment.
This conditional is not needed the logic will work well with GitHub actions default cache
There was a problem hiding this comment.
Removed the PR conditional from cache export. Both cache-from and cache-to use GHA v2 with native-platform scopes, backed by RunsOn Magic Cache. Registry image publication remains disabled for PRs and ordinary manual builds. Updated in 1b85790.
|
|
||
| ## Development Container | ||
|
|
||
| QGC has one default development container: the `devcontainer` target in |
There was a problem hiding this comment.
I thought we renamed this to qgc-dev??
There was a problem hiding this comment.
Updated the documentation and build commands to the qgc-dev Docker/Bake target and qgc-dev:local image. The published image is ghcr.io/mavlink/qgc-dev, with one tag serving both native architectures. Updated in 1b85790.
Use the selected release checkout for Bake, isolate manual concurrency, and preserve checkout write access for non-root acceptance builds. Apply requested RunsOn cache behavior and include the devcontainer definition in CI script test checkouts.
Retain the approved canonical qgc-dev implementation while preserving the previously published PR history. * commit 'bdd8a47120407fd018705380fa568a2d093c978a': ci(docker): reuse the existing GHCR package for development tags test(ci): enforce the default devcontainer RunsOn routing contract ci(docker): rebuild development image only for its inputs ci(docker): publish default devcontainer for master and stable releases
|
Cross-architecture support is now confirmed: QGC builds successfully inside the container on Apple Silicon locally and on Intel/AMD in CI. Both produce a Linux application. The same Bake target installs the matching dependencies for linux/amd64 and linux/arm64. Once published, one ghcr.io/mavlink/qgc-dev tag will work on both architectures. No image is published from this draft PR. |
Summary
Rename the existing development container to
qgc-devand preinstall the configured Qt, LLVM/clang-tidy, matching Clazy, ccache, Python development tools, and GitHub CLI. Docker Buildx Bake builds one image for bothlinux/amd64andlinux/arm64.Publication
Publish
ghcr.io/mavlink/qgc-dev:latest: only when container inputs change on upstreammaster.v: built from the released commit, without updatinglatest. The release workflow calls the publisher explicitly.Builds use native on-demand RunsOn runners and RunsOn S3 Magic Cache through GHA v2. Each published tag includes both architectures, and the image digest is recorded for pinning.
Scope and build status
Container-only: no analyzer adoption, application-builder changes, Docker Hub changes, or PX4 firmware tools. This draft PR does not publish an image.
QGC successfully builds inside the container on both Apple Silicon (locally, using all 14 available cores) and Intel/AMD (in CI). Both produce a Linux application. The container jobs and CI script tests pass; other platform builds are separate.