Skip to content

Commit e6ae118

Browse files
authored
Merge pull request #110 from abolfazl8131/master
fix(helm prompt): fix helm prompt to not put json in .yaml
2 parents ed0ebc7 + 1bc3fe4 commit e6ae118

31 files changed

Lines changed: 436 additions & 491 deletions
Lines changed: 98 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,116 +1,122 @@
11
import os
22

33
project_name = "app/media/MyHelm"
4-
charts_dir = os.path.join(project_name, "charts")
5-
templates_dir = os.path.join(project_name, "templates")
6-
web_dir = os.path.join(templates_dir, "web")
4+
directories = ["charts", "templates", "templates/web"]
5+
files = ["Chart.yaml", "values.yaml"]
6+
template_files = ["service.yaml", "deployment.yaml", "secrets.yaml", "helpers.tpl"]
7+
ingress_enabled = False
8+
stateless_enabled = True
9+
persistence = True
710

8-
# Create project directories
9-
os.makedirs(charts_dir, exist_ok=True)
10-
os.makedirs(templates_dir, exist_ok=True)
11-
os.makedirs(web_dir, exist_ok=True)
11+
os.makedirs(project_name, exist_ok=True)
12+
13+
for directory in directories:
14+
os.makedirs(os.path.join(project_name, directory), exist_ok=True)
1215

13-
# Create Chart.yaml
1416
with open(os.path.join(project_name, "Chart.yaml"), "w") as chart_file:
1517
chart_file.write("apiVersion: v2\n")
1618
chart_file.write("name: MyHelm\n")
1719
chart_file.write("description: A Helm chart for Kubernetes\n")
1820
chart_file.write("version: 0.1.0\n")
1921

20-
# Create values.yaml
2122
with open(os.path.join(project_name, "values.yaml"), "w") as values_file:
2223
values_file.write("web:\n")
2324
values_file.write(" image: nginx\n")
2425
values_file.write(" targetPort: 80\n")
2526
values_file.write(" replicas: 1\n")
26-
values_file.write(" persistence:\n")
27-
values_file.write(" size: 1Gi\n")
28-
values_file.write(" accessModes:\n")
29-
values_file.write(" - ReadWriteOnce\n")
27+
if persistence:
28+
values_file.write(" persistence:\n")
29+
values_file.write(" size: 1Gi\n")
30+
values_file.write(" accessModes: \n")
31+
values_file.write(" - ReadWriteOnce\n")
32+
if ingress_enabled:
33+
values_file.write(" ingress:\n")
34+
values_file.write(" enabled: true\n")
35+
values_file.write(" host: www.example.com\n")
36+
values_file.write(" stateless:\n")
37+
values_file.write(" enabled: true\n")
3038
values_file.write(" env:\n")
3139
values_file.write(" - name: ENV1\n")
3240
values_file.write(" value: Hi\n")
33-
values_file.write(" ingress:\n")
34-
values_file.write(" enabled: false\n")
35-
values_file.write(" host: www.example.com\n")
36-
values_file.write(" stateless:\n")
37-
values_file.write(" enabled: false\n")
3841

