目录

Jenkins流水线

流水线入门

完善流水线脚本


Jenkins流水线

流水线入门

  • 创建流水线任务,并构建第一个Demo

         

  • 自定义pipeline脚本 初体验
//所有的脚本都在pipeline中
pipeline {
	//指定哪个jenkins节点执行任务
    agent any

    //声明全局变量
	environment {
		key = 'value'
	}
	
    stages {
        stage('拉取Git仓库代码') {
            steps {
                echo '拉取Git仓库代码 - SUCCESS'
            }
        }
		stage('通过maven构建项目') {
            steps {
                echo '通过maven构建项目 - SUCCESS'
            }
        }
		stage('通过SonarQube进行代码质量检测') {
            steps {
                echo '通过SonarQube进行代码质量检测 - SUCCESS'
            }
        }
		stage('通过Docker制作自定义镜像') {
            steps {
                echo '通过Docker制作自定义镜像 - SUCCESS'
            }
        }
		stage('自定义镜像推送到Harbor仓库') {
            steps {
                echo '自定义镜像推送到Harbor仓库 - SUCCESS'
            }
        }
		stage('通过Publish SSH Over通知目标服务器') {
            steps {
                echo '通过Publish SSH Over通知目标服务器 - SUCCESS'
            }
        }
    }
}

 

  •  为了更方便的管理脚本,可以把pipeline脚本提交到Gitee仓库

 

完善流水线脚本

  • 完善从Gitee仓库拉取代码的脚本,基于标签拉取代码

生成的脚本复制到Jenkinsfile文件中
stage('拉取Git仓库代码') {
	steps {
        //$tag,即为jenkins参数化构建中git的参数
		checkout scmGit(branches: [[name: '$tag']], extensions: [], userRemoteConfigs: [[url: 'https://gitee.com/chao-tech-learning/jenkins-demo.git']])
	}
}

 

  •  完善用maven进行打包的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置

w

stage('通过maven构建项目') {
	steps {
		sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
	}
}

jenkins容器中也有了对应的target文件
  • 完善SonarQube检测代码的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置

stage('通过SonarQube进行代码质量检测') {
	steps {
		sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner  -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.login=b7748ed04ce2c7d570dcda0f2319b44ac1c5fdf4'
	}
}

  • 完善制作自定义镜像脚本,生成的脚本添加到Jenkinsfile文件中对应的位置

stage('通过Docker制作自定义镜像') {
	steps {
		sh '''mv target/*.jar docker/
docker build -t ${JOB_NAME}:$tag docker/'''
	}
}

  • 完善自定义镜像推送到Harbor仓库的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置

//声明全局变量
environment {
	harborAddress = '192.168.171.111:80'
	harborUser = 'admin'
	harborPassword = 'Harbor12345'
	harborRepo = 'repository'
}
stage('自定义镜像推送到Harbor仓库') {
	steps {
        //用全局变量替换harbor的相关信息
		sh '''docker login -u ${harborUser} -p ${harborPassword} ${harborAddress}
docker tag ${JOB_NAME}:$tag ${harborAddress}/${harborRepo}/${JOB_NAME}:$tag
docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:$tag'''
	}
}

  • 完善通过Publish SSH Over通知目标服务器的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置

stage('通过Publish SSH Over通知目标服务器') {
	steps {
        //"deploy.sh $harborAddress $harborRepo ${JOB_NAME} $tag $host_port $container_port"这里生成是'',需要改成""
        //deploy.sh脚本在上篇博文有介绍
		sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.171.110', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "deploy.sh $harborAddress $harborRepo ${JOB_NAME} $tag $host_port $container_port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
	}
}

端口的添加参考上篇博文

 

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