diff options
author | Philipp Hörist <philipp@hoerist.com> | 2022-12-03 23:10:11 +0300 |
---|---|---|
committer | Philipp Hörist <philipp@hoerist.com> | 2022-12-03 23:10:11 +0300 |
commit | 52816f7f56526fce1da12692556aea70ce3d66a4 (patch) | |
tree | f1a06646592adb4d8e1f631846e24687129a32ec /.ci | |
parent | 4d501a607fd4cedfc7befae013486df341669fb3 (diff) |
ci: Automatically create Gitlab Release
Diffstat (limited to '.ci')
-rwxr-xr-x | .ci/make_release.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/.ci/make_release.py b/.ci/make_release.py new file mode 100755 index 000000000..5c97027a0 --- /dev/null +++ b/.ci/make_release.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +from __future__ import annotations + +import argparse +import logging + +from gitlab import Gitlab +from gitlab.v4.objects import Project + + +logging.basicConfig(level='INFO', format='%(levelname)s: %(message)s') +log = logging.getLogger() + + +GITLAB_INSTANCE_URL = 'https://dev.gajim.org' +PROJECT_ID = 31 + + +def adjust_milestones(project: Project, version: str) -> None: + log.info('Rename Milestone: Next Release -> %s', version) + milestones = project.milestones.list(title='Next Release', get_all=True) + assert isinstance(milestones, list) + milestone = milestones[0] + milestone.title = version + milestone.save() + + log.info('Create Milestone: Next Release') + project.milestones.create({'title': 'Next Release'}) + + +def create_release(project: Project, version: str) -> None: + log.info('Create Release: %s', version) + project.releases.create({ + 'name': version, + 'tag_name': version, + 'milestones': [version], + }) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Make Gitlab Release') + parser.add_argument('version', type=str, help='The new version string') + parser.add_argument('token', type=str, help='The API token') + args = parser.parse_args() + + + api = Gitlab(GITLAB_INSTANCE_URL, private_token=args.token) + api.auth() + project = api.projects.get(PROJECT_ID) + + adjust_milestones(project, args.version) + create_release(project, args.version) |