refactor(executeFreeleapsPipeline): enhance stage definitions with podTemplate for build agent and dependencies resolver
Signed-off-by: 孙振宇 <>
This commit is contained in:
parent
9cb3ea18f6
commit
a3e3788ee1
@ -9,81 +9,150 @@ import com.freeleaps.devops.ChangedComponentsDetector
|
|||||||
|
|
||||||
def generateComponentStages(component) {
|
def generateComponentStages(component) {
|
||||||
return [
|
return [
|
||||||
stage("${component.name} :: Build Agent Setup") {
|
stage("${component.name} :: Build Agent Setup") {
|
||||||
steps {
|
podTemplate(
|
||||||
script {
|
label: "build-agent-${component.name}",
|
||||||
if (env.executeMode == "fully" || env.changedComponents.contains(component.name)) {
|
containers: [
|
||||||
def buildAgentImage = component.buildAgentImage
|
containerTemplate(
|
||||||
if (buildAgentImage == null || buildAgentImage.isEmpty()) {
|
name: 'build-agent',
|
||||||
log.warn("Pipeline", "Not set buildAgentImage for ${component.name}, using default build agent image")
|
image: component.buildAgentImage ?: 'python:3.10-slim-buster',
|
||||||
|
ttyEnabled: true,
|
||||||
def language = ServiceLanguage.parse(configurations.serviceLang)
|
command: 'cat'
|
||||||
switch(language) {
|
)
|
||||||
case ServiceLanguage.PYTHON:
|
]
|
||||||
buildAgentImage = "python:3.10-slim-buster"
|
) {
|
||||||
break
|
node("build-agent-${component.name}") {
|
||||||
case ServiceLanguage.JS:
|
steps {
|
||||||
buildAgentImage = "node:lts-alpine"
|
script {
|
||||||
break
|
if (env.executeMode == "fully" || env.changedComponents.contains(component.name)) {
|
||||||
default:
|
def buildAgentImage = component.buildAgentImage ?: "python:3.10-slim-buster"
|
||||||
error("Unknown service language")
|
log.info("Pipeline", "Using ${buildAgentImage} as build agent image for ${component.name}")
|
||||||
|
env.buildAgentImage = buildAgentImage
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.info("Pipeline", "Using ${buildAgentImage} as build agent image for ${component.name}")
|
|
||||||
env.buildAgentImage = buildAgentImage
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
|
||||||
|
|
||||||
stage("${component.name} :: Dependencies Resolving") {
|
stage("${component.name} :: Dependencies Resolving") {
|
||||||
agent {
|
podTemplate(
|
||||||
kubernetes {
|
label: "dep-resolver-${component.name}",
|
||||||
defaultContainer 'dep-resolver'
|
containers: [
|
||||||
yaml """
|
containerTemplate(
|
||||||
apiVersion: v1
|
name: 'dep-resolver',
|
||||||
kind: Pod
|
image: env.buildAgentImage,
|
||||||
metadata:
|
ttyEnabled: true,
|
||||||
labels:
|
command: 'sleep',
|
||||||
freeleaps-devops-system/milestone: dependencies-resolving
|
args: 'infinity'
|
||||||
spec:
|
)
|
||||||
containers:
|
]
|
||||||
- name: dep-resolver
|
) {
|
||||||
image: ${env.buildAgentImage}
|
node("dep-resolver-${component.name}") {
|
||||||
command:
|
steps {
|
||||||
- sleep
|
script {
|
||||||
args:
|
if (env.executeMode == "fully" || env.changedComponents.contains(component.name)) {
|
||||||
- infinity
|
log.info("Pipeline", "Using ${env.buildAgentImage} as build agent image for dependencies resolving")
|
||||||
"""
|
def sourceFetcher = new SourceFetcher(this)
|
||||||
}
|
sourceFetcher.fetch(configurations)
|
||||||
}
|
|
||||||
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 language = ServiceLanguage.parse(component.language)
|
||||||
def depManager = DependenciesManager.parse(component.dependenciesManager)
|
def depManager = DependenciesManager.parse(component.dependenciesManager)
|
||||||
|
|
||||||
def dependenciesResolver = new DependenciesResolver(this, language, env.workspace + "/" + component.root + "/")
|
def dependenciesResolver = new DependenciesResolver(this, language, env.workspace + "/" + component.root + "/")
|
||||||
dependenciesResolver.useManager(depManager)
|
dependenciesResolver.useManager(depManager)
|
||||||
|
|
||||||
if (component.buildCacheEnabled) {
|
if (component.buildCacheEnabled) {
|
||||||
dependenciesResolver.enableCachingSupport()
|
dependenciesResolver.enableCachingSupport()
|
||||||
} else {
|
} else {
|
||||||
dependenciesResolver.disableCachingSupport()
|
dependenciesResolver.disableCachingSupport()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependenciesResolver.resolve(component)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependenciesResolver.resolve(component)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// def generateComponentStages(component) {
|
||||||
|
// return [
|
||||||
|
// stage("${component.name} :: Build Agent Setup") {
|
||||||
|
// 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 call(Closure closure) {
|
||||||
def configurations = [:]
|
def configurations = [:]
|
||||||
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user