Merge branch 'main' into more-create-tests

This commit is contained in:
Jonathan Innis 2021-05-30 13:56:24 -07:00 коммит произвёл GitHub
Родитель 71d3cc481d 1344e26445
Коммит 0cc6d7796c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 53 добавлений и 51 удалений

3
.github/workflows/docker.yaml поставляемый
Просмотреть файл

@ -27,6 +27,7 @@ jobs:
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{raw}}
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
latest
@ -43,4 +44,4 @@ jobs:
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
tags: ${{ steps.meta.outputs.tags }}

Просмотреть файл

@ -45,7 +45,10 @@ spec:
{{- if .Values.cleanup.enabled }}
- --cleanup-downloaded-charts
{{- end }}
- --debug={{ .Values.debug.level }}
{{ if .Values.debug.enabled }}
- --debug
{{- end }}
- --log-level={{ .Values.logLevel | default 0 }}
env:
- name: WORKFLOW_NAMESPACE
value: {{ .Release.Namespace }}

Просмотреть файл

@ -47,7 +47,9 @@ cleanup:
# set to dev mode until MVP
debug:
level: 5
enabled: true
logLevel: 5
# Dependency overlay values

Просмотреть файл

@ -99,30 +99,41 @@ func (r *ApplicationGroupReconciler) reconcileApplications(l logr.Logger, appGro
}
if appCh.Dependencies() != nil {
for _, sc := range appCh.Dependencies() {
cs := v1alpha1.ChartStatus{
Version: sc.Metadata.Version,
}
appGroup.Status.Applications[i].Subcharts[sc.Name()] = cs
// take account of all embedded subcharts found in the application chart
embeddedSubcharts := make(map[string]bool)
for _, d := range appCh.Dependencies() {
embeddedSubcharts[d.Name()] = true
}
// Remove all explicit subchart entries from tracking map
for _, d := range appGroup.Spec.Applications[i].Spec.Subcharts {
delete(embeddedSubcharts, d.Name)
}
// Use the remaining set of dependencies that are not explicitly declared and
// add them to the groups application spec's subcharts list
for name := range embeddedSubcharts {
appGroup.Spec.Applications[i].Spec.Subcharts = append(appGroup.Spec.Applications[i].Spec.Subcharts, v1alpha1.DAG{Name: name})
}
stagingRepoName := r.StagingRepoName
// If Dependencies - extract subchart and push each to staging registry
// if isDependenciesEmbedded(appCh) {
// Package and push all application subcharts staging registry
for _, sc := range appCh.Dependencies() {
cs := v1alpha1.ChartStatus{
chartStatus := v1alpha1.ChartStatus{
Version: sc.Metadata.Version,
Staged: false,
Error: "",
}
// copy sc
// copy the subchart
scc := &chart.Chart{}
_ = copier.Copy(scc, sc)
if err := scc.Validate(); err != nil {
ll.Error(err, "failed to validate application subchart for staging registry")
err = fmt.Errorf("failed to validate application subchart for staging registry : %w", err)
cs.Error = err.Error()
appGroup.Status.Applications[i].Subcharts[sc.Name()] = cs
chartStatus.Error = err.Error()
appGroup.Status.Applications[i].Subcharts[sc.Name()] = chartStatus
return err
}
@ -141,8 +152,8 @@ func (r *ApplicationGroupReconciler) reconcileApplications(l logr.Logger, appGro
if err != nil {
ll.Error(err, "failed to save subchart package as tgz")
err = fmt.Errorf("failed to save subchart package as tgz at location %s : %w", path, err)
cs.Error = err.Error()
appGroup.Status.Applications[i].Subcharts[sc.Name()] = cs
chartStatus.Error = err.Error()
appGroup.Status.Applications[i].Subcharts[sc.Name()] = chartStatus
return err
}
@ -150,16 +161,14 @@ func (r *ApplicationGroupReconciler) reconcileApplications(l logr.Logger, appGro
if err != nil {
ll.Error(err, "failed to push application subchart to staging registry")
err = fmt.Errorf("failed to push application subchart to staging registry : %w", err)
cs.Error = err.Error()
appGroup.Status.Applications[i].Subcharts[sc.Name()] = cs
chartStatus.Error = err.Error()
appGroup.Status.Applications[i].Subcharts[sc.Name()] = chartStatus
return err
}
cs.Staged = true
cs.Version = sc.Metadata.Version
cs.Error = ""
chartStatus.Staged = true
appGroup.Status.Applications[i].Subcharts[sc.Name()] = cs
appGroup.Status.Applications[i].Subcharts[sc.Name()] = chartStatus
}
}

Просмотреть файл

@ -21,6 +21,15 @@ import (
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)
const (
// The set of executor actions which can be performed on a helmrelease object
Install ExecutorAction = "install"
Delete ExecutorAction = "delete"
)
// ExecutorAction defines the set of executor actions which can be performed on a helmrelease object
type ExecutorAction string
type argo struct {
scheme *runtime.Scheme
cli client.Client
@ -288,7 +297,7 @@ func (a *argo) generateReverseWorkflow(ctx context.Context, l logr.Logger, nodes
Parameters: []v1alpha12.Parameter{
{
Name: HelmReleaseArg,
Value: utils.ToStrPtr(utils.HrToYaml(hr)),
Value: utils.ToStrPtr(base64.StdEncoding.EncodeToString([]byte(utils.HrToYaml(hr)))),
},
},
},
@ -306,7 +315,7 @@ func (a *argo) generateReverseWorkflow(ctx context.Context, l logr.Logger, nodes
updateWorkflowTemplates(a.rwf, entry)
updateWorkflowTemplates(a.rwf, defaultReverseExecutor())
updateWorkflowTemplates(a.rwf, defaultExecutor(HelmReleaseReverseExecutorName, Delete))
return nil
}
@ -344,7 +353,7 @@ func (a *argo) generateAppGroupTpls(ctx context.Context, g *v1alpha1.Application
// TODO: Add the executor template
// This should eventually be configurable
updateWorkflowTemplates(a.wf, defaultExecutor())
updateWorkflowTemplates(a.wf, defaultExecutor(HelmReleaseExecutorName, Install))
return nil
}
@ -598,10 +607,10 @@ func updateWorkflowTemplates(wf *v1alpha12.Workflow, tpls ...v1alpha12.Template)
wf.Spec.Templates = append(wf.Spec.Templates, tpls...)
}
func defaultExecutor() v1alpha12.Template {
executorArgs := []string{"--spec", "{{inputs.parameters.helmrelease}}", "--timeout", "{{inputs.parameters.timeout}}", "--interval", "10s"}
func defaultExecutor(tplName string, action ExecutorAction) v1alpha12.Template {
executorArgs := []string{"--spec", "{{inputs.parameters.helmrelease}}", "--action", string(action), "--timeout", "{{inputs.parameters.timeout}}", "--interval", "10s"}
return v1alpha12.Template{
Name: HelmReleaseExecutorName,
Name: tplName,
ServiceAccountName: workflowServiceAccountName(),
Inputs: v1alpha12.Inputs{
Parameters: []v1alpha12.Parameter{
@ -626,28 +635,6 @@ func defaultExecutor() v1alpha12.Template {
}
}
func defaultReverseExecutor() v1alpha12.Template {
return v1alpha12.Template{
Name: HelmReleaseReverseExecutorName,
ServiceAccountName: workflowServiceAccountName(),
Inputs: v1alpha12.Inputs{
Parameters: []v1alpha12.Parameter{
{
Name: "helmrelease",
},
},
},
Executor: &v1alpha12.ExecutorConfig{
ServiceAccountName: workflowServiceAccountName(),
},
Resource: &v1alpha12.ResourceTemplate{
// SetOwnerReference: true,
Action: "delete",
Manifest: "{{inputs.parameters.helmrelease}}",
},
}
}
func generateSubchartHelmRelease(a v1alpha1.Application, appName, scName, version, repo, targetNS string, isStaged bool) (*fluxhelmv2beta1.HelmRelease, error) {
hr := &fluxhelmv2beta1.HelmRelease{
TypeMeta: v1.TypeMeta{

Просмотреть файл

@ -15,7 +15,7 @@ const (
ExecutorName = "executor"
ExecutorImage = "azureorkestra/executor"
ExecutorImageTag = "v0.2.0"
ExecutorImageTag = "v0.3.0"
ChartMuseumName = "chartmuseum"
)