github.com/profzone/eden-framework@v1.0.10/internal/project/workflow_transform_gitlab.go (about) 1 package project 2 3 import ( 4 "fmt" 5 "github.com/profzone/eden-framework/pkg/executil" 6 str "github.com/profzone/eden-framework/pkg/strings" 7 "strings" 8 ) 9 10 var DefaultCICache = CICache{ 11 Key: "${CI_BUILD_REF}_${CI_BUILD_REF_NAME}", 12 UnTracked: true, 13 } 14 15 func (w *Workflow) ToCIConfig(project *Project) *CIConfig { 16 ciConfig := NewCIConfig(). 17 WithCache(DefaultCICache). 18 WithStages(STAGE_TEST, STAGE_BUILD, STAGE_SHIP, STAGE_DEPLOY) 19 20 for branch, branchFlow := range w.BranchFlows { 21 if !branchFlow.Skip { 22 for _, job := range branchFlow.Jobs { 23 if !job.Skip { 24 envVars := executil.EnvVars{} 25 envVars.LoadFromEnviron() 26 27 ciJob := NewCIJob(job.Stage). 28 WithTags(project.Group). 29 WithEnv(branchFlow.Env["GOENV"]). 30 WithImage(fmt.Sprintf("${%s}/${%s}", EnvKeyDockerRegistryKey, strings.ToUpper(envVars.Parse(job.Builder)))). 31 WithArtifacts(job.Artifacts). 32 WithScript(job.Run...) 33 34 if branch != "*" { 35 ciJob = ciJob.WithOnly(branch) 36 } 37 38 ciConfig = ciConfig.AddJob( 39 fmt.Sprintf("%s_%s", str.ToLowerCamelCase(branch), job.Stage), 40 ciJob, 41 ) 42 } 43 } 44 } 45 } 46 47 return ciConfig 48 }