Skip to content

Commit 21451d5

Browse files
feat: all env at one place (#4961)
* all env at one place * fixed makefile * reverted wire_gen
1 parent fa1ba06 commit 21451d5

File tree

3 files changed

+367
-1
lines changed

3 files changed

+367
-1
lines changed

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!make
22

3-
all: build
3+
all: fetch-all-env build
44

55
TAG?=$(shell bash -c 'git log --pretty=format:'%h' -n 1')
66
FLAGS=
@@ -63,3 +63,7 @@ build-all: build
6363

6464
build-ea:
6565
make --directory ./cmd/external-app build
66+
67+
68+
fetch-all-env:
69+
go run fetchAllEnv/fetchAllEnv.go

env_gen.md

Lines changed: 240 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,240 @@
1+
2+
## Devtron Environment Variables
3+
| Key | Value | Description |
4+
|-------|--------------|-------------------|
5+
| ACD_CM | argocd-cm | |
6+
| ACD_NAMESPACE | devtroncd | |
7+
| ACD_PASSWORD | | |
8+
| ACD_USERNAME | admin | |
9+
| APP | orchestrator | |
10+
| APP_SYNC_IMAGE | quay.io/devtron/chart-sync:1227622d-132-3775 | |
11+
| APP_SYNC_JOB_RESOURCES_OBJ | | |
12+
| ARGO_APP_MANUAL_SYNC_TIME | 3 | |
13+
| ARGO_AUTO_SYNC_ENABLED | true | |
14+
| AZURE_ACCOUNT_KEY | | |
15+
| AZURE_ACCOUNT_NAME | | |
16+
| AZURE_BLOB_CONTAINER_CI_CACHE | | |
17+
| AZURE_BLOB_CONTAINER_CI_LOG | | |
18+
| AZURE_GATEWAY_CONNECTION_INSECURE | true | |
19+
| AZURE_GATEWAY_URL | http://devtron-minio.devtroncd:9000 | |
20+
| BASE_LOG_LOCATION_PATH | /home/devtron/ | |
21+
| BATCH_SIZE | 5 | |
22+
| BLOB_STORAGE_ENABLED | false | |
23+
| BLOB_STORAGE_GCP_CREDENTIALS_JSON | | |
24+
| BLOB_STORAGE_PROVIDER | S3 | |
25+
| BLOB_STORAGE_S3_ACCESS_KEY | | |
26+
| BLOB_STORAGE_S3_BUCKET_VERSIONED | true | |
27+
| BLOB_STORAGE_S3_ENDPOINT | | |
28+
| BLOB_STORAGE_S3_ENDPOINT_INSECURE | false | |
29+
| BLOB_STORAGE_S3_SECRET_KEY | | |
30+
| BUILDX_CACHE_PATH | /var/lib/devtron/buildx | |
31+
| BUILDX_K8S_DRIVER_OPTIONS | | |
32+
| BUILDX_PROVENANCE_MODE | | |
33+
| BUILD_LOG_TTL_VALUE_IN_SECS | 3600 | |
34+
| CACHE_LIMIT | 5000000000 | |
35+
| CASBIN_DATABASE | casbin | |
36+
| CD_ARTIFACT_LOCATION_FORMAT | %d/%d.zip | |
37+
| CD_DEFAULT_ADDRESS_POOL_BASE_CIDR | | |
38+
| CD_DEFAULT_ADDRESS_POOL_SIZE | | |
39+
| CD_HELM_PIPELINE_STATUS_CRON_TIME | */2 * * * * | |
40+
| CD_HOST | localhost | |
41+
| CD_LIMIT_CI_CPU | 0.5 | |
42+
| CD_LIMIT_CI_MEM | 3G | |
43+
| CD_NAMESPACE | devtroncd | |
44+
| CD_NODE_LABEL_SELECTOR | | |
45+
| CD_NODE_TAINTS_KEY | dedicated | |
46+
| CD_NODE_TAINTS_VALUE | ci | |
47+
| CD_PIPELINE_STATUS_CRON_TIME | */2 * * * * | |
48+
| CD_PIPELINE_STATUS_TIMEOUT_DURATION | 20 | |
49+
| CD_PORT | 8000 | |
50+
| CD_REQ_CI_CPU | 0.5 | |
51+
| CD_REQ_CI_MEM | 3G | |
52+
| CD_WORKFLOW_EXECUTOR_TYPE | AWF | |
53+
| CD_WORKFLOW_SERVICE_ACCOUNT | cd-runner | |
54+
| CExpirationTime | 600 | |
55+
| CI_ARTIFACT_LOCATION_FORMAT | %d/%d.zip | |
56+
| CI_DEFAULT_ADDRESS_POOL_BASE_CIDR | | |
57+
| CI_DEFAULT_ADDRESS_POOL_SIZE | | |
58+
| CI_IGNORE_DOCKER_CACHE | | |
59+
| CI_LOGS_KEY_PREFIX | | |
60+
| CI_NODE_LABEL_SELECTOR | | |
61+
| CI_NODE_TAINTS_KEY | | |
62+
| CI_NODE_TAINTS_VALUE | | |
63+
| CI_RUNNER_DOCKER_MTU_VALUE | -1 | |
64+
| CI_SUCCESS_AUTO_TRIGGER_BATCH_SIZE | 1 | |
65+
| CI_TRIGGER_CRON_TIME | 2 | |
66+
| CI_VOLUME_MOUNTS_JSON | | |
67+
| CI_WORKFLOW_EXECUTOR_TYPE | AWF | |
68+
| CI_WORKFLOW_STATUS_UPDATE_CRON | */5 * * * * | |
69+
| CLI_CMD_TIMEOUT_GLOBAL_SECONDS | 0 | |
70+
| CLUSTER_STATUS_CRON_TIME | 15 | |
71+
| CONSUMER_CONFIG_JSON | | |
72+
| DASHBOARD_HOST | localhost | |
73+
| DASHBOARD_NAMESPACE | devtroncd | |
74+
| DASHBOARD_PORT | 3000 | |
75+
| DEFAULT_ARTIFACT_KEY_LOCATION | arsenal-v1/ci-artifacts | |
76+
| DEFAULT_BUILD_LOGS_BUCKET | devtron-pro-ci-logs | |
77+
| DEFAULT_BUILD_LOGS_KEY_PREFIX | arsenal-v1 | |
78+
| DEFAULT_CACHE_BUCKET | ci-caching | |
79+
| DEFAULT_CACHE_BUCKET_REGION | us-east-2 | |
80+
| DEFAULT_CD_ARTIFACT_KEY_LOCATION | | |
81+
| DEFAULT_CD_LOGS_BUCKET_REGION | us-east-2 | |
82+
| DEFAULT_CD_NAMESPACE | | |
83+
| DEFAULT_CD_TIMEOUT | 3600 | |
84+
| DEFAULT_CI_IMAGE | 686244538589.dkr.ecr.us-east-2.amazonaws.com/cirunner:47 | |
85+
| DEFAULT_LOG_TIME_LIMIT | 1 | |
86+
| DEFAULT_NAMESPACE | devtron-ci | |
87+
| DEFAULT_TARGET_PLATFORM | | |
88+
| DEFAULT_TIMEOUT | 3600 | |
89+
| DEPLOY_STATUS_CRON_GET_PIPELINE_DEPLOYED_WITHIN_HOURS | 12 | |
90+
| DEVTRON_BOM_URL | https://raw.githubusercontent.com/devtron-labs/devtron/%s/charts/devtron/devtron-bom.yaml | |
91+
| DEVTRON_CHART_INSTALL_REQUEST_TIMEOUT | 6 | |
92+
| DEVTRON_DEFAULT_NAMESPACE | devtroncd | |
93+
| DEVTRON_DEX_SECRET_NAMESPACE | devtroncd | |
94+
| DEVTRON_HELM_RELEASE_CHART_NAME | devtron-operator | |
95+
| DEVTRON_HELM_RELEASE_NAME | devtron | |
96+
| DEVTRON_HELM_RELEASE_NAMESPACE | devtroncd | |
97+
| DEVTRON_HELM_REPO_NAME | devtron | |
98+
| DEVTRON_HELM_REPO_URL | https://helm.devtron.ai | |
99+
| DEVTRON_INSTALLATION_TYPE | | |
100+
| DEVTRON_MODULES_IDENTIFIER_IN_HELM_VALUES | installer.modules | |
101+
| DEVTRON_SECRET_NAME | devtron-secret | |
102+
| DEVTRON_VERSION_IDENTIFIER_IN_HELM_VALUES | installer.release | |
103+
| DEX_CID | example-app | |
104+
| DEX_CLIENT_ID | argo-cd | |
105+
| DEX_CSTOREKEY | | |
106+
| DEX_HOST | http://localhost | |
107+
| DEX_JWTKEY | | |
108+
| DEX_PORT | 5556 | |
109+
| DEX_RURL | http://127.0.0.1:8080/callback | |
110+
| DEX_SECRET | | |
111+
| DEX_URL | | |
112+
| DOCKER_BUILD_CACHE_PATH | /var/lib/docker | |
113+
| ECR_REPO_NAME_PREFIX | test/ | |
114+
| ENABLE_ASYNC_INSTALL_DEVTRON_CHART | false | |
115+
| ENABLE_BUILD_CONTEXT | false | |
116+
| ENFORCER_CACHE | false | |
117+
| ENFORCER_CACHE_EXPIRATION_IN_SEC | 86400 | |
118+
| ENFORCER_MAX_BATCH_SIZE | 1 | |
119+
| EPHEMERAL_SERVER_VERSION_REGEX | v[1-9]\.\b(2[3-9]|[3-9][0-9])\b.* | |
120+
| EVENT_URL | http://localhost:3000/notify | |
121+
| EXPOSE_CD_METRICS | false | |
122+
| EXPOSE_CI_METRICS | false | |
123+
| EXTERNAL_BLOB_STORAGE_CM_NAME | blob-storage-cm | |
124+
| EXTERNAL_BLOB_STORAGE_SECRET_NAME | blob-storage-secret | |
125+
| EXTERNAL_CD_NODE_LABEL_SELECTOR | | |
126+
| EXTERNAL_CD_NODE_TAINTS_KEY | dedicated | |
127+
| EXTERNAL_CD_NODE_TAINTS_VALUE | ci | |
128+
| EXTERNAL_CI_API_SECRET | devtroncd-secret | |
129+
| EXTERNAL_CI_PAYLOAD | {"ciProjectDetails":[{"gitRepository":"https://github.com/vikram1601/getting-started-nodejs.git","checkoutPath":"./abc","commitHash":"239077135f8cdeeccb7857e2851348f558cb53d3","commitTime":"2022-10-30T20:00:00","branch":"master","message":"Update README.md","author":"User Name "}],"dockerImage":"445808685819.dkr.ecr.us-east-2.amazonaws.com/orch:23907713-2"} | |
130+
| EXTERNAL_CI_WEB_HOOK_URL | | |
131+
| FORCE_SECURITY_SCANNING | false | |
132+
| GITOPS_REPO_PREFIX | | |
133+
| GITOPS_SECRET_NAME | devtron-gitops-secret | |
134+
| GIT_SENSOR_PROTOCOL | REST | |
135+
| GIT_SENSOR_TIMEOUT | 0 | |
136+
| GIT_SENSOR_URL | 127.0.0.1:7070 | |
137+
| GRAFANA_HOST | localhost | |
138+
| GRAFANA_NAMESPACE | devtroncd | |
139+
| GRAFANA_ORG_ID | 2 | |
140+
| GRAFANA_PASSWORD | prom-operator | |
141+
| GRAFANA_PORT | 8090 | |
142+
| GRAFANA_URL | | |
143+
| GRAFANA_USERNAME | admin | |
144+
| HELM_CLIENT_URL | 127.0.0.1:50051 | |
145+
| HELM_PIPELINE_STATUS_CHECK_ELIGIBLE_TIME | 120 | |
146+
| HIDE_IMAGE_TAGGING_HARD_DELETE | false | |
147+
| IGNORE_AUTOCOMPLETE_AUTH_CHECK | false | |
148+
| IMAGE_RETRY_COUNT | 0 | |
149+
| IMAGE_RETRY_INTERVAL | 5 | |
150+
| IMAGE_SCANNER_ENDPOINT | http://image-scanner-new-demo-devtroncd-service.devtroncd:80 | |
151+
| IMAGE_SCAN_MAX_RETRIES | 3 | |
152+
| IMAGE_SCAN_RETRY_DELAY | 5 | |
153+
| INSTALLER_CRD_NAMESPACE | devtroncd | |
154+
| INSTALLER_CRD_OBJECT_GROUP_NAME | installer.devtron.ai | |
155+
| INSTALLER_CRD_OBJECT_RESOURCE | installers | |
156+
| INSTALLER_CRD_OBJECT_VERSION | v1alpha1 | |
157+
| IN_APP_LOGGING_ENABLED | false | |
158+
| IS_INTERNAL_USE | false | |
159+
| JwtExpirationTime | 120 | |
160+
| LENS_TIMEOUT | 0 | |
161+
| LENS_URL | http://lens-milandevtron-service:80 | |
162+
| LIMIT_CI_CPU | 0.5 | |
163+
| LIMIT_CI_MEM | 3G | |
164+
| LOGGER_DEV_MODE | false | |
165+
| LOG_LEVEL | 0 | |
166+
| MAX_CD_WORKFLOW_RUNNER_RETRIES | 0 | |
167+
| MAX_CI_WORKFLOW_RETRIES | 0 | |
168+
| MAX_SESSION_PER_USER | 5 | |
169+
| MODE | DEV | |
170+
| MODULE_METADATA_API_URL | https://api.devtron.ai/module?name=%s | |
171+
| MODULE_STATUS_HANDLING_CRON_DURATION_MIN | 3 | |
172+
| NATS_MSG_ACK_WAIT_IN_SECS | 120 | |
173+
| NATS_MSG_BUFFER_SIZE | -1 | |
174+
| NATS_MSG_MAX_AGE | 86400 | |
175+
| NATS_MSG_PROCESSING_BATCH_SIZE | 1 | |
176+
| NATS_SERVER_HOST | nats://devtron-nats.devtroncd:4222 | |
177+
| ORCH_HOST | http://devtroncd-orchestrator-service-prod.devtroncd/webhook/msg/nats | |
178+
| ORCH_TOKEN | | |
179+
| OTEL_COLLECTOR_URL | | |
180+
| PG_ADDR | 127.0.0.1 | |
181+
| PG_DATABASE | orchestrator | |
182+
| PG_EXPORT_PROM_METRICS | false | |
183+
| PG_LOG_ALL_QUERY | false | |
184+
| PG_LOG_QUERY | true | |
185+
| PG_PASSWORD | | |
186+
| PG_PORT | 5432 | |
187+
| PG_QUERY_DUR_THRESHOLD | 5000 | |
188+
| PG_READ_TIMEOUT | 30 | |
189+
| PG_USER | | |
190+
| PG_WRITE_TIMEOUT | 30 | |
191+
| PIPELINE_DEGRADED_TIME | 10 | |
192+
| PLUGIN_NAME | Pull images from container repository | |
193+
| PRE_CI_CACHE_PATH | /devtroncd-cache | |
194+
| PROXY_SERVICE_CONFIG | | |
195+
| REQ_CI_CPU | 0.5 | |
196+
| REQ_CI_MEM | 3G | |
197+
| RESOURCE_LIST_FOR_REPLICAS | Deployment,Rollout,StatefulSet,ReplicaSet | |
198+
| RESOURCE_LIST_FOR_REPLICAS_BATCH_SIZE | 5 | |
199+
| REVISION_HISTORY_LIMIT_DEVTRON_APP | 0 | |
200+
| REVISION_HISTORY_LIMIT_EXTERNAL_HELM_APP | 0 | |
201+
| REVISION_HISTORY_LIMIT_HELM_APP | 0 | |
202+
| RUNTIME_CONFIG_LOCAL_DEV | false | |
203+
| RUN_HELM_INSTALL_IN_ASYNC_MODE_HELM_APPS | false | |
204+
| SCOPED_VARIABLE_ENABLED | false | |
205+
| SCOPED_VARIABLE_FORMAT | @{{%s}} | |
206+
| SCOPED_VARIABLE_HANDLE_PRIMITIVES | false | |
207+
| SCOPED_VARIABLE_NAME_REGEX | ^[a-zA-Z][a-zA-Z0-9_-]{0,62}[a-zA-Z0-9]$ | |
208+
| SKIP_CREATING_ECR_REPO | false | |
209+
| SOCKET_DISCONNECT_DELAY_SECONDS | 5 | |
210+
| SOCKET_HEARTBEAT_SECONDS | 25 | |
211+
| STREAM_CONFIG_JSON | | |
212+
| SYSTEM_VAR_PREFIX | DEVTRON_ | |
213+
| TERMINAL_POD_DEFAULT_NAMESPACE | default | |
214+
| TERMINAL_POD_INACTIVE_DURATION_IN_MINS | 10 | |
215+
| TERMINAL_POD_STATUS_SYNC_In_SECS | 600 | |
216+
| TERMINATION_GRACE_PERIOD_SECS | 180 | |
217+
| TEST_APP | orchestrator | |
218+
| TEST_PG_ADDR | 127.0.0.1 | |
219+
| TEST_PG_DATABASE | orchestrator | |
220+
| TEST_PG_LOG_QUERY | true | |
221+
| TEST_PG_PASSWORD | postgrespw | |
222+
| TEST_PG_PORT | 55000 | |
223+
| TEST_PG_USER | postgres | |
224+
| TIMEOUT_FOR_FAILED_CI_BUILD | 15 | |
225+
| TIMEOUT_IN_SECONDS | 5 | |
226+
| USER_SESSION_DURATION_SECONDS | 86400 | |
227+
| USE_ARTIFACT_LISTING_API_V2 | true | |
228+
| USE_ARTIFACT_LISTING_QUERY_V2 | true | |
229+
| USE_BLOB_STORAGE_CONFIG_IN_CD_WORKFLOW | true | |
230+
| USE_BLOB_STORAGE_CONFIG_IN_CI_WORKFLOW | true | |
231+
| USE_BUILDX | false | |
232+
| USE_EXTERNAL_NODE | false | |
233+
| USE_GIT_CLI | false | |
234+
| USE_IMAGE_TAG_FROM_GIT_PROVIDER_FOR_TAG_BASED_BUILD | false | |
235+
| USE_RBAC_CREATION_V2 | true | |
236+
| VARIABLE_CACHE_ENABLED | true | |
237+
| VARIABLE_EXPRESSION_REGEX | @{{([^}]+)}} | |
238+
| WEBHOOK_TOKEN | | |
239+
| WF_CONTROLLER_INSTANCE_ID | devtron-runner | |
240+
| WORKFLOW_SERVICE_ACCOUNT | ci-runner | |

