refactor(executeFreeleapsPipeline): streamline component build and dependency resolution stages
Signed-off-by: 孙振宇 <>
This commit is contained in:
parent
376fa19c78
commit
c84c65ce87
@ -104,89 +104,95 @@ spec:
|
||||
}
|
||||
}
|
||||
|
||||
configurations.components.each { 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")
|
||||
stage("Components Build (Dynamic Generated Stages)") {
|
||||
steps {
|
||||
script {
|
||||
configurations.components.each { component ->
|
||||
stage("${component} :: Build Agent Setup") {
|
||||
when {
|
||||
expression {
|
||||
return env.executeMode == "fully" || env.changedComponents.contains(component)
|
||||
}
|
||||
}
|
||||
|
||||
log.info "Using ${buildAgentImage} as build agent image for ${component}"
|
||||
env.buildAgentImage = buildAgentImage
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
steps {
|
||||
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") {
|
||||
when {
|
||||
expression {
|
||||
return env.executeMode == "fully" || env.changedComponents.contains(component)
|
||||
}
|
||||
}
|
||||
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")
|
||||
}
|
||||
|
||||
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()
|
||||
log.info "Using ${buildAgentImage} as build agent image for ${component}"
|
||||
env.buildAgentImage = buildAgentImage
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sourceFetcher.fetch(configurations)
|
||||
dependenciesResolver.resolve(configurations)
|
||||
stage("${component} :: Dependencies Resolving") {
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user