diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bbfa389b..70a3f160 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -68,6 +68,46 @@ rustfmt: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_REF_NAME == 'main' +changelog-update: + stage: lint + image: alpine:latest + # Check in the commit message for "skip.?changelog", if not present + # then check for changes in changelogs. + # XXX: It looks like $CI_COMMIT_MESSAGE mangles newlines so it's not + # possible to require the "skip.?changelog" string to be on its own line, + # that means it would also trigger within a wall of text. Not so obvious. + # TODO: Check the whole MR for updates in changelogs, not just the last + # commit. + script: + - apk add --no-cache git python3 + - echo $CI_COMMIT_MESSAGE + - | + /usr/bin/env python3 -c " + import os, re, subprocess, sys + # Skip this check if instructed + if re.search(r'skip.?changelog', os.environ['CI_COMMIT_MESSAGE'], flags=re.I) is not None: + print('Changelog skipped.') + sys.exit(0) + subprocess.run(['ls', '-l']) + subprocess.run(['git', '--version']) + subprocess.run(['git', 'log', '-1', '--oneline']) + treeish = 'main..' + if os.environ['CI_PIPELINE_SOURCE'] == 'merge_request_event': + treeish = '{}..'.format(os.environ['CI_MERGE_REQUEST_DIFF_BASE_SHA']) + diff=subprocess.run( + ['git', 'diff-tree', '--no-commit-id', '-r', treeish], + capture_output=True, + ) + print(f'FOO: {diff.stdout}\n\n{diff.stderr}') + # Verify if at least a single changelog file has been added or edited + if re.search(b'[AM]\\s+\\S*changelog', diff.stdout, flags=re.I) is None: + print('Please update the Changelog. Use \"skip-changelog\" in the commit message to skip this check.') + sys.exit(1) + print('Changelog has been updated as expected.')" + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_REF_NAME == 'main' + stable-test: extends: - .test diff --git a/xmpp/ChangeLog b/xmpp/ChangeLog index 586fbf84..25be585d 100644 --- a/xmpp/ChangeLog +++ b/xmpp/ChangeLog @@ -21,6 +21,8 @@ XXXX-YY-ZZ [ RELEASER ] - Agent::wait_for_events now return Vec and sets inner tokio_xmpp Client auto-reconnect to true... It is still aware of Event::Disconnected but should no longer have weird hanging state or panic (!436) + * CI: + - Enforce changelog updates in Gitlab CI. Version 0.6.0: 2024-07-27 [ Maxime “pep” Buquet ]