init
This commit is contained in:
+8
-20
@@ -19,11 +19,6 @@ pipeline {
|
|||||||
CLUSTER_NAME = 'cluster1'
|
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 {
|
stages {
|
||||||
stage('Checkout') {
|
stage('Checkout') {
|
||||||
steps {
|
steps {
|
||||||
@@ -48,13 +43,6 @@ pipeline {
|
|||||||
stage('Check Code Changes') {
|
stage('Check Code Changes') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
if (params.BUILD_POLICY == 'force_build') {
|
|
||||||
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 ?: ''
|
def prev = env.GIT_PREVIOUS_SUCCESSFUL_COMMIT ?: ''
|
||||||
if (!prev?.trim()) {
|
if (!prev?.trim()) {
|
||||||
echo "未找到上次成功构建提交,默认执行构建"
|
echo "未找到上次成功构建提交,默认执行构建"
|
||||||
@@ -66,7 +54,6 @@ pipeline {
|
|||||||
)
|
)
|
||||||
env.SKIP_BUILD = (rc == 0) ? 'true' : 'false'
|
env.SKIP_BUILD = (rc == 0) ? 'true' : 'false'
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
echo "代码变更检查结果: SKIP_BUILD=${env.SKIP_BUILD}"
|
echo "代码变更检查结果: SKIP_BUILD=${env.SKIP_BUILD}"
|
||||||
}
|
}
|
||||||
@@ -128,7 +115,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def fullImageWithTag = "${FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
|
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 "构建结束。镜像标签: ${env.IMAGE_TAG}"
|
||||||
echo "完整镜像: ${FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
|
echo "完整镜像: ${FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
|
||||||
echo "是否跳过构建: ${env.SKIP_BUILD}"
|
echo "是否跳过构建: ${env.SKIP_BUILD}"
|
||||||
echo "部署环境: ${params.DEPLOY_ENV}"
|
|
||||||
echo "目标集群: ${CLUSTER_NAME}"
|
echo "目标集群: ${CLUSTER_NAME}"
|
||||||
}
|
}
|
||||||
failure {
|
failure {
|
||||||
@@ -155,12 +141,15 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def deployToCluster(String clusterConfigId, String fullImageWithTag, String deployEnv) {
|
def deployToCluster(String clusterConfigId, String fullImageWithTag) {
|
||||||
withCredentials([
|
withCredentials([
|
||||||
file(credentialsId: clusterConfigId, variable: 'KUBECONFIG'),
|
file(credentialsId: clusterConfigId, variable: 'KUBECONFIG'),
|
||||||
usernamePassword(credentialsId: REGISTRY_CREDENTIALS_ID,
|
usernamePassword(credentialsId: REGISTRY_CREDENTIALS_ID,
|
||||||
usernameVariable: 'REGISTRY_USER',
|
usernameVariable: 'REGISTRY_USER',
|
||||||
passwordVariable: 'REGISTRY_PASS')
|
passwordVariable: 'REGISTRY_PASS')
|
||||||
|
]) {
|
||||||
|
withEnv([
|
||||||
|
"FULL_IMAGE_WITH_TAG=${fullImageWithTag}"
|
||||||
]) {
|
]) {
|
||||||
sh '''
|
sh '''
|
||||||
set -eux
|
set -eux
|
||||||
@@ -182,8 +171,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl
|
|||||||
|
|
||||||
echo "使用kubectl路径: $KUBECTL_PATH"
|
echo "使用kubectl路径: $KUBECTL_PATH"
|
||||||
echo "部署到集群: ${CLUSTER_NAME}"
|
echo "部署到集群: ${CLUSTER_NAME}"
|
||||||
echo "部署环境: ${DEPLOY_ENV}"
|
echo "镜像: ${FULL_IMAGE_WITH_TAG}"
|
||||||
echo "镜像: ${FULL_IMAGE_NAME}:${IMAGE_TAG}"
|
|
||||||
echo "命名空间: ${K8S_NAMESPACE}"
|
echo "命名空间: ${K8S_NAMESPACE}"
|
||||||
|
|
||||||
k() {
|
k() {
|
||||||
@@ -199,8 +187,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl
|
|||||||
--namespace="${K8S_NAMESPACE}" \
|
--namespace="${K8S_NAMESPACE}" \
|
||||||
--dry-run=client -o yaml | k apply -f -
|
--dry-run=client -o yaml | k apply -f -
|
||||||
|
|
||||||
sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_NAME}:${IMAGE_TAG}|g" \
|
sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_WITH_TAG}|g" \
|
||||||
-e "s|value: \".*\"|value: \"${DEPLOY_ENV}\"|g" \
|
|
||||||
more_dots/k8s/deployment.yaml > /tmp/deployment-${K8S_NAMESPACE}.yaml
|
more_dots/k8s/deployment.yaml > /tmp/deployment-${K8S_NAMESPACE}.yaml
|
||||||
|
|
||||||
k apply -f /tmp/deployment-${K8S_NAMESPACE}.yaml -n "${K8S_NAMESPACE}"
|
k apply -f /tmp/deployment-${K8S_NAMESPACE}.yaml -n "${K8S_NAMESPACE}"
|
||||||
@@ -212,4 +199,5 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl
|
|||||||
k get pods -n "${K8S_NAMESPACE}" -l app=more-dots
|
k get pods -n "${K8S_NAMESPACE}" -l app=more-dots
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-20
@@ -19,11 +19,6 @@ pipeline {
|
|||||||
CLUSTER_NAME = 'cluster2'
|
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 {
|
stages {
|
||||||
stage('Checkout') {
|
stage('Checkout') {
|
||||||
steps {
|
steps {
|
||||||
@@ -48,13 +43,6 @@ pipeline {
|
|||||||
stage('Check Code Changes') {
|
stage('Check Code Changes') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
if (params.BUILD_POLICY == 'force_build') {
|
|
||||||
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 ?: ''
|
def prev = env.GIT_PREVIOUS_SUCCESSFUL_COMMIT ?: ''
|
||||||
if (!prev?.trim()) {
|
if (!prev?.trim()) {
|
||||||
echo "未找到上次成功构建提交,默认执行构建"
|
echo "未找到上次成功构建提交,默认执行构建"
|
||||||
@@ -66,7 +54,6 @@ pipeline {
|
|||||||
)
|
)
|
||||||
env.SKIP_BUILD = (rc == 0) ? 'true' : 'false'
|
env.SKIP_BUILD = (rc == 0) ? 'true' : 'false'
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
echo "代码变更检查结果: SKIP_BUILD=${env.SKIP_BUILD}"
|
echo "代码变更检查结果: SKIP_BUILD=${env.SKIP_BUILD}"
|
||||||
}
|
}
|
||||||
@@ -128,7 +115,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def fullImageWithTag = "${FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
|
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 "构建结束。镜像标签: ${env.IMAGE_TAG}"
|
||||||
echo "完整镜像: ${FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
|
echo "完整镜像: ${FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
|
||||||
echo "是否跳过构建: ${env.SKIP_BUILD}"
|
echo "是否跳过构建: ${env.SKIP_BUILD}"
|
||||||
echo "部署环境: ${params.DEPLOY_ENV}"
|
|
||||||
echo "目标集群: ${CLUSTER_NAME}"
|
echo "目标集群: ${CLUSTER_NAME}"
|
||||||
}
|
}
|
||||||
failure {
|
failure {
|
||||||
@@ -155,12 +141,15 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def deployToCluster(String clusterConfigId, String fullImageWithTag, String deployEnv) {
|
def deployToCluster(String clusterConfigId, String fullImageWithTag) {
|
||||||
withCredentials([
|
withCredentials([
|
||||||
file(credentialsId: clusterConfigId, variable: 'KUBECONFIG'),
|
file(credentialsId: clusterConfigId, variable: 'KUBECONFIG'),
|
||||||
usernamePassword(credentialsId: REGISTRY_CREDENTIALS_ID,
|
usernamePassword(credentialsId: REGISTRY_CREDENTIALS_ID,
|
||||||
usernameVariable: 'REGISTRY_USER',
|
usernameVariable: 'REGISTRY_USER',
|
||||||
passwordVariable: 'REGISTRY_PASS')
|
passwordVariable: 'REGISTRY_PASS')
|
||||||
|
]) {
|
||||||
|
withEnv([
|
||||||
|
"FULL_IMAGE_WITH_TAG=${fullImageWithTag}"
|
||||||
]) {
|
]) {
|
||||||
sh '''
|
sh '''
|
||||||
set -eux
|
set -eux
|
||||||
@@ -182,8 +171,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl
|
|||||||
|
|
||||||
echo "使用kubectl路径: $KUBECTL_PATH"
|
echo "使用kubectl路径: $KUBECTL_PATH"
|
||||||
echo "部署到集群: ${CLUSTER_NAME}"
|
echo "部署到集群: ${CLUSTER_NAME}"
|
||||||
echo "部署环境: ${DEPLOY_ENV}"
|
echo "镜像: ${FULL_IMAGE_WITH_TAG}"
|
||||||
echo "镜像: ${FULL_IMAGE_NAME}:${IMAGE_TAG}"
|
|
||||||
echo "命名空间: ${K8S_NAMESPACE}"
|
echo "命名空间: ${K8S_NAMESPACE}"
|
||||||
|
|
||||||
k() {
|
k() {
|
||||||
@@ -199,8 +187,7 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl
|
|||||||
--namespace="${K8S_NAMESPACE}" \
|
--namespace="${K8S_NAMESPACE}" \
|
||||||
--dry-run=client -o yaml | k apply -f -
|
--dry-run=client -o yaml | k apply -f -
|
||||||
|
|
||||||
sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_NAME}:${IMAGE_TAG}|g" \
|
sed -e "s|image:.*more_dots:.*|image: ${FULL_IMAGE_WITH_TAG}|g" \
|
||||||
-e "s|value: \".*\"|value: \"${DEPLOY_ENV}\"|g" \
|
|
||||||
more_dots/k8s/deployment.yaml > /tmp/deployment-${K8S_NAMESPACE}.yaml
|
more_dots/k8s/deployment.yaml > /tmp/deployment-${K8S_NAMESPACE}.yaml
|
||||||
|
|
||||||
k apply -f /tmp/deployment-${K8S_NAMESPACE}.yaml -n "${K8S_NAMESPACE}"
|
k apply -f /tmp/deployment-${K8S_NAMESPACE}.yaml -n "${K8S_NAMESPACE}"
|
||||||
@@ -212,4 +199,5 @@ def deployToCluster(String clusterConfigId, String fullImageWithTag, String depl
|
|||||||
k get pods -n "${K8S_NAMESPACE}" -l app=more-dots
|
k get pods -n "${K8S_NAMESPACE}" -l app=more-dots
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-7
@@ -1,20 +1,20 @@
|
|||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: more_dots
|
name: more-dots
|
||||||
namespace: default
|
namespace: more-dots
|
||||||
spec:
|
spec:
|
||||||
replicas: 2
|
replicas: 2
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: more_dots
|
app: more-dots
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app: more_dots
|
app: more-dots
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: more_dots
|
- name: more-dots
|
||||||
image: harbor.yourdomain.com/library/more_dots:${IMAGE_TAG}
|
image: harbor.yourdomain.com/library/more_dots:${IMAGE_TAG}
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8000
|
- containerPort: 8000
|
||||||
@@ -25,10 +25,11 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: more_dots-service
|
name: more-dots-service
|
||||||
|
namespace: more-dots
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app: more_dots
|
app: more-dots
|
||||||
ports:
|
ports:
|
||||||
- port: 80
|
- port: 80
|
||||||
targetPort: 8000
|
targetPort: 8000
|
||||||
|
|||||||
Reference in New Issue
Block a user