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  }