-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathreact-gitops-release.yaml
More file actions
175 lines (173 loc) · 5.92 KB
/
react-gitops-release.yaml
File metadata and controls
175 lines (173 loc) · 5.92 KB
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
apiVersion: openchoreo.dev/v1alpha1
kind: Workflow
metadata:
name: react-gitops-release
namespace: default
annotations:
openchoreo.dev/description: "React workflow that builds a web application container image and performs GitOps release in a single workflow"
spec:
# Template Variable Reference (processed by controller):
# ${metadata.workflowRunName} - WorkflowRun CR name
# ${metadata.namespace} - Enforced workflow namespace (workflows-<namespaceName>)
# ${parameters.*} - Developer-provided values from parameters schema
# Schema definition for component workflows
parameters:
openAPIV3Schema:
type: object
required:
- componentName
- projectName
- repository
properties:
componentName:
type: string
description: "Component name"
projectName:
type: string
description: "Project name"
repository:
type: object
required:
- url
properties:
url:
type: string
description: "Git repository URL"
revision:
type: object
required:
- commit
properties:
branch:
type: string
default: main
description: "Git branch to checkout"
commit:
type: string
description: "Git commit SHA or reference (optional, defaults to latest)"
appPath:
type: string
default: "."
description: "Path to the React application directory within the repository"
react:
type: object
properties:
nodeVersion:
type: string
default: "18"
enum:
- "16"
- "18"
- "20"
- "22"
description: "Node.js version to use for building the React application"
buildCommand:
type: string
default: "npm run build"
description: "Command to build the React application"
outputDir:
type: string
default: "build"
description: "Build output directory (e.g., build, dist)"
workloadDescriptorPath:
type: string
default: workload.yaml
description: "Path to workload descriptor file relative to appPath"
# Rendered workflow resource for WorkflowRun executions
runTemplate:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: ${metadata.workflowRunName}
namespace: ${metadata.namespace}
spec:
arguments:
parameters:
- name: component-name
value: ${parameters.componentName}
- name: project-name
value: ${parameters.projectName}
- name: namespace-name
value: ${metadata.namespaceName}
# Source repository parameters
- name: git-repo
value: ${parameters.repository.url}
- name: branch
value: ${parameters.repository.revision.branch}
- name: commit
value: ${parameters.repository.revision.commit}
- name: app-path
value: ${parameters.repository.appPath}
# React parameters
- name: node-version
value: ${parameters.react.nodeVersion}
- name: build-command
value: ${parameters.react.buildCommand}
- name: output-dir
value: ${parameters.react.outputDir}
# PE-controlled hardcoded parameters
- name: gitops-repo-url
value: https://github.com/openchoreo/sample-gitops # Replace with your gitops repository URL
- name: gitops-branch
value: main
# GitOps git secret (for private repos and PR creation)
- name: gitops-git-secret
value: ${metadata.workflowRunName}-gitops-git-secret
- name: workload-descriptor-path
value: ${parameters.workloadDescriptorPath}
# PE-controlled hardcoded parameters
- name: registry-url
value: host.k3d.internal:10082
- name: image-name
value: ${parameters.projectName}-${parameters.componentName}-image
- name: image-tag
value: v1
# Source git secret (for private repos)
- name: source-git-secret
value: ${metadata.workflowRunName}-source-git-secret
serviceAccountName: workflow-sa
workflowTemplateRef:
clusterScope: true
name: react-gitops-release
# External secrets for accessing private repositories
resources:
- id: source-git-secret
template:
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: ${metadata.workflowRunName}-source-git-secret
namespace: ${metadata.namespace}
spec:
refreshInterval: 15s
secretStoreRef:
name: default
kind: ClusterSecretStore
target:
name: ${metadata.workflowRunName}-source-git-secret
creationPolicy: Owner
data:
- secretKey: git-token
remoteRef:
key: git-token
property: git-token
- id: gitops-git-secret
template:
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: ${metadata.workflowRunName}-gitops-git-secret
namespace: ${metadata.namespace}
spec:
refreshInterval: 15s
secretStoreRef:
name: default
kind: ClusterSecretStore
target:
name: ${metadata.workflowRunName}-gitops-git-secret
creationPolicy: Owner
data:
- secretKey: git-token
remoteRef:
key: gitops-token
property: git-token