refactor(executeFreeleapsPipeline): streamline component build and dependency resolution stages

Signed-off-by: 孙振宇 <>
This commit is contained in:
孙振宇 2025-02-04 10:36:58 +08:00
parent 376fa19c78
commit c84c65ce87

View File

@ -104,89 +104,95 @@ spec:
} }
} }
configurations.components.each { component -> stage("Components Build (Dynamic Generated Stages)") {
stage("${component} :: Build Agent Setup") { steps {
when { script {
expression { configurations.components.each { component ->
return env.executeMode == "fully" || env.changedComponents.contains(component) stage("${component} :: Build Agent Setup") {
} when {
} expression {
return env.executeMode == "fully" || env.changedComponents.contains(component)
steps { }
script {
def buildAgentImage = component.buildAgentImage
if (buildAgentImage == null || buildAgentImage.isEmpty()) {
log.warn "Not set buildAgentImage for ${component}, 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 "Using ${buildAgentImage} as build agent image for ${component}" steps {
env.buildAgentImage = buildAgentImage script {
} def buildAgentImage = component.buildAgentImage
} if (buildAgentImage == null || buildAgentImage.isEmpty()) {
} log.warn "Not set buildAgentImage for ${component}, using default build agent image"
}
stage("${component} :: Dependencies Resolving") { def language = ServiceLanguage.parse(configurations.serviceLang)
when { switch(language) {
expression { case ServiceLanguage.PYTHON:
return env.executeMode == "fully" || env.changedComponents.contains(component) buildAgentImage = "python:3.10-slim-buster"
} break
} case ServiceLanguage.JS:
buildAgentImage = "node:lts-alpine"
break
default:
error("Unknown service language")
}
agent { log.info "Using ${buildAgentImage} as build agent image for ${component}"
kubernetes { env.buildAgentImage = buildAgentImage
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:
- cat
tty: true
volumeMounts:
- name: workspace
mountPath: /workspace
volumes:
- name: workspace
emptyDir: {}
"""
}
}
steps {
script {
def language = ServiceLanguage.parse(component.language)
def depManager = DependenciesManager.parse(component.dependenciesManager)
def dependenciesResolver = new DependenciesResolver(this, language)
dependenciesResolver.useManager(depManager)
if (component.buildCacheEnabled) {
dependenciesResolver.enableCachingSupport()
} else {
dependenciesResolver.disableCachingSupport()
} }
sourceFetcher.fetch(configurations) stage("${component} :: Dependencies Resolving") {
dependenciesResolver.resolve(configurations) when {
expression {
return env.executeMode == "fully" || env.changedComponents.contains(component)
}
}
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:
- cat
tty: true
volumeMounts:
- name: workspace
mountPath: /workspace
volumes:
- name: workspace
emptyDir: {}
"""
}
}
steps {
script {
def language = ServiceLanguage.parse(component.language)
def depManager = DependenciesManager.parse(component.dependenciesManager)
def dependenciesResolver = new DependenciesResolver(this, language)
dependenciesResolver.useManager(depManager)
if (component.buildCacheEnabled) {
dependenciesResolver.enableCachingSupport()
} else {
dependenciesResolver.disableCachingSupport()
}
sourceFetcher.fetch(configurations)
dependenciesResolver.resolve(configurations)
}
}
}
} }
} }
} }