39-
# Create service.yaml
40-
with open(os.path.join(web_dir, "service.yaml"), "w") as service_file:
41-
service_file.write("apiVersion: v1\n")
42-
service_file.write("kind: Service\n")
43-
service_file.write("metadata:\n")
44-
service_file.write(" name: web-service\n")
45-
service_file.write("spec:\n")
46-
service_file.write(" type: ClusterIP\n")
47-
service_file.write(" ports:\n")
48-
service_file.write(" - port: 80\n")
49-
service_file.write(" targetPort: {{ .Values.web.targetPort }}\n")
50-
service_file.write(" selector:\n")
51-
service_file.write(" app: web\n")
42+
for template in template_files:
43+
with open(os.path.join(project_name, "templates", template), "w") as template_file:
44+
if template == "service.yaml":
45+
template_file.write("apiVersion: v1\n")
46+
template_file.write("kind: Service\n")
47+
template_file.write("metadata:\n")
48+
template_file.write(" name: {{ .Release.Name }}-web\n")
49+
template_file.write("spec:\n")
50+
template_file.write(" ports:\n")
51+
template_file.write(" - port: 80\n")
52+
template_file.write(" targetPort: {{ .Values.web.targetPort }}\n")
53+
template_file.write(" selector:\n")
54+
template_file.write(" app: {{ .Release.Name }}-web\n")
55+
56+
if stateless_enabled and template == "deployment.yaml":
57+
template_file.write("apiVersion: apps/v1\n")
58+
template_file.write("kind: Deployment\n")
59+
template_file.write("metadata:\n")
60+
template_file.write(" name: {{ .Release.Name }}-web\n")
61+
template_file.write("spec:\n")
62+
template_file.write(" replicas: {{ .Values.web.replicas }}\n")
63+
template_file.write(" selector:\n")
64+
template_file.write(" matchLabels:\n")
65+
template_file.write(" app: {{ .Release.Name }}-web\n")
66+
template_file.write(" template:\n")
67+
template_file.write(" metadata:\n")
68+
template_file.write(" labels:\n")
69+
template_file.write(" app: {{ .Release.Name }}-web\n")
70+
template_file.write(" spec:\n")
71+
template_file.write(" containers:\n")
72+
template_file.write(" - name: web\n")
73+
template_file.write(" image: {{ .Values.web.image }}\n")
74+
template_file.write(" ports:\n")
75+
template_file.write(" - containerPort: {{ .Values.web.targetPort }}\n")
76+
template_file.write(" env:\n")
77+
template_file.write(" - name: {{ .Values.env[0].name }}\n")
78+
template_file.write(" value: {{ .Values.env[0].value }}\n")
5279

53-
# Create statefulset.yaml (since stateless is false)
54-
with open(os.path.join(web_dir, "statefulset.yaml"), "w") as statefulset_file:
55-
statefulset_file.write("apiVersion: apps/v1\n")
56-
statefulset_file.write("kind: StatefulSet\n")
57-
statefulset_file.write("metadata:\n")
58-
statefulset_file.write(" name: web\n")
59-
statefulset_file.write("spec:\n")
60-
statefulset_file.write(" serviceName: web-service\n")
61-
statefulset_file.write(" replicas: {{ .Values.web.replicas }}\n")
62-
statefulset_file.write(" selector:\n")
63-
statefulset_file.write(" matchLabels:\n")
64-
statefulset_file.write(" app: web\n")
65-
statefulset_file.write(" template:\n")
66-
statefulset_file.write(" metadata:\n")
67-
statefulset_file.write(" labels:\n")
68-
statefulset_file.write(" app: web\n")
69-
statefulset_file.write(" spec:\n")
70-
statefulset_file.write(" containers:\n")
71-
statefulset_file.write(" - name: web\n")
72-
statefulset_file.write(" image: {{ .Values.web.image }}\n")
73-
statefulset_file.write(" ports:\n")
74-
statefulset_file.write(" - containerPort: {{ .Values.web.targetPort }}\n")
75-
statefulset_file.write(" env:\n")
76-
statefulset_file.write(" - name: {{ .Values.web.env[0].name }}\n")
77-
statefulset_file.write(" value: {{ .Values.web.env[0].value }}\n")
78-
statefulset_file.write(" volumeClaimTemplates:\n")
79-
statefulset_file.write(" - metadata:\n")
80-
statefulset_file.write(" name: web-pvc\n")
81-
statefulset_file.write(" spec:\n")
82-
statefulset_file.write(" accessModes:\n")
83-
statefulset_file.write(" - {{ .Values.web.persistence.accessModes[0] }}\n")
84-
statefulset_file.write(" resources:\n")
85-
statefulset_file.write(" requests:\n")
86-
statefulset_file.write(" storage: {{ .Values.web.persistence.size }}\n")
80+
if template == "secrets.yaml":
81+
template_file.write("apiVersion: v1\n")
82+
template_file.write("kind: Secret\n")
83+
template_file.write("metadata:\n")
84+
template_file.write(" name: {{ .Release.Name }}-secret\n")
85+
template_file.write("type: Opaque\n")
86+
template_file.write("data:\n")
87+
template_file.write(" # Insert your base64 encoded secrets here\n")
8788

88-
# Create pvc.yaml
89-
with open(os.path.join(web_dir, "pvc.yaml"), "w") as pvc_file:
90-
pvc_file.write("apiVersion: v1\n")
91-
pvc_file.write("kind: PersistentVolumeClaim\n")
92-
pvc_file.write("metadata:\n")
93-
pvc_file.write(" name: web-pvc\n")
94-
pvc_file.write("spec:\n")
95-
pvc_file.write(" accessModes:\n")
96-
pvc_file.write(" - {{ .Values.web.persistence.accessModes[0] }}\n")
97-
pvc_file.write(" resources:\n")
98-
pvc_file.write(" requests:\n")
99-
pvc_file.write(" storage: {{ .Values.web.persistence.size }}\n")
89+
if template == "helpers.tpl":
90+
template_file.write("{{/* Add your helper functions here */}}\n")
10091

101-
# Create secrets.yaml
102-
with open(os.path.join(web_dir, "secrets.yaml"), "w") as secrets_file:
103-
secrets_file.write("apiVersion: v1\n")
104-
secrets_file.write("kind: Secret\n")
105-
secrets_file.write("metadata:\n")
106-
secrets_file.write(" name: web-secrets\n")
107-
secrets_file.write("type: Opaque\n")
108-
secrets_file.write("data:\n")
109-
secrets_file.write(" # Add your base64 encoded secrets here\n")
92+
if persistence:
93+
with open(os.path.join(project_name, "templates", "pvc.yaml"), "w") as pvc_file:
94+
pvc_file.write("apiVersion: v1\n")
95+
pvc_file.write("kind: PersistentVolumeClaim\n")
96+
pvc_file.write("metadata:\n")
97+
pvc_file.write(" name: {{ .Release.Name }}-web-pvc\n")
98+
pvc_file.write("spec:\n")
99+
pvc_file.write(" accessModes:\n")
100+
pvc_file.write(" - {{ .Values.web.persistence.accessModes | first }}\n")
101+
pvc_file.write(" resources:\n")
102+
pvc_file.write(" requests:\n")
103+
pvc_file.write(" storage: {{ .Values.web.persistence.size }}\n")
110104

111-
# Create helpers.tpl
112-
with open(os.path.join(web_dir, "helpers.tpl"), "w") as helpers_file:
113-
helpers_file.write("# Define any helpers here\n")
114-
helpers_file.write("define \"web.fullname\" \n")
115-
helpers_file.write(" {{ .Release.Name }}-{{ .Values.web.name }} \n")
116-
helpers_file.write("end\n")
105+
if ingress_enabled:
106+
with open(os.path.join(project_name, "templates", "ingress.yaml"), "w") as ingress_file:
107+
ingress_file.write("apiVersion: networking.k8s.io/v1\n")
108+
ingress_file.write("kind: Ingress\n")
109+
ingress_file.write("metadata:\n")
110+
ingress_file.write(" name: {{ .Release.Name }}-web-ingress\n")
111+
ingress_file.write("spec:\n")
112+
ingress_file.write(" rules:\n")
113+
ingress_file.write(" - host: {{ .Values.web.ingress.host }}\n")
114+
ingress_file.write(" http:\n")
115+
ingress_file.write(" paths:\n")
116+
ingress_file.write(" - path: /\n")
117+
ingress_file.write(" pathType: Prefix\n")
118+
ingress_file.write(" backend:\n")
119+
ingress_file.write(" service:\n")
120+
ingress_file.write(" name: {{ .Release.Name }}-web\n")
121+
ingress_file.write(" port:\n")
122+
ingress_file.write(" number: 80\n")
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import os
2+
project_name = "app/media/MyJcasc"
3+
jcasc_dir = os.path.join(project_name, "jcasc")
4+
os.makedirs(jcasc_dir, exist_ok=True)
5+
6+
jcasc_content = """
7+
systemMessage: "Welcome to Jenkins configured via JCasC"
8+
author:
9+
name: "admin"
10+
password: "password"
11+
allowSignup: true
12+
allowAnonymousRead: true
13+
cache_size: 1
14+
executors: 1
15+
required_plugins:
16+
- "string"
17+
views:
18+
- list:
19+
name: "All"
20+
authorizationStrategy:
21+
projectMatrix:
22+
grantedPermissions:
23+
- "Overall/Administer:admin"
24+
- "Job/Read:developer"
25+
- "Job/Build:developer"
26+
tools:
27+
git:
28+
installations:
29+
- name: "Default"
30+
home: "/usr/bin/git"
31+
security:
32+
globalJobDslSecurityConfiguration:
33+
useScriptSecurity: false
34+
"""
35+
36+
with open(os.path.join(jcasc_dir, "config.yaml"), "w") as f:
37+
f.write(jcasc_content.strip())

0 commit comments

Comments
 (0)