Skip to content

ci: run External CI from the manifest.json of the revision under test; real conclusions for notify repos - #299

Open
devin-ai-integration[bot] wants to merge 5 commits into
develfrom
devin/1794448189-ext-ci-manifest-selftest
Open

devin-ai-integration[bot] wants to merge 5 commits into
develfrom
devin/1794448189-ext-ci-manifest-selftest

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Related Issue(s) nasa#6378 (first entry this benefits)
Has Unit Tests (y/n) n (offline stubbed-API scenarios run locally, see below)
Documentation Included (y/n) y (.github/actions/ext-ci/README.md)
Generative AI was used in this contribution (y/n) AI

Change Description

orchestrator.py only; the workflows are unchanged.

  • The revision under test dictates manifest.json. head_manifest() reads it from the PR head, merge-queue commit or manual fprime_ref through this repository's contents API (data only; the workflow and the script still come from the default branch, whose copy now only serves the upstream_repository preflight). A PR that adds or edits an entry therefore exercises it on its own checks. Entries the default branch does not have are marked new when the PR edits the manifest, and select_repos() ignores on_pr: false for them: the PR that introduces an entry is the one run it must get. Duplicate ids or a missing file fail early with a clear message.
  • Real conclusions for failure_policy: notify. check_conclusion() and finalize() no longer map failures to neutral: GitHub folds neutral checks into the collapsed app group and out of the merge box, which read as "the check disappeared when it failed" on ci: add STM32H753XI-EVAL2 to supported platforms and external CI work… nasa/fprime#6378. notify now only keeps the orchestrator job green; the check summary says the failure is informational.
  • Remote run held in a protected environment (waiting): the check is retitled "Waiting for approval in " and both timeout clocks restart when it is released (hil.yml runs its hosted job before the gated one, so the old run_started_at clock would have eaten the running allowance).
  • dispatch failed on 403/404 hints at the External CI App installation (403 is what the stm32 repo returned before it was added).

Rationale

Requested: a PR adding a manifest entry should run that entry and report it on its own checks, with the PR head's manifest used as is (reviewed like any ci.yml), without checking out PR code in the privileged workflow_run job.

Testing/Review Recommendations

  • Offline, with a fake GitHub API (16 scenarios): fork PR adding stm32-baremetal (on_pr: false, notify) dispatches both entries with fprime_repository=<fork>, waits through waiting, ends as a failure check and a green job; unchanged manifest keeps default behaviour (devel on_pr: false entry filtered); edited existing entry used as is; merge group and manual fprime_ref/pr_number runs read the manifest of that revision; stale branch carrying an entry removed on devel does not get new; duplicate ids / missing manifest raise before any Check Run; dispatch 403 → hint + failed check + exit 1; block failure/cancelled/timed_out mappings; paths_ignore-only PR → skipped checks; finalize after cancellation → cancelled, after a crash → failure; fork of F´ no-op; attempt 2 re-dispatches only non-green checks.
  • Live: gh api repos/nasa/fprime/contents/.github/actions/ext-ci/manifest.json?ref=<fork PR head sha> returns the fork PR's file for an open fork PR whose SHA is on no nasa/fprime branch, which is what head_manifest() relies on.
  • End to end once on devel: rebase ci: add STM32H753XI-EVAL2 to supported platforms and external CI work… nasa/fprime#6378; its External CI / stm32-baremetal check should appear (cross-compile only: hil.yml skips the board for fprime_repository != nasa/fprime).

Future Work

Merge-queue runs dispatch every entry (on_pr only applies to PR heads), so a hardware entry in a merge group would wait for the external repo's environment approval; nasa/fprime does not use the merge queue today.

Contributor Checklist

AI Usage (see policy)

Code, documentation and the offline test scenarios were written by an AI agent under maintainer direction.

IAMAI


🟢 Devin Review found nothing to fix · View findings · Follow Devin's work

Devin Review

@devin-ai-integration

Copy link
Copy Markdown
Author

I'll fix CI failures and address comments from users with write access that start with 'Devin'.

  • Disable automatic comment, CI, and merge conflict monitoring

Prompt hidden (unlisted session)

@devin-ai-integration devin-ai-integration Bot left a comment •

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@devin-ai-integration devin-ai-integration Bot changed the title ci: run the manifest entries a PR adds as "(proposed)" External CI checks on that PR ci: run External CI from the manifest.json of the PR that edits it Nov 12, 2026
…clusions for notify repos

- head_manifest(): always read manifest.json from the F´ revision under test (PR head, merge-queue
  commit or manual fprime_ref) through this repository's contents API; the default branch's copy
  only serves the upstream_repository preflight and the baseline for `new` entries. `new` is only
  set when the PR itself edits manifest.json, so a stale branch does not resurrect a removed entry.
  Duplicate ids and a missing file fail early with a clear error.
- check_conclusion()/finalize(): failure_policy no longer maps failures to `neutral` (GitHub folds
  neutral checks away in the merge box and the Checks sidebar); notify repos show the real
  conclusion and only keep the orchestrator job green.
- dispatch hint also on 403 (observed when the repo was not yet in the App installation).
@devin-ai-integration
devin-ai-integration Bot force-pushed the devin/1794448189-ext-ci-manifest-selftest branch from 01c43d3 to 744cf36 Compare November 12, 2026 03:08
@devin-ai-integration devin-ai-integration Bot changed the title ci: run External CI from the manifest.json of the PR that edits it ci: run External CI from the manifest.json of the revision under test; real conclusions for notify repos Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant