summaryrefslogtreecommitdiff
path: root/docs/gl_objects/builds.py
blob: 03d3653cb923db8767bb0663c9c7601463b22b5d (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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# var list
p_variables = project.variables.list()
g_variables = group.variables.list()
# end var list

# var get
p_var = project.variables.get('key_name')
g_var = group.variables.get('key_name')
# end var get

# var create
var = project.variables.create({'key': 'key1', 'value': 'value1'})
var = group.variables.create({'key': 'key1', 'value': 'value1'})
# end var create

# var update
var.value = 'new_value'
var.save()
# end var update

# var delete
project.variables.delete('key_name')
group.variables.delete('key_name')
# or
var.delete()
# end var delete

# trigger list
triggers = project.triggers.list()
# end trigger list

# trigger get
trigger = project.triggers.get(trigger_token)
# end trigger get

# trigger create
trigger = project.triggers.create({}) # v3
trigger = project.triggers.create({'description': 'mytrigger'}) # v4
# end trigger create

# trigger delete
project.triggers.delete(trigger_token)
# or
trigger.delete()
# end trigger delete

# pipeline trigger
def get_or_create_trigger(project):
    trigger_decription = 'my_trigger_id'
    for t in project.triggers.list():
        if t.description == trigger_decription:
            return t
    return project.triggers.create({'description': trigger_decription})

trigger = get_or_create_trigger(project)
pipeline = project.trigger_pipeline('master', trigger.token, variables={"DEPLOY_ZONE": "us-west1"})
while pipeline.finished_at is None:
    pipeline.refresh()
    os.sleep(1)

# end pipeline trigger

# list
builds = project.builds.list()  # v3
jobs = project.jobs.list()  # v4
# end list

# commit list
# v3 only
commit = gl.project_commits.get(commit_sha, project_id=1)
builds = commit.builds()
# end commit list

# pipeline list get
# v4 only
project = gl.projects.get(project_id)
pipeline = project.pipelines.get(pipeline_id)
jobs = pipeline.jobs.list()  # gets all jobs in pipeline
job = pipeline.jobs.get(job_id)  # gets one job from pipeline
# end pipeline list get

# get job
project.builds.get(build_id)  # v3
project.jobs.get(job_id)  # v4
# end get job

# artifacts
build_or_job.artifacts()
# end artifacts

# stream artifacts with class
class Foo(object):
    def __init__(self):
        self._fd = open('artifacts.zip', 'wb')

    def __call__(self, chunk):
        self._fd.write(chunk)

target = Foo()
build_or_job.artifacts(streamed=True, action=target)
del(target)  # flushes data on disk
# end stream artifacts with class

# stream artifacts with unzip
zipfn = "___artifacts.zip"
with open(zipfn, "wb") as f:
    build_or_job.artifacts(streamed=True, action=f.write)
subprocess.run(["unzip", "-bo", zipfn])
os.unlink(zipfn)
# end stream artifacts with unzip

# keep artifacts
build_or_job.keep_artifacts()
# end keep artifacts

# trace
build_or_job.trace()
# end trace

# retry
build_or_job.cancel()
build_or_job.retry()
# end retry

# erase
build_or_job.erase()
# end erase

# play
build_or_job.play()
# end play

# trigger run
project.trigger_build('master', trigger_token,
                      {'extra_var1': 'foo', 'extra_var2': 'bar'})
# end trigger run