diff --git a/magefiles/magefile.go b/magefiles/magefile.go index 24a38c4ea9..e849bac837 100644 --- a/magefiles/magefile.go +++ b/magefiles/magefile.go @@ -303,7 +303,8 @@ func (ci CI) TestE2E() error { } // Eventually we'll introduce mage rules for all repositories, so this condition won't be needed anymore - if pr.RepoName == "e2e-tests" || pr.RepoName == "integration-service" || pr.RepoName == "release-service" { + if pr.RepoName == "e2e-tests" || pr.RepoName == "integration-service" || + pr.RepoName == "release-service" || pr.RepoName == "image-controller" { return engine.MageEngine.RunRulesOfCategory("ci", rctx) } diff --git a/magefiles/rulesengine/engine/engine.go b/magefiles/rulesengine/engine/engine.go index 61b00b92f6..98f5046644 100644 --- a/magefiles/rulesengine/engine/engine.go +++ b/magefiles/rulesengine/engine/engine.go @@ -19,6 +19,7 @@ var MageEngine = rulesengine.RuleEngine{ "e2e-repo": repos.E2ECIChainCatalog, "release-service": repos.ReleaseServiceCICatalog, "integration-service": repos.IntegrationServiceCICatalog, + "image-controller": repos.ImageControllerCICatalog, // TODO: to be implemented in a follow-up PR //"infra-deployments": repos.InfraDeploymentsCIChainCatalog, }, diff --git a/magefiles/rulesengine/repos/image_controller.go b/magefiles/rulesengine/repos/image_controller.go new file mode 100644 index 0000000000..d2c54f15e6 --- /dev/null +++ b/magefiles/rulesengine/repos/image_controller.go @@ -0,0 +1,54 @@ +package repos + +import ( + "fmt" + "os" + + "github.com/konflux-ci/e2e-tests/magefiles/rulesengine" + "k8s.io/klog" +) + +var ImageControllerCICatalog = rulesengine.RuleCatalog{ImageControllerCIRule} + +var ImageControllerCIRule = rulesengine.Rule{Name: "image-controller repo CI Workflow Rule", + Description: "Execute the full workflow for e2e-tests repo in CI", + Condition: rulesengine.All{ + &ImageControllerRepoSetDefaultSettingsRule, + rulesengine.Any{&InfraDeploymentsPRPairingRule, rulesengine.None{&InfraDeploymentsPRPairingRule}}, + &PreflightInstallGinkgoRule, + &BootstrapClusterWithSprayProxyRuleChain, + }, + Actions: []rulesengine.Action{rulesengine.ActionFunc(ExecuteTestAction)}, +} + +var ImageControllerRepoSetDefaultSettingsRule = rulesengine.Rule{Name: "General Required Settings for image-controller repository jobs", + Description: "Set SprayProxy settings to true for image-controller jobs before bootstrap", + Condition: rulesengine.Any{ + IsImageControllerRepoPR, + }, + Actions: []rulesengine.Action{rulesengine.ActionFunc(func(rctx *rulesengine.RuleCtx) error { + rctx.RequiresSprayProxyRegistering = true + klog.Info("require sprayproxy registering is set to TRUE") + + rctx.LabelFilter = "image-controller" + klog.Info("setting 'image-controller' test label") + + if rctx.DryRun { + klog.Info("setting up env vars for deploying component image") + return nil + } + rctx.ComponentEnvVarPrefix = "IMAGE_CONTROLLER" + // TODO keep only "KONFLUX_CI" option once we migrate off openshift-ci + if os.Getenv("KONFLUX_CI") == "true" { + rctx.ComponentImageTag = fmt.Sprintf("on-pr-%s", rctx.PrCommitSha) + } else { + rctx.ComponentImageTag = "redhat-appstudio-image-controller-image" + } + return SetEnvVarsForComponentImageDeployment(rctx) + })}, +} + +var IsImageControllerRepoPR = rulesengine.ConditionFunc(func(rctx *rulesengine.RuleCtx) (bool, error) { + klog.Info("checking if repository is image-controller") + return rctx.RepoName == "image-controller", nil +})