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
|
#!/usr/bin/env python3
# Implements https://circleci.com/docs/api/v2/#trigger-a-new-pipeline
import argparse
import os
import requests
import sys
def TriggerPiperline(slug, token, branch, params):
url = "https://circleci.com/api/v2/project/github/%s/pipeline" % (slug)
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
}
data = {
"parameters": params
}
if branch:
data["branch"] = branch
r = requests.post(url, auth=(token, ""), headers=headers, json=data)
if r.status_code != 201:
print("Error triggering the CircleCI: %s." % r.json()["message"])
sys.exit(1)
def Main():
token = os.getenv("CIRCLE_API_TOKEN")
hash = os.getenv("CIRCLE_SHA1", default="1234567890")
username = os.getenv("CIRCLE_PROJECT_USERNAME", default="username")
project = os.getenv("CIRCLE_PROJECT_REPONAME", default="repository")
parser = argparse.ArgumentParser(
description="Creates CircleCI jobs and waits for the result.")
parser.add_argument("--token", default=token,
help="CircleCI token, otherwise environment CIRCLE_API_TOKEN.")
parser.add_argument("--origin-slug", default="mapbox/mapbox-gl-native",
help="Origin repository, otherwise CIRCLE_PROJECT_USERNAME/CIRCLE_PROJECT_REPONAME.")
parser.add_argument("--target-slug", default="".join((username, '/', project)),
help="Repository to trigger the pipeline, example: mapbox/mapbox-gl-native-internal.")
parser.add_argument("--hash", default=hash,
help="Commit git hash that triggered the pipeline, otherwise environment CIRCLE_SHA1.")
parser.add_argument("--branch",
help="Build a specific branch, otherwise it will build the default branch.")
args = parser.parse_args()
if not args.token:
print("CircleCI token not set. Use --token or set CIRCLE_API_TOKEN.")
sys.exit(1)
params = {
"mapbox_upstream": True,
"mapbox_slug": args.origin_slug,
"mapbox_hash": args.hash
}
TriggerPiperline(args.target_slug, args.token, args.branch, params)
return 0
if __name__ == "__main__":
Main()
|