diff --git a/magefiles/magefile.go b/magefiles/magefile.go index 8eeee3ecc7..f2d9dd9a7e 100644 --- a/magefiles/magefile.go +++ b/magefiles/magefile.go @@ -304,7 +304,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" || pr.RepoName == "image-controller" { + pr.RepoName == "release-service" || pr.RepoName == "image-controller" || + pr.RepoName == "build-service" { return engine.MageEngine.RunRulesOfCategory("ci", rctx) } diff --git a/magefiles/rulesengine/engine/engine.go b/magefiles/rulesengine/engine/engine.go index 98f5046644..d289c2d088 100644 --- a/magefiles/rulesengine/engine/engine.go +++ b/magefiles/rulesengine/engine/engine.go @@ -20,6 +20,7 @@ var MageEngine = rulesengine.RuleEngine{ "release-service": repos.ReleaseServiceCICatalog, "integration-service": repos.IntegrationServiceCICatalog, "image-controller": repos.ImageControllerCICatalog, + "build-service": repos.BuildServiceCICatalog, // TODO: to be implemented in a follow-up PR //"infra-deployments": repos.InfraDeploymentsCIChainCatalog, }, diff --git a/magefiles/rulesengine/repos/build_service.go b/magefiles/rulesengine/repos/build_service.go new file mode 100644 index 0000000000..26e10d409d --- /dev/null +++ b/magefiles/rulesengine/repos/build_service.go @@ -0,0 +1,54 @@ +package repos + +import ( + "fmt" + "os" + + "github.com/konflux-ci/e2e-tests/magefiles/rulesengine" + "k8s.io/klog" +) + +var BuildServiceCICatalog = rulesengine.RuleCatalog{BuildServiceCIRule} + +var BuildServiceCIRule = rulesengine.Rule{Name: "build-service repo CI Workflow Rule", + Description: "Execute the full workflow for e2e-tests repo in CI", + Condition: rulesengine.All{ + &BuildServiceRepoSetDefaultSettingsRule, + rulesengine.Any{&InfraDeploymentsPRPairingRule, rulesengine.None{&InfraDeploymentsPRPairingRule}}, + &PreflightInstallGinkgoRule, + &BootstrapClusterWithSprayProxyRuleChain, + }, + Actions: []rulesengine.Action{rulesengine.ActionFunc(ExecuteTestAction)}, +} + +var BuildServiceRepoSetDefaultSettingsRule = rulesengine.Rule{Name: "General Required Settings for build-service repository jobs", + Description: "Set SprayProxy settings to true for build-service jobs before bootstrap", + Condition: rulesengine.Any{ + IsBuildServiceRepoPR, + }, + Actions: []rulesengine.Action{rulesengine.ActionFunc(func(rctx *rulesengine.RuleCtx) error { + rctx.RequiresSprayProxyRegistering = true + klog.Info("require sprayproxy registering is set to TRUE") + + rctx.LabelFilter = "build-service" + klog.Info("setting 'build-service' test label") + + if rctx.DryRun { + klog.Info("setting up env vars for deploying component image") + return nil + } + rctx.ComponentEnvVarPrefix = "BUILD_SERVICE" + // 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-build-service-image" + } + return SetEnvVarsForComponentImageDeployment(rctx) + })}, +} + +var IsBuildServiceRepoPR = rulesengine.ConditionFunc(func(rctx *rulesengine.RuleCtx) (bool, error) { + klog.Info("checking if repository is build-service") + return rctx.RepoName == "build-service", nil +})