diff --git a/Jenkinsfile_dev b/Jenkinsfile_dev index c2e904e..4dc4e25 100644 --- a/Jenkinsfile_dev +++ b/Jenkinsfile_dev @@ -19,11 +19,6 @@ pipeline { CLUSTER_NAME = 'cluster1' } - parameters { - choice(name: 'DEPLOY_ENV', choices: ['dev', 'staging', 'prod'], description: '选择部署环境') - choice(name: 'BUILD_POLICY', choices: ['auto', 'force_build', 'skip_build'], description: '构建策略:auto=按代码变更判断') - } - stages { stage('Checkout') { steps { @@ -48,24 +43,16 @@ pipeline { stage('Check Code Changes') { steps { script { - if (params.BUILD_POLICY == 'force_build') { + def prev = env.GIT_PREVIOUS_SUCCESSFUL_COMMIT ?: '' + if (!prev?.trim()) { + echo "未找到上次成功构建提交,默认执行构建" env.SKIP_BUILD = 'false' - echo "BUILD_POLICY=force_build,强制构建" - } else if (params.BUILD_POLICY == 'skip_build') { - env.SKIP_BUILD = 'true' - echo "BUILD_POLICY=skip_build,跳过构建" } else { - def prev = env.GIT_PREVIOUS_SUCCESSFUL_COMMIT ?: '' - if (!prev?.trim()) { - echo "未找到上次成功构建提交,默认执行构建" - env.SKIP_BUILD = 'false' - } else { - int rc = sh( - script: "git diff --quiet ${prev} HEAD -- more_dots", - returnStatus: true - ) - env.SKIP_BUILD = (rc == 0) ? 'true' : 'false' - } + int rc = sh( + script: "git diff --quiet ${prev} HEAD -- more_dots", + returnStatus: true + ) + env.SKIP_BUILD = (rc == 0) ? 'true' : 'false' } echo "代码变更检查结果: SKIP_BUILD=${env.SKIP_BUILD}" @@ -128,7 +115,7 @@ pipeline { } def fullImageWithTag = "${FULL_IMAGE_NAME}:${env.IMAGE_TAG}" - deployToCluster(CLUSTER_CONFIG_ID, fullImageWithTag, params.DEPLOY_ENV) + deployToCluster(CLUSTER_CONFIG_ID, fullImageWithTag) } } } @@ -146,7 +133,6 @@ pipeline { echo "构建结束。镜像标签: ${env.IMAGE_TAG}" echo "完整镜像: ${FULL_IMAGE_NAME}:${env.IMAGE_TAG}" echo "是否跳过构建: ${env.SKIP_BUILD}" - echo "部署环境: ${params.DEPLOY_ENV}" echo "目标集群: ${CLUSTER_NAME}" } failure { @@ -155,13 +141,16 @@ pipeline { } } -def deployToCluster(String clusterConfigId, String fullImageWithTag, String deployEnv) { +def deployToCluster(String clusterConfigId, String fullImageWithTag) { withCredentials([ file(credentialsId: clusterConfigId, variable: 'KUBECONFIG'), usernamePassword(credentialsId: REGISTRY_CREDENTIALS_ID, usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS') ]) { + withEnv([ + "FULL_IMAGE_WITH_TAG=${fullImageWithTag}" + ]) { sh ''' set -eux @@ -182,8 +171,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl echo "使用kubectl路径: $KUBECTL_PATH" echo "部署到集群: ${CLUSTER_NAME}" - echo "部署环境: ${DEPLOY_ENV}" - echo "镜像: ${FULL_IMAGE_NAME}:${IMAGE_TAG}" + echo "镜像: ${FULL_IMAGE_WITH_TAG}" echo "命名空间: ${K8S_NAMESPACE}" k() { @@ -199,8 +187,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl --namespace="${K8S_NAMESPACE}" \ --dry-run=client -o yaml | k apply -f - - sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_NAME}:${IMAGE_TAG}|g" \ - -e "s|value: \".*\"|value: \"${DEPLOY_ENV}\"|g" \ + sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_WITH_TAG}|g" \ more_dots/k8s/deployment.yaml > /tmp/deployment-${K8S_NAMESPACE}.yaml k apply -f /tmp/deployment-${K8S_NAMESPACE}.yaml -n "${K8S_NAMESPACE}" @@ -211,5 +198,6 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl echo "部署完成,查看pod状态:" k get pods -n "${K8S_NAMESPACE}" -l app=more-dots ''' + } } } diff --git a/Jenkinsfile_prod b/Jenkinsfile_prod index 9db459c..3b2c57a 100644 --- a/Jenkinsfile_prod +++ b/Jenkinsfile_prod @@ -19,11 +19,6 @@ pipeline { CLUSTER_NAME = 'cluster2' } - parameters { - choice(name: 'DEPLOY_ENV', choices: ['dev', 'staging', 'prod'], description: '选择部署环境') - choice(name: 'BUILD_POLICY', choices: ['auto', 'force_build', 'skip_build'], description: '构建策略:auto=按代码变更判断') - } - stages { stage('Checkout') { steps { @@ -48,24 +43,16 @@ pipeline { stage('Check Code Changes') { steps { script { - if (params.BUILD_POLICY == 'force_build') { + def prev = env.GIT_PREVIOUS_SUCCESSFUL_COMMIT ?: '' + if (!prev?.trim()) { + echo "未找到上次成功构建提交,默认执行构建" env.SKIP_BUILD = 'false' - echo "BUILD_POLICY=force_build,强制构建" - } else if (params.BUILD_POLICY == 'skip_build') { - env.SKIP_BUILD = 'true' - echo "BUILD_POLICY=skip_build,跳过构建" } else { - def prev = env.GIT_PREVIOUS_SUCCESSFUL_COMMIT ?: '' - if (!prev?.trim()) { - echo "未找到上次成功构建提交,默认执行构建" - env.SKIP_BUILD = 'false' - } else { - int rc = sh( - script: "git diff --quiet ${prev} HEAD -- more_dots", - returnStatus: true - ) - env.SKIP_BUILD = (rc == 0) ? 'true' : 'false' - } + int rc = sh( + script: "git diff --quiet ${prev} HEAD -- more_dots", + returnStatus: true + ) + env.SKIP_BUILD = (rc == 0) ? 'true' : 'false' } echo "代码变更检查结果: SKIP_BUILD=${env.SKIP_BUILD}" @@ -128,7 +115,7 @@ pipeline { } def fullImageWithTag = "${FULL_IMAGE_NAME}:${env.IMAGE_TAG}" - deployToCluster(CLUSTER_CONFIG_ID, fullImageWithTag, params.DEPLOY_ENV) + deployToCluster(CLUSTER_CONFIG_ID, fullImageWithTag) } } } @@ -146,7 +133,6 @@ pipeline { echo "构建结束。镜像标签: ${env.IMAGE_TAG}" echo "完整镜像: ${FULL_IMAGE_NAME}:${env.IMAGE_TAG}" echo "是否跳过构建: ${env.SKIP_BUILD}" - echo "部署环境: ${params.DEPLOY_ENV}" echo "目标集群: ${CLUSTER_NAME}" } failure { @@ -155,13 +141,16 @@ pipeline { } } -def deployToCluster(String clusterConfigId, String fullImageWithTag, String deployEnv) { +def deployToCluster(String clusterConfigId, String fullImageWithTag) { withCredentials([ file(credentialsId: clusterConfigId, variable: 'KUBECONFIG'), usernamePassword(credentialsId: REGISTRY_CREDENTIALS_ID, usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS') ]) { + withEnv([ + "FULL_IMAGE_WITH_TAG=${fullImageWithTag}" + ]) { sh ''' set -eux @@ -182,8 +171,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl echo "使用kubectl路径: $KUBECTL_PATH" echo "部署到集群: ${CLUSTER_NAME}" - echo "部署环境: ${DEPLOY_ENV}" - echo "镜像: ${FULL_IMAGE_NAME}:${IMAGE_TAG}" + echo "镜像: ${FULL_IMAGE_WITH_TAG}" echo "命名空间: ${K8S_NAMESPACE}" k() { @@ -199,8 +187,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl --namespace="${K8S_NAMESPACE}" \ --dry-run=client -o yaml | k apply -f - - sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_NAME}:${IMAGE_TAG}|g" \ - -e "s|value: \".*\"|value: \"${DEPLOY_ENV}\"|g" \ + sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_WITH_TAG}|g" \ more_dots/k8s/deployment.yaml > /tmp/deployment-${K8S_NAMESPACE}.yaml k apply -f /tmp/deployment-${K8S_NAMESPACE}.yaml -n "${K8S_NAMESPACE}" @@ -211,5 +198,6 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl echo "部署完成,查看pod状态:" k get pods -n "${K8S_NAMESPACE}" -l app=more-dots ''' + } } } diff --git a/k8s/deployment.yaml b/k8s/deployment.yaml index 8b1aba6..017f00b 100644 --- a/k8s/deployment.yaml +++ b/k8s/deployment.yaml @@ -1,20 +1,20 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: more_dots - namespace: default + name: more-dots + namespace: more-dots spec: replicas: 2 selector: matchLabels: - app: more_dots + app: more-dots template: metadata: labels: - app: more_dots + app: more-dots spec: containers: - - name: more_dots + - name: more-dots image: harbor.yourdomain.com/library/more_dots:${IMAGE_TAG} ports: - containerPort: 8000 @@ -25,10 +25,11 @@ spec: apiVersion: v1 kind: Service metadata: - name: more_dots-service + name: more-dots-service + namespace: more-dots spec: selector: - app: more_dots + app: more-dots ports: - port: 80 targetPort: 8000