We have setup a single build configuration Keyman:Test that is triggered
when VCS changes are detected. This looks at the changes in the PR and
determines which projects need to be built. This is cleaner than the
current mess of configurations we have in TeamCity, because the
definitions are in just one place and far easier to maintain
consistently. This will also simplify all the pull request test
configurations because they won't need to be testing for safety or
other boilerplate as they will only ever be triggered by Keyma:Test
which has already run the safety tests.
The run-required-test-builds.sh script contains the logic; the data is
basically all in trigger-definitions.sh.
When the remote branch was deleted before the script ran, e.g. for
an automatically merged PR, this script would fail with error 128 from
git:
fatal: ambiguous argument 'origin/master...origin/auto/version-master-14.0.9':
unknown revision or path not in the working tree.
This handles error 128 as a signal to cancel the build rather than to
fail the build. It is possible that git would return error 128 for
other situations, but I cannot currently see any significant situations
where that would arise.
This prepares a PR with updated history and version
for auto-merge. Any new PRs are merged into HISTORY.md
but existing entries are left untouched. Thus, we can
tweak wording in HISTORY.md at any time without the
effort of figuring out which PRs need to be present
manually.