jenkins使用pipeline例子

官方文档:

https://www.jenkins.io/doc/book/pipeline/getting-started/

 

例子1:springboot项目打包

pipeline {
    agent any
    
    environment {
        CODE_DIR = "/jenkins_data/springboot_test"
    }

    stages {
        stage('清理并创建目录') {
            steps {
                echo "开始清理旧目录:${CODE_DIR}"
                sh "rm -rf ${CODE_DIR} || true"
                echo "旧目录清理完成,开始创建新目录:${CODE_DIR}"
                sh "mkdir -p ${CODE_DIR}"
                echo "新目录创建完成:${CODE_DIR}"
            }
        }
        
        stage('拉取代码') {
            steps {
                echo "进入目录:${CODE_DIR},开始拉取Git代码"
                // dir步骤:切换到指定目录执行后续操作(相当于cd ${CODE_DIR})
                dir("${CODE_DIR}") {
                    // 拉取Git代码
                    git(url: "http://192.168.1.105/devops/springboot.git",branch: "master",)
                    echo "Git代码拉取完成,当前目录文件列表:"
                    // 查看目录内容,验证代码是否拉取成功
                    sh "ls -l"
                    sh "pwd"
                }
            }
        }

        stage('maven打包') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}") {
                    // 执行打包命令,增加 -e(详细错误日志)、-U(强制更新快照依赖)
                    sh 'mvn clean package'
                }
            }
        }
        
    }
}

 

例子2:执行shell脚本

 

pipeline {
    agent any
    
    environment {
        CODE_DIR = "/jenkins_data/springboot_test"
    }

    stages {
        stage('清理并创建目录') {
            steps {
                echo "开始清理旧目录:${CODE_DIR}"
                sh "rm -rf ${CODE_DIR} || true"
                echo "旧目录清理完成,开始创建新目录:${CODE_DIR}"
                sh "mkdir -p ${CODE_DIR}"
                echo "新目录创建完成:${CODE_DIR}"
            }
        }
        
        stage('拉取代码') {
            steps {
                echo "进入目录:${CODE_DIR},开始拉取Git代码"
                // dir步骤:切换到指定目录执行后续操作(相当于cd ${CODE_DIR})
                dir("${CODE_DIR}") {
                    // 拉取Git代码
                    git(url: "http://192.168.1.105/devops/springboot.git",branch: "master",)
                    echo "Git代码拉取完成,当前目录文件列表:"
                    // 查看目录内容,验证代码是否拉取成功
                    sh "ls -l"
                    sh "pwd"
                }
            }
        }

        stage('maven打包') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}") {
                    // 执行打包命令,增加 -e(详细错误日志)、-U(强制更新快照依赖)
                    sh 'mvn clean package'
                }
            }
        }

        stage('docker build构建镜像') {
            steps {
                echo "执行docker build构建脚本docker_build.sh"
                sh '/script/docker_build.sh'
            }
        }
        
    }
}

 

脚本内容

[root@master script]# more docker_build.sh 
#!/bin/bash

cd /jenkins_data/springboot_test/target
cp demo-1.0-SNAPSHOT.jar /tmp/myspringboot/
cd /tmp/myspringboot/
docker build -t myspringboot .

 

例子3:制作成docker镜像

