1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/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)
|