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("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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user