jenkins popeline模版

pipeline {
    agent any

    // 定义一些可以在整个pipeline中使用的变量
    environment {
        // 可以使用 Jenkins 密钥管理中的凭据
        DOCKER_IMAGE = 'my-app-image'
        DOCKER_REGISTRY_CREDENTIALS_ID = 'my-docker-registry-credentials'
    }

    stages {
        stage('代码拉取') {
            steps {
                echo '代码拉取'
                // 不进行ssl验证
                sh 'git -c http.sslVerify=false clone https://192.168.73.30/gaohaixiang/lowcode.git'
            }
        }

        stage('构建并测试') {
            parallel {
                stage('后端构建') {
                    steps {
                        dir('lowcode') {
                            echo 'Building and Testing Backend'
                            //sh './gradlew build'
                        }
                    }
                }
                stage('前端构建') {
                    steps {
                        dir('frontend') {
                            echo 'Building and Testing Frontend'
                            //sh 'npm install && npm test'
                        }
                    }
                }
            }
        }

        stage('构建容器镜像') {
            steps {
                script {
                    //docker.build("${DOCKER_IMAGE}:${env.BUILD_NUMBER}")
                    echo 'docker.build("${DOCKER_IMAGE}:${env.BUILD_NUMBER}")'
                }
            }
        }

        stage('推送容器镜像') {
            steps {
                script {
                    echo 'Push Docker Image'
                    //docker.withRegistry('https://registry.hub.docker.com', DOCKER_REGISTRY_CREDENTIALS_ID) {
                    //    docker.image("${DOCKER_IMAGE}:${env.BUILD_NUMBER}").push()
                    //}
                }
            }
        }

        stage('部署到测试') {
            steps {
                echo 'Deploying to Staging Environment'
                // 使用脚本部署到暂存环境
                //sh 'kubectl apply -f k8s/staging'
            }
        }

        stage('部署生产审批') {
            when {
                branch 'main'
            }
            steps {
                input 'Deploy to Production?'
            }
        }

        stage('部署到生产') {
            when {
                branch 'main'
            }
            steps {
                script {
                    // 尝试部署到生产环境
                    try {
                        echo 'Deploying to Production Environment'
                        //sh 'kubectl apply -f k8s/production'
                        // 假设这里有一个检查部署成功的步骤
                        // 如果部署失败,它将抛出一个异常
                    } catch (Exception e) {
                        // 如果部署失败,执行回滚
                        echo "Deployment failed! Attempting rollback..."
                        //sh 'kubectl rollout undo deployment/my-app'
                        // 抛出异常以确保该阶段标记为失败
                        throw e
                    }
                }
            }
        }
    }

    post {
		always {
            echo '这个消息总是会打印'

        }
        success {
            echo '构建成功!'
            // 可以在这里添加发送成功通知的步骤
        }
        failure {
            echo '构建失败了!'
            // 可以在这里添加发送失败通知的步骤
        }
        unstable {
            echo '构建不稳定!'
        }
        changed {
            echo '构建状态发生了变化。'
        }
        fixed {
            echo '之前失败的构建现在修复了。'
        }
        regression {
            echo '构建状态比之前更差了。'
        }
        aborted {
            echo '构建被中断。'
        }
        cleanup {
            echo '执行清理步骤。'
			// 清理工作,例如删除临时文件或者释放资源
			cleanWs()
        }
    }
}


// 定义一个通知函数
def notify(String message) {
    echo "Sending notification: ${message}"
    // 这里可以集成邮件通知、Slack、Teams 等
}


你可能感兴趣的:(CICD,jenkins,运维)