84 lines
2.9 KiB
Plaintext
84 lines
2.9 KiB
Plaintext
|
|
pipeline {
|
||
|
|
agent any
|
||
|
|
|
||
|
|
parameters {
|
||
|
|
choice(name: 'SERVICE', choices: ['postgres', 'seaweedfs', 'ollama', 'keycloak', 'vllm', 'all'], description: 'Service to build/deploy')
|
||
|
|
choice(name: 'ENV', choices: ['dev', 'preprod', 'prod'], description: 'Target environment / namespace')
|
||
|
|
choice(name: 'ACTION', choices: ['build', 'deploy', 'build-and-deploy'], description: 'Pipeline action')
|
||
|
|
booleanParam(name: 'USE_PUBLIC_IMAGES', defaultValue: false, description: 'Use values-public.yaml (only for lab smoke tests; false in closed loop)')
|
||
|
|
string(name: 'REGISTRY', defaultValue: '192.168.10.68:5000', description: 'Internal registry for push/tag')
|
||
|
|
string(name: 'KUBE_CONTEXT', defaultValue: '', description: 'Optional override; default lab-cluster-<ENV>')
|
||
|
|
string(name: 'GIT_BASE_URL', defaultValue: 'http://192.168.10.68:7990/bbadmin', description: 'Bitbucket project base URL without trailing slash')
|
||
|
|
string(name: 'GIT_BRANCH', defaultValue: 'main', description: 'Branch to build/deploy')
|
||
|
|
}
|
||
|
|
|
||
|
|
environment {
|
||
|
|
PATH = "/home/ubuntu/bin:${env.HOME}/bin:/usr/local/bin:${env.PATH}"
|
||
|
|
KUBECONFIG = "/home/ubuntu/kube-deploy.config"
|
||
|
|
NELM_SECRET_KEY = credentials('nelm-secret-key')
|
||
|
|
BITBUCKET_GIT = credentials('bitbucket-git')
|
||
|
|
}
|
||
|
|
|
||
|
|
options {
|
||
|
|
timestamps()
|
||
|
|
disableConcurrentBuilds()
|
||
|
|
}
|
||
|
|
|
||
|
|
stages {
|
||
|
|
stage('Checkout from Bitbucket') {
|
||
|
|
steps {
|
||
|
|
script {
|
||
|
|
def services = params.SERVICE == 'all' ? ['postgres', 'seaweedfs', 'ollama', 'keycloak', 'vllm'] : [params.SERVICE]
|
||
|
|
env.SERVICES = services.join(' ')
|
||
|
|
env.REPOS_DIR = "${env.WORKSPACE}/repos"
|
||
|
|
withEnv([
|
||
|
|
"GIT_BASE_URL=${params.GIT_BASE_URL}",
|
||
|
|
"GIT_BRANCH=${params.GIT_BRANCH}",
|
||
|
|
"SERVICES=${env.SERVICES}",
|
||
|
|
"DEST=${env.REPOS_DIR}",
|
||
|
|
"GIT_USER=${env.BITBUCKET_GIT_USR}",
|
||
|
|
"GIT_TOKEN=${env.BITBUCKET_GIT_PSW}",
|
||
|
|
"GIT_SSL_NO_VERIFY=1"
|
||
|
|
]) {
|
||
|
|
sh 'bash jenkins/checkout-repos.sh'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
stage('Build') {
|
||
|
|
when {
|
||
|
|
expression { params.ACTION == 'build' || params.ACTION == 'build-and-deploy' }
|
||
|
|
}
|
||
|
|
steps {
|
||
|
|
script {
|
||
|
|
load "${env.WORKSPACE}/jenkins/build.groovy"
|
||
|
|
env.SERVICES.split(' ').each { svc ->
|
||
|
|
buildService(svc, params.REGISTRY, params.ENV, env.REPOS_DIR)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
stage('Deploy') {
|
||
|
|
when {
|
||
|
|
expression { params.ACTION == 'deploy' || params.ACTION == 'build-and-deploy' }
|
||
|
|
}
|
||
|
|
steps {
|
||
|
|
script {
|
||
|
|
load "${env.WORKSPACE}/jenkins/deploy.groovy"
|
||
|
|
env.SERVICES.split(' ').each { svc ->
|
||
|
|
deployService(svc, params.ENV, params.USE_PUBLIC_IMAGES, params.KUBE_CONTEXT, env.REPOS_DIR)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
post {
|
||
|
|
always {
|
||
|
|
echo "Done: SERVICE=${params.SERVICE} ENV=${params.ENV} ACTION=${params.ACTION} BRANCH=${params.GIT_BRANCH}"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|