aboutsummaryrefslogtreecommitdiff
blob: a4180cc108b4d3913a9a784833eeb84846b85e0c (plain)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

from buildbot.plugins import schedulers, util

@util.renderer
def builderUpdateDbNames(props):
    builders = set()
    for f in props.files:
        if f.endswith('.ebuild'):
            builders.add('update_db_check')
    return list(builders)

@util.renderer
def getGitChanges(props):
    k = props.changes[0]
    change_data = {}
    print(k)
    change_data['cpvs'] = []
    for v in k['files']:
        if v.endswith('.ebuild'):
            c = v.split('/')[0]
            p = v.split('/')[1]
            pv = v.split('/')[2][:-7]
            cpv = c + '/' + pv
            change_data['cp'] = c + '/' + p
            change_data['cpvs'].append(cpv)
    if k['repository'].endswith('.git'):
        for v in k['repository'].split('/'):
            if v.endswith('.git'):
                # on gitlab we use gentoo-ci as fork of gentoo
                if v[:-4] == 'gentoo-ci':
                    change_data['repository'] = 'gentoo'
                else:
                    change_data['repository'] = v[:-4]
    change_data['author'] = k['author']
    change_data['committer'] = k['committer']
    change_data['comments'] = k['comments']
    change_data['revision'] = k['revision']
    change_data['timestamp'] = k['when_timestamp']
    change_data['branch'] = k['branch']
    change_data['project'] = k['project']
    change_data['change_id'] = k['changeid']
    return change_data

def bb_branch_fn(branch):
    # check branch
    print(f"Branch: {branch}")
    if branch.endswith('-mr') or branch.endswith('-pr') or branch.endswith('master') or branch.endswith('main'):
        return True
    return False

def bb_category_fn(category):
    # check event
    print(f"Category: {category}")
    if category == 'push' or category == 'merge_request' or category is None:
        return True
    return False

def gentoo_schedulers():
    scheduler_update_db = schedulers.SingleBranchScheduler(
        name='scheduler_update_db',
        treeStableTimer=0,
        properties = dict(
                        change_data = getGitChanges
                        ),
        builderNames = builderUpdateDbNames,
        change_filter=util.ChangeFilter(branch_fn=bb_branch_fn, category_fn=bb_category_fn),
    )
    create_images = schedulers.ForceScheduler(
        name="create_images",
        buttonName="Create images",
        label="My nice create images form",
        builderNames=['run_build_images_request'],
        # A completely customized property list.  The name of the
        # property is the name of the parameter
        properties=[
            util.StringParameter(name="project_uuid",
                    label="Project uuid",
                    default="e89c2c1a-46e0-4ded-81dd-c51afeb7fcfd", size=36),
        ])
    update_cpv_data = schedulers.Triggerable(name="update_cpv_data",
                               builderNames=["update_cpv_data"])
    update_repo_check = schedulers.Triggerable(name="update_repo_check",
                               builderNames=["update_repo_check"])
    update_v_data = schedulers.Triggerable(name="update_v_data",
                               builderNames=["update_v_data"])
    build_request_data = schedulers.Triggerable(name="build_request_data",
                               builderNames=["build_request_data"])
    run_build_request = schedulers.Triggerable(name="run_build_request",
                               builderNames=["run_build_request"])
    parse_build_log = schedulers.Triggerable(name="parse_build_log",
                               builderNames=["parse_build_log"])
    run_build_images_request = schedulers.Triggerable(name="run_build_images_request",
                               builderNames=["run_build_images_request"])
    run_clean_db_request = schedulers.Triggerable(name="run_clean_db_request",
                               builderNames=["run_clean_db_request"])
    s = []
    s.append(create_images)
    s.append(scheduler_update_db)
    s.append(update_repo_check)
    s.append(update_cpv_data)
    s.append(update_v_data)
    s.append(build_request_data)
    s.append(run_build_request)
    s.append(parse_build_log)
    s.append(run_clean_db_request)
    return s