pipeline {
    agent any
    
    environment {
        CODE_DIR = "/jenkins_data/springboot_test"
        DATE = new Date().format('YYYYMMddHHmmss')
        TAG = "${DATE}"
        IMAGE_NAME = 'my-app'
    }

    stages {
        
        stage('Initialization'){
          steps{
            script{
                currentBuild.displayName='dev'
                currentBuild.description="Hello "
            }
          }
        }
        
        stage('清理并创建目录') {
            steps {
                echo "开始清理旧目录:${CODE_DIR}"
                sh "rm -rf ${CODE_DIR} || true"
                echo "旧目录清理完成,开始创建新目录:${CODE_DIR}"
                sh "mkdir -p ${CODE_DIR}"
                echo "新目录创建完成:${CODE_DIR}"
            }
        }
        
        stage('拉取代码') {
            steps {
                echo "进入目录:${CODE_DIR},开始拉取Git代码"
                // dir步骤:切换到指定目录执行后续操作(相当于cd ${CODE_DIR})
                dir("${CODE_DIR}") {
                    // 拉取Git代码
                    git(url: "http://192.168.1.105/devops/springboot.git",branch: "master",)
                    echo "Git代码拉取完成,当前目录文件列表:"
                    // 查看目录内容,验证代码是否拉取成功
                    sh "ls -l"
                    sh "pwd"
                }
            }
        }

        stage('maven打包') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}") {
                    // 执行打包命令,增加 -e(详细错误日志)、-U(强制更新快照依赖)
                    sh 'mvn clean package'
                }
            }
        }

        stage('拷贝打包文件') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}/target/"){
                    sh "cp demo-1.0-SNAPSHOT.jar /var/lib/jenkins/workspace/dockertest/"                    
                }
            }
        }
        

        stage('Build Docker Image') {
            steps {
                dir('/var/lib/jenkins/workspace/dockertest/'){
                    script {
                         docker.build("${IMAGE_NAME}:${TAG}")
                    }
                }
            }
        }
        
    }
}

 

例子4:

指定节点构建,节点106需要安装与主节点版本一致的jdk maven git

pipeline {
    agent { label '106' }
    environment {
        CODE_DIR = "/jenkins_data/springboot_test"
        DATE = new Date().format('YYYYMMddHHmmss')
        TAG = "${DATE}"
        IMAGE_NAME = 'springtest'
        IMAGE_NAME_ALIYUN = "registry.cn-shenzhen.aliyuncs.com/hxlk8s/${IMAGE_NAME}:${TAG}"
        MYPROJ_DIR="/var/lib/jenkins/workspace/dockertest/"
        MYPROJ_FILENAME="demo-1.0-SNAPSHOT.jar"
    }

    stages {
        stage('Initialization'){
          steps{
            script{
                currentBuild.displayName='dev'
                currentBuild.description="mytest "
            }
          }
        }
        
        stage('清理并创建目录') {
            steps {
                echo "开始清理旧目录:${CODE_DIR}"
                sh "rm -rf ${CODE_DIR} || true"
                echo "旧目录清理完成,开始创建新目录:${CODE_DIR}"
                sh "mkdir -p ${CODE_DIR}"
                echo "新目录创建完成:${CODE_DIR}"
            }
        }
        
        stage('拉取代码') {
            steps {
                echo "进入目录:${CODE_DIR},开始拉取Git代码"
                // dir步骤:切换到指定目录执行后续操作(相当于cd ${CODE_DIR})
                dir("${CODE_DIR}") {
                    // 拉取Git代码
                    git(url: "http://192.168.1.105/devops/springboot.git",branch: "master",)
                    echo "Git代码拉取完成,当前目录文件列表:"
                    // 查看目录内容,验证代码是否拉取成功
                    sh "ls -l"
                    sh "pwd"
                }
            }
        }

        stage('maven打包') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}") {
                    // 执行打包命令,增加 -e(详细错误日志)、-U(强制更新快照依赖)
                    sh 'mvn clean package'
                }
            }
        }

        stage('拷贝打包文件') {
            steps {
                echo "进入代码目录打包:${CODE_DIR}"
                dir("${CODE_DIR}/target/"){
                    sh "cp ${MYPROJ_FILENAME} ${MYPROJ_DIR}"                    
                }
            }
        }
        

        stage('Build Docker Image') {
            steps {
                dir("${MYPROJ_DIR}"){
                    script {
                        docker.build("${IMAGE_NAME_ALIYUN}")
                    }
                }
            }
        }

        stage('Test Image') {
            steps {
                script {
                    // 运行Docker容器进行测试
                    docker.image("${IMAGE_NAME_ALIYUN}").inside {
                        sh 'echo "Running tests inside the container"'
                        // 运行测试脚本
                    }
                }
            }
        }
        
    }
    
}

 

posted @ 2025-11-11 11:37  slnngk  阅读(26)  评论(0)    收藏  举报