Jenkins持续集成步骤

本文详细介绍了如何使用Jenkins进行持续集成,包括选择流水线item、从Git拉取代码、Sonar扫描、环境部署、自动化测试等步骤。同时,针对一个Jenkins任务需要拉取多个git仓库的情况,提供了两种解决方案:一是通过特定方法配置;二是利用pipeline语法指定文件夹拉取代码。此外,还提及了进阶内容。
摘要由CSDN通过智能技术生成

https://juejin.cn/post/6844903949183483911
1.选择流水线item
在这里插入图片描述

2.步骤:拉取git代码、sonar扫描、部署环境、拉取自动化代码、运行自动化
3.流水线语法如下

def getDay(){
    return new Date().format('yyyyMMdd')
}

pipeline{
    agent{label 'jenkins-slave-172.21.*.*'}
    
    environment{
        currentDay = getDay()
    }
    
    parameters{
        choice(name: 'isRun', choices: ['True','False'], description: '请填写是否运行任务')
        choice(name:'isDeploy', choices: '打包加部署\n打包\n仅部署\n打包加部署加测试', description: '部署配置')
    }
    stages{
        stage('CHECKOUT'){
            steps{
                script{
                    git branch:'nest_oss_eip_v3.0',credentialsId:'*****',url:'git@***'
					HTTPD= sh(  returnStdout: true, script: 'git rev-parse  HEAD')
					echo '--------最新的commit id----------'
					echo "${HTTPD}"
					echo 'sonarqube扫描'
					sh """
						export JAVA_HOME=/usr/java/jdk1.8.0_66
						/home/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonarqube_scanner/bin/sonar-scanner
					"""
                }
            }
        }		
		
        stage('BUILD'){
            parallel{
                stage('BUILD_OSS'){
                    steps{
                        script{
                            if(env.isRun == 'True'){
                                echo '--------开始BUILD OSS----------'
                                sh"""
                                    source /etc/profile
									sh /home/workspace/DW/eip_oss/daily/nest-oss-controller/bin/oss-server.sh stop
                                    mvn clean package install
									echo `pwd`
									rm -rf /home/workspace/DW/eip_oss/daily/*
                                    cp -rf /home/jenkins/workspace/eip_oss_test1/nest-oss-controller/target/nest-oss-controller.zip /home/workspace/DW/eip_oss/daily/
                                """
                                    
                            }
                            else{
                                echo '-----------不需要BUILD OSS----------------'
                            }
                        }
                    }
                }
			}
		}

        
        stage('Deploy'){

            when{
                expression{
                    return(env.isDeploy == '打包加部署'||env.isDeploy == '打包加部署加测试'||env.isDeploy == '仅部署')
                }
            }
            parallel{
               stage('deploy_oss'){
                   agent{label 'jenkins-slave-172.21.1.174'}
                   steps{
                       script{
                           if (env.isRun == 'True'){
                               echo '----------开始Deloy Oss-------------'
                               sh """
									JENKINS_NODE_COOKIE=dontKillMe
									source /etc/profile
									cd /home/workspace/DW/eip_oss/daily/
									unzip nest-oss-controller.zip	
									cd nest-oss-controller/config
									sed -i 's#spring.profiles.active: dev#spring.profiles.active: autotest#g' application.yml
									sh ../bin/oss-server.sh restart
                               """
							   git branch:'V1.3',credentialsId:'*',url:'git@*'
								sh """
								cd /home/jenkins/workspace/eip_oss_test1@2
								python3 run.py eip_wangpan 1041 no
								"""
                           }
                           else{
                               echo '-------------没有Deloy OSS-------------'
                           }
                       }
                   }
               }

            }
        }
    }
    }

4.远程登陆其他机器:
https://juejin.cn/post/6844903949183483911#heading-6

#!/bin/sh
ssh -tt 远程服务器用户名@远程服务器ip  << remotessh
cd /home/tlgc_server_api
/bin/git pull
npm run stop
npm run start
exit  
remotessh 

5.一个Jenkins任务需要拉多个git仓库的项目,放不同的目录下
方法一:
https://blog.csdn.net/a398942089/article/details/99655915?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-12.control&dist_request_id=1331647.21899.16184726555325961&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-12.control

checkout([$class: 'GitSCM', branches: [[name: '*/PMS_DD_4.9']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'be']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'XXXXXXXXXXXXXXXXXXXXXXX', url: 'git@XXXXXXXXXXX']]])
COMMITID_BE= sh(  returnStdout: true, script: 'git rev-parse --short HEAD').trim()
echo '--------最新后端commit id----------'
echo "${COMMITID_BE}"

方法二:
pipeline语法中拉代码前加文件夹名称(该文件夹提前在jenkins机器对应任务的workspace下建好),如图例“EIP_KG_INDUSTRY”
在这里插入图片描述

        stage('CHECKOUT BE'){
   
            steps{
   
                script{
   
                dir ("EIP_KG_INDUSTRY"){
   
                    git branch:"${BRANCH_NAME_BE}",credentialsId:'XXX',url:'git@XXX.git'
					COMMITID_BE= sh(  returnStdout: true, script: 'git rev-parse --short HEAD').trim()
					echo '--------最新后端commit id----------'
					echo "${COMMITID_BE}"

					echo '--------git sum----------------'
                    git_be_loc = sh(returnStdout: true, script: "git log --since='2021-03-30' --no-merges --pretty=tformat: --numstat | gawk '{ loc += \$1 - \$2 ;} END {printf(loc)}'")
                    echo "后端本版本总代码行:${git_be_loc}"

                    echo '--------git sum----------------'
                    git_be_yesterday_loc = sh(returnStdout: true, script: "git log --since=yesterday --no-merges --pretty=tformat: --numstat | gawk '{ loc += \$1 - \$2 ;} END {printf(loc)}'")
                    echo "后端昨日总代码行:${git_be_yesterday_loc}"

                    echo '--------git log----------------'
                    git_be_log = sh(returnStdout: true, script: " git log --since='1 day ago' ")
                    echo "BE yesterday build comments is ${git_be_log}"

                    echo '----------后端代码更新完成---------'
                    }
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值