refactor(executeFreeleapsPipeline): extract component stages into a separate function for improved readability and structure
Signed-off-by: 孙振宇 <>
This commit is contained in:
parent
79c9c845b0
commit
908735112a
@ -7,6 +7,81 @@ import com.freeleaps.devops.enums.ServiceLanguage
|
||||
import com.freeleaps.devops.CommitMessageLinter
|
||||
import com.freeleaps.devops.ChangedComponentsDetector
|
||||
|
||||
def generateComponentStages(component) {
|
||||
stage("${component.name} :: Build Agent Setup") {
|
||||
steps {
|
||||
script {
|
||||
if (env.executeMode == "fully" || env.changedComponents.contains(component.name)) {
|
||||
def buildAgentImage = component.buildAgentImage
|
||||
if (buildAgentImage == null || buildAgentImage.isEmpty()) {
|
||||
log.warn("Pipeline", "Not set buildAgentImage for ${component.name}, using default build agent image")
|
||||
|
||||
def language = ServiceLanguage.parse(configurations.serviceLang)
|
||||
switch(language) {
|
||||
case ServiceLanguage.PYTHON:
|
||||
buildAgentImage = "python:3.10-slim-buster"
|
||||
break
|
||||
case ServiceLanguage.JS:
|
||||
buildAgentImage = "node:lts-alpine"
|
||||
break
|
||||
default:
|
||||
error("Unknown service language")
|
||||
}
|
||||
}
|
||||
log.info("Pipeline", "Using ${buildAgentImage} as build agent image for ${component.name}")
|
||||
env.buildAgentImage = buildAgentImage
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage("${component.name} :: Dependencies Resolving") {
|
||||
agent {
|
||||
kubernetes {
|
||||
defaultContainer 'dep-resolver'
|
||||
yaml """
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
labels:
|
||||
freeleaps-devops-system/milestone: dependencies-resolving
|
||||
spec:
|
||||
containers:
|
||||
- name: dep-resolver
|
||||
image: ${env.buildAgentImage}
|
||||
command:
|
||||
- sleep
|
||||
args:
|
||||
- infinity
|
||||
"""
|
||||
}
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
if (env.executeMode == "fully" || env.changedComponents.contains(component.name)) {
|
||||
log.info("Pipeline", "Build Agent sets to: ${env.buildAgentImage}")
|
||||
def sourceFetcher = new SourceFetcher(this)
|
||||
sourceFetcher.fetch(configurations)
|
||||
|
||||
def language = ServiceLanguage.parse(component.language)
|
||||
def depManager = DependenciesManager.parse(component.dependenciesManager)
|
||||
|
||||
def dependenciesResolver = new DependenciesResolver(this, language, env.workspace + "/" + component.root + "/")
|
||||
dependenciesResolver.useManager(depManager)
|
||||
|
||||
if (component.buildCacheEnabled) {
|
||||
dependenciesResolver.enableCachingSupport()
|
||||
} else {
|
||||
dependenciesResolver.disableCachingSupport()
|
||||
}
|
||||
|
||||
dependenciesResolver.resolve(component)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def call(Closure closure) {
|
||||
def configurations = [:]
|
||||
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||
@ -109,84 +184,10 @@ spec:
|
||||
return env.executeMode == "fully" || env.changedComponents.size() > 0
|
||||
}
|
||||
}
|
||||
stages {
|
||||
steps {
|
||||
script {
|
||||
configurations.components.each { component ->
|
||||
stage("${component.name} :: Build Agent Setup") {
|
||||
steps {
|
||||
script {
|
||||
if (env.executeMode == "fully" || env.changedComponents.contains(component.name)) {
|
||||
def buildAgentImage = component.buildAgentImage
|
||||
if (buildAgentImage == null || buildAgentImage.isEmpty()) {
|
||||
log.warn("Pipeline","Not set buildAgentImage for ${component.name}, using default build agent image")
|
||||
|
||||
def language = ServiceLanguage.parse(configurations.serviceLang)
|
||||
switch(language) {
|
||||
case ServiceLanguage.PYTHON:
|
||||
buildAgentImage = "python:3.10-slim-buster"
|
||||
break
|
||||
case ServiceLanguage.JS:
|
||||
buildAgentImage = "node:lts-alpine"
|
||||
break
|
||||
default:
|
||||
error("Unknown service language")
|
||||
}
|
||||
|
||||
}
|
||||
log.info("Pipeline","Using ${buildAgentImage} as build agent image for ${component.name}")
|
||||
env.buildAgentImage = buildAgentImage
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage("${component.name} :: Dependencies Resolving") {
|
||||
agent {
|
||||
kubernetes {
|
||||
defaultContainer 'dep-resolver'
|
||||
yaml """
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
labels:
|
||||
freeleaps-devops-system/milestone: dependencies-resolving
|
||||
spec:
|
||||
containers:
|
||||
- name: dep-resolver
|
||||
image: ${env.buildAgentImage}
|
||||
command:
|
||||
- sleep
|
||||
args:
|
||||
- infinity
|
||||
"""
|
||||
}
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
if (env.executeMode == "fully" || env.changedComponents.contains(component.name)) {
|
||||
log.info("Pipeline","Build Agent sets to: ${env.buildAgentImage}")
|
||||
def sourceFetcher = new SourceFetcher(this)
|
||||
sourceFetcher.fetch(configurations)
|
||||
|
||||
def language = ServiceLanguage.parse(component.language)
|
||||
|
||||
def depManager = DependenciesManager.parse(component.dependenciesManager)
|
||||
|
||||
def dependenciesResolver = new DependenciesResolver(this, language, env.workspace + "/" + component.root + "/")
|
||||
dependenciesResolver.useManager(depManager)
|
||||
|
||||
if (component.buildCacheEnabled) {
|
||||
dependenciesResolver.enableCachingSupport()
|
||||
} else {
|
||||
dependenciesResolver.disableCachingSupport()
|
||||
}
|
||||
|
||||
dependenciesResolver.resolve(component)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
generateComponentStages(component)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user