Move the Manifest into Artemis
The feature manifest lives in this repository. The cutover moves it into the Artemis repository, so that an Artemis pull request that adds a feature also adds its curation. This page describes the planned steps. The cutover has not been carried out, so the manifest in this repository is the one that counts.
Why the manifest moves
With the manifest in this repository, a new Artemis feature first breaks a delivery run, and a maintainer then
catches up here. With the manifest in Artemis, the developer who adds a feature also decides how the model shows it,
in the same pull request. The pipeline already supports this through the checkout manifest source.
Preconditions
- The Artemis maintainers agree to host the file at
supportingFiles/feature-model/artemis-feature-manifest.yml. - The latest delivery run passed, so the manifest in this repository describes the current Artemis.
Steps
-
Add the file to Artemis. Open a pull request in
ls1intum/Artemisthat adds the manifest of this repository, byte for byte, assupportingFiles/feature-model/artemis-feature-manifest.yml. Mark the file-textin Artemis's.gitattributes, so that Git never changes its line endings: different bytes mean a different manifest digest and different snapshot ids. Check the pull request branch:./gradlew featureModelManifestPreflight -PartemisPath=<checkout-of-the-pull-request> -PfeatureManifestSource=checkoutThe preflight passes when the file is complete and valid. Note the Artemis commit that merges the pull request.
-
Switch this repository in one pull request.
- Set
featureManifestSource=checkoutingradle.properties. - Delete
src/main/resources/feature-model/extraction/artemis-feature-manifest.yml. - Set
delivery/artemis-validation-pinto the merge commit from step 1. - Change the snapshot id computation in
poll-artemis-delivery.ymlandpublish-snapshot-image.yml. Both compute the manifest digest from the file you delete, so they must read the manifest of the Artemis commit instead.
- Set
-
Let CI check it. The pull request checks run the pipeline in
checkoutmode against the new pin. When they pass, merge.
Between the two merges, the pipeline still runs in repository mode, but it also compares the manifest with the copy
in the Artemis checkout and fails when they differ. Do not change either file in that time.
After the cutover
Manifest changes happen in Artemis pull requests. The snapshot provenance records manifestSource as checkout.
syncGuidedWorkflowScaffold reads the manifest from the Artemis checkout, so it needs -PartemisPath:
./gradlew syncGuidedWorkflowScaffold -PartemisPath=../artemis-extraction
The guided workflow, the binding catalog, and all delivery workflows stay in this repository.
Going back
Revert the switch pull request. The manifest returns to this repository, featureManifestSource returns to
repository, and the workflows read the local file again. As long as the two files are byte-identical, the snapshot
ids do not change.