CICD的基本实现

使用Gitee+jenkins+harbor+docker实现基本CICD操作

Gitee操作

1、

将dockerfile和jenkinsfile 放在项目的同级目录,并且对master分支创建一个标签V5.0.0,以便之后jenkins可以基于tag便签构建

2、dockerfile

jenkinsfile

//jenkins集成docker部署java项目
pipeline {
    agent {label 'master'}
    tools{
        maven 'maven'
    }

    environment {
        GIT_PROJECT_ADDR="https://gitee.com/shentaotest/cimp.git" //项目的git地址
        JENKINS_WORKSPACE="/root/.jenkins/workspace"    //jenkins存放文件的地址
        PROJECT_NAME="${JOB_NAME}"  			        // 项目名
        JAR_NAME="redis-0.0.1-SNAPSHOT.jar"   // 项目生成的jar的名字
        IMAGE_NAME="cimp"                    // 镜像名一般和项目名相同
        IMAGE_ADDR="registry.cn-chengdu.aliyuncs.com/shentao123/${IMAGE_NAME}"    // 镜像的位置
        VERSION_ID="v${BUILD_ID}.0.0"  //镜像的版本
    }
    stages {
        stage('代码拉取'){
            steps{
                echo 'This is a pullCode step'
                //git branch: "${BRANCH}", credentialsId: '1001', url: "${GIT_PROJECT_ADDR}"
//                    checkout $tag
//                    checkout scm
                    checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [],
                    userRemoteConfigs: [[url: 'https://gitee.com/shentaotest/cimp.git']]])

            }
        }
        stage('构建操作') {
            steps{
                echo 'This is a Build step'
                // 在有Jenkinsfile同一个目录下(项目的根目录下)
//                 sh 'cd spring-boot-backstage'
                sh '''

                mvn clean package
                cd ./target/
                mv redis-0.0.1-SNAPSHOT.jar ../
                '''
            }
        }
        // 创建目录(如果不存在),并把jar文件上传到该目录下
        stage('构建镜像') {
            steps{
                echo 'push jar to target server'
                sh '''
                    ole_image_id=`docker images|grep ${IMAGE_NAME}|grep ${VERSION_ID}|awk '{print $3}'`
                    if [[ -n "${ole_image_id}" ]]; then
                        docker rmi -f ${ole_image_id}
                    fi

                    docker build -f dockerfile --build-arg jar_name=${JAR_NAME} -t ${IMAGE_NAME}:${VERSION_ID} .

                    new_image_id=`docker images|grep ${IMAGE_NAME}|grep ${VERSION_ID}|awk '{print $3}'`
                    sudo docker login --username=沈涛mayday --password=990712st registry.cn-chengdu.aliyuncs.com
                    sudo docker tag ${new_image_id} ${IMAGE_ADDR}:${VERSION_ID}
                    sudo docker push ${IMAGE_ADDR}:${VERSION_ID}
                '''
            }
        }
        stage('发送到目标服务器并运行容器') {
            steps {
                echo 'pull image and docker run'
                sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.177.5', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "deploy.sh $IMAGE_ADDR $VERSION_ID $PROJECT_NAME $host_port  $JAR_NAME", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

jenkinsfile说明:

 这一步在jenkins流水线语法中生成发送到目标服务器执行脚本需要向脚本传入4个参数

 deploy脚本

最后将deploy.sh 脚本放在目标服务器的/usr/bin 下面。

jenkins配置参数化构建以及选择构建参数

 

 构建成功!

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值