The caller workflows live in the project repository under .github/workflows/ and typically come from templates in externpro/externpro under .github/wf-templates/.
They provide stable entrypoints for common operations while delegating the actual implementation to reusable workflows hosted in externpro/externpro.
Copy these templates into the project repo:
- Trigger
- manual
workflow_dispatch
- manual
- Calls
- Purpose
- bootstrap a repo to "speak externpro": add standard compose links, presets, and caller workflows; initialize dependency metadata
- When to use
- first-time externpro initialization in a repo
- re-initialize when moving the project to a new BASE upstream tag/ref (i.e., a new upstream release)
- Start a new repo or fork the upstream repo.
- Identify a BASE tag (fork) or create
v0at the first commit (new repo). - Create branch
xproand set it as the default branch. - Add externpro as a submodule:
git submodule add https://github.com/externpro/externpro .devcontainer- Copy
.devcontainer/.github/wf-templates/xpinit.ymlinto the repo’s.github/workflows/and commit. - Push
xproto GitHub.
For the repo wiring and CMake integration checklist, see How-to: adopt externpro.
- Validates the externpro submodule path (
.devcontainer). - Creates a unique
xpinit-*branch. - Adds/updates:
docker-compose.sh+docker-compose.ymllinksCMakePresets*.github/workflows/xp*.ymlcaller workflows.github/release-tag.json(release intent).gitignoreexternpro entries
- Optionally applies
patches/*.patchviagit am. - Configures/snapshots dependency artifacts.
- Pushes a branch and opens a PR (labels include
xpinit,dependencies), closing supersededxpinit-*PRs.
- Trigger
- manual
workflow_dispatch
- manual
- Calls
- Purpose
- update the externpro submodule pointer, sync caller workflows from templates, refresh presets/dependency artifacts, and open a PR
target_ref(default:main)- update externpro to a branch/tag/commit
preserve_existing_branches(default:false)- preserve branch filters in existing caller workflows rather than taking them from templates
- Updates the externpro submodule to
target_ref(if needed). - Syncs
.github/workflows/from templates (unless preserving). - Compares/updates CMake presets.
- Updates dependency artifacts.
- If anything changed, pushes a branch and opens a PR (labels include
xpupdate,dependencies), closing supersededxpupdate-*PRs.
- Triggers (default template)
- pull request targeting
xpro - tag push matching
xpv* - manual
workflow_dispatch
- pull request targeting
- Calls
- Purpose
- run the standard build matrix and produce artifacts for release/tag builds
- Trigger (default template)
- pull request
closed
- pull request
- Condition
- PR merged into
xproand PR has labelrelease:tag
- PR merged into
- Calls
- Purpose
- on merge, create and push a signed/annotated tag based on
.github/release-tag.json
- on merge, create and push a signed/annotated tag based on
- Triggers (default template)
workflow_runafterxpBuildcompletes- manual
workflow_dispatchwith aworkflow_run_url
- Behavior
- automatically dispatches a release run when a successful
xpBuildcompletes for anxpv*tag
- automatically dispatches a release run when a successful
- Calls
- Purpose
- create a draft GitHub Release from a build run’s artifacts (and attach provenance)