-
Notifications
You must be signed in to change notification settings - Fork 0
/
Starter_Pipeline.py
109 lines (81 loc) · 3.64 KB
/
Starter_Pipeline.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import subprocess
import os
import shutil
import requests
import json
import base64
import yaml
from jinja2 import Template, Environment, FileSystemLoader
import Auth_Creation_Module
def RenderTemp():
# Load the JSON input
with open('./DotNet_Main_Schema.json', 'r') as f:
inputs = json.load(f)
pipelineName = inputs["parameters"]["pipelineName"]["defaultValue"]
ConfigurePipeline = inputs["parameters"]["ConfigurePipeline"]["defaultValue"]
templateSelection = inputs["parameters"]["templateSelection"]["defaultValue"]
if ConfigurePipeline == "Starter Pipeline":
with open('./Variables_Jinja.json', 'r') as f:
inputs = json.load(f)
print("Input JSON loaded: ", inputs)
env = Environment(loader=FileSystemLoader('./'))
# Load the Jinja2 template
template = env.get_template('./DotNet.j2')
# Render the template using the JSON inputs
yaml_content = template.render(inputs)
print("Output of template.render function: ", yaml_content)
# Write the rendered YAML content to a file
with open('./final.yml', 'w') as f:
f.write(yaml_content)
with open('./final.yml', 'r') as f:
yaml_content = f.read()
print("Contents of final.yml: ", yaml_content)
def PushRepo():
az_repo_url = 'git clone https://dev.azure.com/ranjeet123/_git/Demo'
result = subprocess.run(az_repo_url, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode == 0:
print("Cloning from AZ repo was successful")
os.chdir("Demo") # Change the current working directory to the cloned repositor
else:
print("Cloning from AZ repo failed with error:")
if result.stderr is not None:
print(result.stderr.decode("utf-8"))
# move the file from the local file system to the repository
local_file = 'C:\\Users\\RanjeetDhole\\Desktop\\MVP Pipeline\\yaml_template\DotNet\\final.yml'
repo_file = 'final.yml'
shutil.copy(local_file, repo_file)
# Add the changes to the repository
result = subprocess.run(["git", "add", repo_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode == 0:
print("Adding changes to the repository was successful")
else:
print("Adding changes to the repository failed with error:")
if result.stderr is not None:
print(result.stderr.decode("utf-8"))
# Commit the changes
result = subprocess.run(["git", "commit", "-m", "Test commit"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode == 0:
print("Committing changes was successful")
else:
print("Committing changes failed with error:")
if result.stderr is not None:
print(result.stderr.decode("utf-8"))
result = subprocess.run(["git", "push"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) #(git push )
if result.returncode == 0:
print("Pushing changes was successful")
else:
print("Pushing changes failed with error:")
if result.stderr is not None:
print(result.stderr.decode("utf-8"))
def main():
RenderTemp()
Organization = "ranjeet123"
Project = "Demo"
Repository = "Demo"
Yaml_File = "final.yml"
Pipeline_Name = "final.yml"
Personal_Access_Token = ""
PushRepo()
Auth_Creation_Module.Authentication_PipelineCeation(Organization, Project, Repository, Yaml_File, Pipeline_Name, Personal_Access_Token)
if __name__ == "__main__":
main()