-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpublish.py
executable file
·90 lines (72 loc) · 2.28 KB
/
publish.py
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
import kfp
import os
import argparse
from utils.auth.azure import get_access_token
# Initially derived from https://github.com/kaizentm/kubemlops
def main():
# Demonstrating how to access KFP API (publish pipeine)
# With an authentication token provided by Azure AD
#
# Usage:
# python publish.py --run_id <run_id> --kfp_host <kfp_host> --pipeline_file_path <pipeline_file_path> --pipeline_name <pipeline_name> --tenant <tenant> --service_principal <Service Principal> --sp_secret <Service Principal Secret> --sp_audience <Audience> # noqa: E501
parser = argparse.ArgumentParser("publish pipeline")
parser.add_argument(
"--run_id",
type=str,
required=True,
help="unique CI run id"
)
parser.add_argument(
"--kfp_host",
type=str,
required=False,
default="http://localhost:8080/pipeline",
help="KFP endpoint"
)
parser.add_argument(
"--pipeline_file_path",
type=str,
required=False,
default="train/default.py.tar.gz",
help="KFP pipeline file path"
)
parser.add_argument(
"--pipeline_name",
type=str,
required=True,
help="KFP pipeline name "
)
parser.add_argument(
"--tenant",
type=str,
required=True,
help="Tenant"
)
parser.add_argument(
"--service_principal",
type=str,
required=True,
help="Service Principal"
)
parser.add_argument(
"--sp_secret",
type=str,
required=True,
help="Service Principal Secret"
)
parser.add_argument(
"--sp_audience",
type=str,
required=True,
help="Service Principal Audience"
)
args = parser.parse_args()
pipeline_file_path = args.pipeline_file_path
pipeline_name = "{0}-{1}".format(args.pipeline_name, args.run_id)
token = get_access_token(args.tenant, args.service_principal, args.sp_secret, args.sp_audience) # noqa: E501
client = kfp.Client(host=args.kfp_host, existing_token=token)
pipeline_file = os.path.join(pipeline_file_path)
pipeline = client.pipeline_uploads.upload_pipeline(pipeline_file, name=pipeline_name) # noqa: E501
return pipeline.id
if __name__ == '__main__':
exit(main())