in custom-targets/git-ops/git-deployer/params.go [102:196]
func determineParams() (*params, error) {
params := ¶ms{}
// Required parameters:
repo := os.Getenv(gitRepoEnvKey)
if len(repo) == 0 {
return nil, fmt.Errorf("parameter %q is required", gitRepoEnvKey)
}
params.gitRepo = repo
secret := os.Getenv(gitSecretEnvKey)
if len(secret) == 0 {
return nil, fmt.Errorf("parameter %q is required", gitSecretEnvKey)
}
params.gitSecret = secret
srcBranch := os.Getenv(gitSourceBranchEnvKey)
if len(srcBranch) == 0 {
return nil, fmt.Errorf("parameter %q is required", gitSourceBranchEnvKey)
}
params.gitSourceBranch = srcBranch
// Optional parameters:
params.gitPath = os.Getenv(gitPathEnvKey)
params.gitUsername = os.Getenv(gitUsernameEnvKey)
if len(params.gitUsername) == 0 {
params.gitUsername = defaultUsername
}
params.gitEmail = os.Getenv(gitEmailEnvKey)
params.gitCommitMessage = os.Getenv(gitCommitMessageEnvKey)
params.gitDestinationBranch = os.Getenv(gitDestinationBranchEnvKey)
params.gitPullRequestTitle = os.Getenv(gitPullRequestTitleEnvKey)
params.gitPullRequestBody = os.Getenv(gitPullRequestBodyEnvKey)
enablePRMerge := false
prm, ok := os.LookupEnv(gitEnablePullRequestMergeEnvKey)
if ok {
var err error
enablePRMerge, err = strconv.ParseBool(prm)
if err != nil {
return nil, fmt.Errorf("failed to parse parameter %q: %v", gitEnablePullRequestMergeEnvKey, err)
}
}
params.enablePullRequestMerge = enablePRMerge
enableSync := false
es, ok := os.LookupEnv(gitEnableArgoSyncPollEnvKey)
if ok {
var err error
enableSync, err = strconv.ParseBool(es)
if err != nil {
return nil, fmt.Errorf("failed to parse parameter %q: %v", gitEnableArgoSyncPollEnvKey, err)
}
}
params.enableArgoSyncPoll = enableSync
if enableSync {
// The pull request needs to be merged in order to poll the Argo Application status.
if !enablePRMerge {
return nil, fmt.Errorf("parameter %q must be true when Argo sync polling is enabled", gitEnablePullRequestMergeEnvKey)
}
// If Argo sync is enabled then some additional parameters become required:
gkeCluster := os.Getenv(gitGKEClusterEnvKey)
if len(gkeCluster) == 0 {
return nil, fmt.Errorf("parameter %q is required when Argo sync polling is enabled", gitGKEClusterEnvKey)
}
params.gkeCluster = gkeCluster
argoApp := os.Getenv(gitArgoAppEnvKey)
if len(argoApp) == 0 {
return nil, fmt.Errorf("parameter %q is required when Argo sync polling is enabled", gitArgoAppEnvKey)
}
params.argoApp = argoApp
argoNamespace := os.Getenv(gitArgoNamespaceEnvKey)
if len(argoNamespace) == 0 {
return nil, fmt.Errorf("parameter %q is required when Argo sync polling is enabled", gitArgoNamespaceEnvKey)
}
params.argoNamespace = argoNamespace
// Optional Argo sync parameters:
syncTimeout := defaultSyncTimeout
st := os.Getenv(gitArgoSyncTimeoutEnvKey)
if len(st) != 0 {
var err error
syncTimeout, err = time.ParseDuration(st)
if err != nil {
return nil, fmt.Errorf("failed to parse parameter %q: %v", gitArgoSyncTimeoutEnvKey, err)
}
}
params.argoSyncTimeout = syncTimeout
}
return params, nil
}