Releases: astro-tools/setup-gmat
v0.3.0
Canonical GMAT base image published on GHCR, with cosign keyless signing and a per-image gmatpy smoke gate before publish. Container-mode adoption is now a first-class recipe alongside the action.
Pull the image
docker pull ghcr.io/astro-tools/gmat:R2026a
docker run --rm ghcr.io/astro-tools/gmat:R2026a python -c 'import gmatpy'
Per-version tags: R2022a, R2025a, R2026a. The latest tag floats to the newest supported release.
Verify signatures
Every pushed digest is signed via cosign keyless OIDC. Verify before pulling on workstations or self-hosted runners:
cosign verify ghcr.io/astro-tools/gmat:R2026a \
--certificate-identity-regexp 'https://github\.com/astro-tools/setup-gmat/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
What's new
- Multi-stage
Dockerfilefor the canonical GMAT base image: ubuntu:24.04 base, pyenv-managed Python 3.10/3.11/3.12, GMAT installed andBuildApiStartupFile.pyresolved at build time,GMAT_ROOTandPYTHONPATHset soimport gmatpyworks in any of the three Pythons (#70, #72). PYTHON_VERSIONSbuild arg on the Dockerfile so downstream image builds can narrow the bundled Python set without forking the Dockerfile (#74).docker.ymlGHCR publish workflow: builds the canonical image for every supported GMAT version on eachv*.*.*tag, pushes per-version tags plus alatestalias floating to the newest supported release (#75).- Per-image smoke gate that runs
import gmatpyand a one-line propagation against each bundled Python before push, failing the workflow before any tag is published if the import or run regresses (#76). - Cosign keyless signing for every pushed digest via GitHub OIDC, with the verification one-liner documented in the README (#77).
- Container-mode docs recipe (
docs/recipes/docker.md) and runnableexamples/docker-mode.yml: how to run a job insideghcr.io/astro-tools/gmat:Rxxxxainstead of installing the action on a fresh runner (#78). - Runnable workflow files in
examples/mirroring the remaining recipe pages (pytest.yml,run-mission-script.yml,skip-on-docs.yml,multi-version.yml) so downstream repos can copy a complete.github/workflows/*.ymlverbatim (#79). - Marketplace listing pass for v0.3: branding, description, and inputs/outputs metadata refreshed (#80).
Full changelog: https://github.com/astro-tools/setup-gmat/blob/v0.3.0/CHANGELOG.md
v0.2.0
Cross-platform coverage and full version matrix. setup-gmat now installs GMAT on Linux, Windows, and macOS runners against R2022a, R2025a, or R2026a — every cell of that matrix exercised in self-CI on every PR and on a weekly cron.
Added
- Windows installer support and an OS-dispatch refactor that lifts the v0.1 Linux-hardcoded install path into per-OS
download/extractmodules (#48). - macOS DMG installer support:
hdiutil attach(read-only,-nobrowse, mountpoint underRUNNER_TEMP),cp -Rof the resolved root off the mount,hdiutil detach(#49). - Supported
versioninput expanded from R2026a-only to R2022a, R2025a, and R2026a. R2023a and R2024a were never released by NASA and are explicitly rejected with a pointer to the FAQ (#47). - Installer SHA-256 (first 12 chars) folded into the cache key, so a re-uploaded installer at the same SourceForge URL invalidates cleanly without a version bump (#50).
- Cross-platform self-CI matrix exercising every supported
(runner, version)pair on every PR —{ubuntu-latest, windows-latest, macos-latest}×{R2022a, R2025a, R2026a}, withmacos-latest × R2022aexcluded (R2022a's macOS DMG ships x86_64-onlygmatpybindings and Apple Silicon runners cannot dlopen it) (#51). - Weekly self-CI cron on
main(Mondays 06:00 UTC) — early-warning channel for SourceForge URL drift, mirror retirements, and installer-archive layout changes (#52). - Mirror-drift
drift.ymlworkflow: a daily HEAD-only liveness check across every supported(version, OS)triple that fails before a download attempt would (#53). uv-based Python 3.9 install for R2022a in the self-test matrix, sinceactions/setup-python@v5no longer ships 3.9 binaries on every runner (#55).- Multi-version compatibility recipe documenting the full
{ubuntu, windows, macos} × {R2022a, R2025a, R2026a}matrix with themacos × R2022aexclude and per-version Python pin (#56). - Troubleshooting and FAQ updates covering Windows-specific failure modes, macOS DMG mount/architecture failures, and the R2023a / R2024a version gap (#57).
- README and docs landing surface refreshed for the v0.2 surface: 3-OS quick-start matrix, supported-versions table, Python ABI per GMAT release table, and
_(current)_roadmap row updated (#58).
Changed
- v0.1's R2026a-hardcoded assumptions removed: cache key, smoke check, and version-resolution logic are now driven by the validated
versioninput rather than embedded R2026a constants (audit folded into #47). - v0.1's Linux-hardcoded assumptions removed:
download/extract/GMAT_ROOTresolution moved behind a per-OS dispatch instead of a single Linux tarball path (audit folded into #48).
Quick start
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astro-tools/setup-gmat@v0
with:
version: R2026a
cache: trueDocumentation: https://astro-tools.github.io/setup-gmat/
Full changelog: https://github.com/astro-tools/setup-gmat/blob/v0.2.0/CHANGELOG.md
v0.1.0
First usable release. Installs GMAT R2026a on Ubuntu runners and bootstraps gmatpy for use in CI.
Added
- GitHub Action that installs GMAT for the requested version on the requested runner OS, runs
BuildApiStartupFile.py, and smoke-checks the install with a one-line gmatpy propagation against a stock sample (#19, #20, #21, #22, #23, #25). - Inputs:
version(defaultR2026a),cache(defaulttrue),python-version(optional override) (#19). - Outputs:
gmat-root,gmat-version,cache-hit.GMAT_ROOTis also exported to the workflow environment so subsequent steps see it without reading outputs (#25). - Install caching via
@actions/cache, keyed on action major version, GMAT version, runner OS, and runner architecture (#24). - Self-CI on
ubuntu-latest×R2026arunning two consecutive jobs (cache miss, then cache hit) and asserting the resolved root is byte-identical between runs (#26). - Node 24 runtime, single-file
dist/index.jsbundle via@vercel/ncc, and a CI gate that fails the build ifdist/drifts fromsrc/(#1, #18). - MkDocs Material documentation site at https://astro-tools.github.io/setup-gmat/: getting started, inputs/outputs reference, FAQ, troubleshooting, and recipes (pytest, mission script, skip-on-docs) (#13, #14, #30, #31, #32).
- README rewritten around real v0.1 usage with a supported-versions table, Python prerequisite, and a matrix-CI quick-start (#12, #29, #34).
Fixed
- Resolve
GMAT_ROOTby walking installer wrapper directories instead of guessing a fixed depth, so installs whose archive layout adds an extra wrapper level still resolve correctly (#28).
Quick start
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astro-tools/setup-gmat@v0
with:
version: R2026a
cache: trueDocumentation: https://astro-tools.github.io/setup-gmat/
Full changelog: https://github.com/astro-tools/setup-gmat/blob/v0.1.0/CHANGELOG.md