| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // Jenkins Job:gateway-k8s | Script Path: docs/jenkins/produ/gateway/Jenkinsfile
- def k8s = load 'docs/jenkins/produ/_shared/k8s-produ-lib.groovy'
- def SVC = [
- prodDir: 'dining',
- module: 'alien-dining',
- serverPort: '50019',
- withLib: false,
- deployName: 'dining',
- ]
- pipeline {
- agent any
- options {
- buildDiscarder(logRotator(numToKeepStr: '15'))
- timestamps()
- timeout(time: 90, unit: 'MINUTES')
- }
- parameters {
- string(name: 'GIT_BRANCH', defaultValue: 'uat-20260202', trim: true)
- string(name: 'IMAGE_TAG', defaultValue: '', trim: true)
- choice(name: 'DEPLOY_STRATEGY', choices: ['rolling', 'canary'])
- string(name: 'CANARY_WEIGHT', defaultValue: '10', trim: true)
- string(name: 'HARBOR_REGISTRY', defaultValue: '39.106.135.88', trim: true)
- string(name: 'HARBOR_PROJECT', defaultValue: 'alien_cloud', trim: true)
- string(name: 'BASE_IMAGE', defaultValue: '39.106.135.88/alien_cloud/base/openjdk8-ffmpeg:v1', trim: true)
- string(name: 'K8S_NAMESPACE', defaultValue: 'alien-produ', trim: true)
- booleanParam(name: 'SKIP_MAVEN', defaultValue: false)
- booleanParam(name: 'DRY_RUN', defaultValue: false)
- }
- environment {
- MAVEN_HOME = tool '3.6.3'
- PATH = "${MAVEN_HOME}/bin:${env.PATH}"
- GIT_URL = 'http://8.152.195.41:3000/alien/alien_cloud'
- GIT_CREDENTIALS = 'zhanghaomimapingzheng'
- HARBOR_CREDENTIALS = 'harbor-robot-alien'
- KUBECONFIG_CREDENTIALS = 'ack-kubeconfig-alien'
- }
- stages {
- stage('Checkout') {
- steps {
- script {
- def branch = (params.GIT_BRANCH ?: 'uat-20260202').trim()
- k8s.checkoutBranch(this, branch, env.GIT_URL, env.GIT_CREDENTIALS)
- }
- }
- }
- stage('Maven Package') {
- when { expression { return !params.SKIP_MAVEN } }
- steps {
- script { k8s.mavenPackageModule(this, SVC.module) }
- }
- }
- stage('Docker Build & Push') {
- steps {
- script {
- def tag = (params.IMAGE_TAG ?: '').trim() ?: "build-${env.BUILD_NUMBER}"
- env.IMAGE_REF = "${params.HARBOR_REGISTRY}/${params.HARBOR_PROJECT}/${SVC.prodDir}:${tag}"
- if (params.DRY_RUN) {
- echo "DRY_RUN: ${env.IMAGE_REF}"
- return
- }
- k8s.dockerBuildAndPush(this, SVC + [
- harborRegistry: params.HARBOR_REGISTRY,
- harborProject: params.HARBOR_PROJECT,
- baseImage: params.BASE_IMAGE,
- imageRef: env.IMAGE_REF,
- harborCredentialsId: env.HARBOR_CREDENTIALS,
- ])
- }
- }
- }
- stage('Deploy to ACK') {
- steps {
- script {
- if (params.DRY_RUN) { return }
- k8s.deployToAck(this, [
- k8sNamespace: params.K8S_NAMESPACE,
- imageRef: env.IMAGE_REF,
- deployStrategy: params.DEPLOY_STRATEGY,
- deploymentStable: SVC.deployName,
- deploymentCanary: "${SVC.deployName}-canary",
- ingressCanary: "${SVC.deployName}-canary",
- canaryWeight: (params.CANARY_WEIGHT ?: '10').trim(),
- kubeCredentialsId: env.KUBECONFIG_CREDENTIALS,
- ])
- }
- }
- }
- }
- post {
- success { echo ">>> ${SVC.prodDir} -> ${env.IMAGE_REF ?: 'dry-run'}" }
- }
- }
|