fetchAllEnv/fetchAllEnv.go

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package main
2+
3+
import (
4+
"go/ast"
5+
"go/parser"
6+
"go/token"
7+
"log"
8+
"os"
9+
"path/filepath"
10+
"reflect"
11+
"sort"
12+
"strings"
13+
"text/template"
14+
)
15+
16+
type EnvField struct {
17+
Env string
18+
EnvValue string
19+
EnvDescription string
20+
}
21+
22+
const (
23+
envFieldTypeTag = "env"
24+
envDefaultFieldTypeTag = "envDefault"
25+
MARKDOWN_FILENAME = "env_gen.md"
26+
)
27+
28+
const MarkdownTemplate = `
29+
## Devtron Environment Variables
30+
| Key | Value | Description |
31+
|-------|--------------|-------------------|
32+
{{range .}} | {{ .Env }} | {{ .EnvValue }} | {{ .EnvDescription }} |
33+
{{end}}`
34+
35+
func writeToFile(allFields []EnvField) {
36+
sort.Slice(allFields, func(i, j int) bool {
37+
return allFields[i].Env < allFields[j].Env
38+
})
39+
40+
file, err := os.Create(MARKDOWN_FILENAME)
41+
if err != nil {
42+
panic(err)
43+
}
44+
defer file.Close()
45+
46+
tmpl, err := template.New("markdown").Parse(MarkdownTemplate)
47+
if err != nil {
48+
panic(err)
49+
}
50+
51+
err = tmpl.Execute(file, allFields)
52+
if err != nil {
53+
panic(err)
54+
}
55+
}
56+
57+
func WalkThroughProject() {
58+
var allFields []EnvField
59+
uniqueKeys := make(map[string]bool)
60+
61+
filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
62+
if err != nil {
63+
return err
64+
}
65+
if !info.IsDir() && strings.HasSuffix(path, ".go") {
66+
processGoFile(path, &allFields, &uniqueKeys)
67+
}
68+
return nil
69+
})
70+
writeToFile(allFields)
71+
}
72+
73+
func convertTagToStructTag(tag string) reflect.StructTag {
74+
return reflect.StructTag(strings.Split(tag, "`")[1])
75+
}
76+
77+
func getEnvKeyAndValue(tag reflect.StructTag) (string, string) {
78+
envKey := tag.Get(envFieldTypeTag)
79+
envValue := tag.Get(envDefaultFieldTypeTag)
80+
// check if there exist any value provided in env for this field
81+
if value, ok := os.LookupEnv(envKey); ok {
82+
envValue = value
83+
}
84+
return envKey, envValue
85+
}
86+
87+
func processGoFile(filePath string, allFields *[]EnvField, uniqueKeys *map[string]bool) {
88+
fset := token.NewFileSet()
89+
node, err := parser.ParseFile(fset, filePath, nil, parser.ParseComments)
90+
if err != nil {
91+
log.Fatalln("error parsing file:", err)
92+
return
93+
}
94+
95+
ast.Inspect(node, func(n ast.Node) bool {
96+
switch x := n.(type) {
97+
case *ast.TypeSpec:
98+
if structType, ok := x.Type.(*ast.StructType); ok {
99+
for _, field := range structType.Fields.List {
100+
if field.Tag != nil {
101+
strippedTags := convertTagToStructTag(field.Tag.Value)
102+
envKey, envValue := getEnvKeyAndValue(strippedTags)
103+
if len(envKey) == 0 || (*uniqueKeys)[envKey] {
104+
continue
105+
}
106+
*allFields = append(*allFields, EnvField{
107+
Env: envKey,
108+
EnvValue: envValue,
109+
})
110+
(*uniqueKeys)[envKey] = true
111+
}
112+
}
113+
}
114+
}
115+
return true
116+
})
117+
}
118+
119+
func main() {
120+
WalkThroughProject()
121+
return
122+
}

0 commit comments

Comments
 (0)