目录

1、Jenkins

1、什么是Jenkins

2、Jenkins的作用

3、什么是CI/CD

4、Jenkins的应用场景

5、Jenkins特性

6、安装Jenkins

1、上传文件

2、安装Jenkins

3、修改启动用户为root

4、启动jenkins

5、报错,检查配置文件java的配置

6、启动前查看该目录是空的,启动后会生成相应的文件

7、登录

8、跳过插件安装

9、修改密码

10、安装插件

2、Git设置

1、上传文件

2、解压压缩包

3、安装所需依赖

4、编译

5、安装

6、修改环境变量

7、检查git

8、在Jenkins添加git配置

3、写git流水线

4、maven配置

1、安装

2、Jenkins配置Maven

5、写maven流水线

1.第一段流水线:

2.第二段流水线:

3.第三段流水线:

大整合【直接操作即可】:


1、Jenkins

1、什么是Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

2、Jenkins的作用

  • 持续的软件版本发布/测试项目。

  • 监控外部调用执行的工作。(Jenkins有很多的插件,可以用于监控)

3、什么是CI/CD

CI/CD 是持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)与持续部署(Continuous Deployment,CD)的简称,注意CD对应了两个名词。

CI/CD是实现敏捷开发和Devops理念的一种方法,具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试,到交付和部署)。这些关联的事务通常被统称为CI/CD 管道(Pipeline),由开发(RD)、测试(QA)、运维(OP)团队以敏捷方式协同支持。

持续集成:重点是将开发者的工作集中到代码仓库,一般情况每天都会有更新,持续集成可以更快的进行集成,更快的得到响应。

持续部署:是一种更高程度的自动化,可以根据需求进行持续的自动的的部署项目。

4、Jenkins的应用场景

适用于大型项目,且更新比较频繁的。微服务架构的项目多数都会用Jenkins,单体项目相对少很多。

5、Jenkins特性

  • 易于安装。有多种安装方式,可以在线安装,也可以下载安装包安装,也可以运行war包。

  • 配置简单。Jenkins提供web端的配置方式,安装成功后,所有的配置都可以在web端完成。

  • 集成了Email等工具,可以在集成或部署时通知工作人员。

  • 有丰富的插件库。处理已有的插件,也可以自己开发插件。

  • Jenkins支持分布式。

6、安装Jenkins

这步可有可无

96774a5c0e0d4e61a38aa1594d980a5e.png

1、上传文件

我们采用安装包的方式安装。

统一安装 jenkins-2.263-1.1.noarch.rpm

创建当前目录

f7b852a69adf41478700e93f6669bb4f.png将两个文件传入到当前目录中

ad0367d0f45341089ab0089e930b8557.png

2、安装Jenkins

fbe8c549c716414e8596bfe5ba280ddf.png

rpm -ivh  jenkins-2.263-1.1.noarch.rpm

【问题解决:】

41b934caf6d84cc785870ac613b34994.png

3、修改启动用户为root

vim /etc/sysconfig/jenkins

点击i来进行编辑   

进入页面后找不到按↓来查找

  编辑结束后Esc退出   :wq进行保存退出

13f5415890a04abca6e04c425eb431b2.png

4、启动jenkins

systemctl start jenkins       进行启动
systemctl status jenkins    查看状态

96de13419f8f4e88bad860008cbbd65a.png启动会报错

5、报错,检查配置文件java的配置

根据报错信息提示:执行命令 systemctl status jenkins查看状态

d8a3971249524128ad39328ec1f0b11e.png由此推断没找到java环境,根据提示修改Jenkins的配置文件

vim /etc/rc.d/init.d/jenkins

找到自己的jdk位置进入到jdk的bin路径复制当前路径

/usr/local/jdk/jdk1.8.0_231/bin后面加上/java      添加到下图红色位置

ef5387bdd1d34d97807c90700f34b75e.png

5c15d31e76134977acd0b8949cdb6b2e.png

再次进行启动和查看状态

systemctl start jenkins       进行启动
systemctl status jenkins    查看状态

208d5267f5cd484194d8a66a337f32b2.png

6、启动前查看该目录是空的,启动后会生成相应的文件

ll /var/lib/jenkins

ca437adc2d6a4f7f97fcb09da630e24e.png

【解决问题:】如果输入上面命令后,发现仍然没有这些文件,关闭虚拟机,重新在登录进来就可以了。

7、登录

访问首页 http://192.168.153.128:8080/

自身ip+端口号

336ce5a6726c4d92b4356bceba04386c.png

#根据上面红色地址连接,查找对应的登录密码

cat /var/lib/jenkins/secrets/initialAdminPassword

f20d3682ce0b4a3793f3774b35f71f7b.png

8、跳过插件安装

9aecf97bac004ea4aa7ff675e990ce30.pnge070efa239974afda98832dcc429e628.png

9、修改密码

769b0a3e414240ae98b08451451570f2.png

密码统一修改成123456

默认用户名是:admin

ca9940fb025e4289b991f6e7d11e5eaa.png

78d14f26cc2d499d93606277c627bc45.png

10、安装插件

1、查看已安装插件

f7151a57585b4b20a941d454f98820af.png

【目前一个插件都没有!】

e955db5c18ba4acf8a318575fceb84a5.png

2、解压文件

进入到当前目录下

ll进行查看   执行后面解压命令后查看才有

48e0fa6117fe40f592d00baac23a9fc6.png

#执行第一个命令:

tar -zxvf jenkins-plugins.tar.gz

#查看解压后一共有多少个文件:

ll plugins/ |wc -l

9c302559787c4ec98cdef96771a7c2ef.png

3、拷贝插件

验证拷贝后共有191个插件。

#拷贝文件到/var/lib/jenkins/plugins/

cp -a plugins/* /var/lib/jenkins/plugins/

#查看该目录下一共有多少个文件:

ll /var/lib/jenkins/plugins/ |wc -l

4、重启Jenkins

/etc/init.d/jenkins restart

8317f9a981df412ebfc95a3c6bb52c8c.png

【刷新页面:再次进行登录!admin 123456】

1f5f576abb5e41c3bbfa52b2323c6424.png

2、Git设置

1、上传文件

将git压缩包上传到服务器上,git-2.33.0.tar.gz

创建当前目录

f7b852a69adf41478700e93f6669bb4f.pngc6a4230fa7a846cc8cd4d646d326e039.png

2、解压压缩包

进入到当前创建的路径下

cd /usr/local/git


解压

tar -zxvf git-2.33.0.tar.gz

cba3c890850e40f6afc34db2df20cf4c.png

3、安装所需依赖

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

1c9035a57fdb4b019dd27acddbc875ff.png

【输入 y 】

4f4c390870af4854a16aa8934ca2d794.png

4、编译

进入当前目录

cd git-2.33.0


aa2d51f939874d0185b895fd71f8a449.png

进入解压后的目录,执行make命令。

make prefix=/usr/local/git all

f213eae5cb5c430394d41fb8244ac245.png

5、安装

make prefix=/usr/local/git install

a2736cf293e24db2a7e6bd8fe903eff2.png

6、修改环境变量

#打开配置文件

vim /etc/profile

(将下面一行的代码,复制粘贴到上面的配置文件里)

【注意这是配置文件中的】

#set git
export PATH=$PATH:/usr/local/git/bin

#加载一下配置文件

source /etc/profile

de5603967ba440dcb60007986cc54769.png

7、检查git

git --version

dd62878e26c743fb8c1ee27c21c9c307.png

8、在Jenkins添加git配置

【第一步:】 25533d64abef42fb8018d805f7f8697e.png

【第二步:】

c4873bb2371149c8951c88ea8b43b691.png

【第三步:设置git账号和密码 】

590b980b41bb4b6c8c5c3c75f7dd2ac4.png

【第四步:设置完成】

3bba803924394875a0382cc6bfbb6cb1.png

【第五步:】

3dda667777e5451299265beb812bad6b.png

【第六步:自动帮忙生成id】

eded25f838864e11854fda8cd0fcd2ae.png

3、写git流水线

初识流水线。从git上拉取代码到虚拟机。

【第一步:创建一个新的流水线】

c609313e64a74315a09147647f75fc5c.png

【第二步:定义名字】

27c4217c96f049eab7e15dbd04cf2b2e.png

点击下发ok!

【第三步:添加代码描述】

8f692e31066b485e8c78318e5af7372e.png

【第四步:编写流水线代码,如果忘记了,参照第五步】

4d7b73a0a4f74d58953a606107346147.png

【第五步:自动生成流水线代码】

9d6db346fd034f4d900952ee87d7df67.png

【第六步:保存流水线代码】

node{

             上面复制的网址粘贴进来

}

324e6c7fc5a541f88cf1d53672d4f3ae.png

【第七步:测试流水线代码是否有错】

点击左侧Build Now

b0be55fa2fcb42e8af25dd3dfabe712d.png

【第八步:查看代码】

点击

d3be83fdbbc34f58a934de25f5facc74.png

cf0f266b521e440a922e64721e1cb9d2.png

4、maven配置

【配置maven,把刚才下载的项目代码,打包发布出来,在宿主机上访问,就算成功。】

1、安装

1、上传压缩包

上传文件apache-maven-3.3.9-bin.tar.gz

f7b852a69adf41478700e93f6669bb4f.png0a181052be54419cbd086f1de99f2e3e.png

2、解压

进入当前目录

cd /usr/local/maven

解压
 

tar -zxvf apache-maven-3.3.9-bin.tar.gz

e8428108f29143d0840b98a49bd16cf9.png

3、配置环境变量

#第一个命令,编辑/etc/profile

vim /etc/profile

下方代码放到环境变量中

【注意这是配置文件中的】

#set maven
MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9
PATH=${MAVEN_HOME}/bin:${PATH}
export PATH

94fd90b27b13466f93641c278b464b85.png

4、加载环境变量

source /etc/profile

5、测试maven安装是否成功

mvn -v

aa69760e5313414bb3eb580d07cc97cf.png

6、替换maven源

#打开setting文件,修改中央仓库为阿里的,不然速度太慢

vim /usr/local/maven/apache-maven-3.3.9/conf/settings.xml

【注意这是配置文件中的】

# 找到<mirrors></mirrors>标签对,添加以下内容
<mirror>
   <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
   <releases>
      <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </releases>
    <snapshots>
      <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </snapshots>
</mirror>

# 指定下载源位置
<localRepository>/usr/local/maven/apache-maven-3.3.9/repository</localRepository>

9ec1b3cc4eb24391b66246af925b3faf.png

21c0e32dda304b1da203b81137de1849.png

【注意:需要自己创建/usr/local/maven/apache-maven-3.3.9/repository目录】

714ca0caf4a74174a36e49feee64dc62.png

2、Jenkins配置Maven

【第一步:】

4ede8d1c98184ca7a6bd4c7bd461fa0f.png

【第二步:】

5939dc97943a410293ddd349ff398c46.png

【第三步:点击三下Add】

553e7c3af3a347adb61e3207c9272f31.png

【第四步:配置环境变量】

配置3个环境变量:JAVA_HOME、MAVEN_HOME

PATH+EXTRA $MAVEN_HOME/bin

ccbe1c9a38c4455b90345fd55a397369.png

cc02dd1397e04315906644c5f65fa471.png

5、写maven流水线

目的:拉取最新代码,将代码打包好,做成镜像,上传到docker中,然后启动容器,外部可以访问。

  • 通过git拉取代码

  • 用Dockerfile检查是否存在容器和镜像,如果存在则删除

  • 编译

  • 创建docker镜像

  • 启动docker容器

    1.第一段流水线:

【一步一步测试流水线代码:】

5e7fb1666b4c4b68b34f6fa008d9a822.png

刚进来时

45a4f130512d41e4be03714a526791a2.png

node {
    stage('pull code'){
git credentialsId: '0f52bea8-52b4-4b55-ac60-43b4ab9569b7', url: 'https://gitee.com/gbgbkkd/jenkins-demo1.git'
    }
}

修改后

f16e06e4d67f4e0383c82958e01b9dae.png

点击run

72003f7ba3ad4d1ebc8ef4e2343a8a94.png

be0948568d624756861fbe1d931c8fdb.png

2.第二段流水线:

node {
     stage('compile'){
        dir('/var/lib/jenkins/workspace/fff'){
            sh 'mvn clean install'
        }
    }
}


5dd5fbe771164730b977a93ee77c0616.png

如果报这个错误           

a505a65ea2b54ae2b67083d83cc1fdd4.png

解决办法

把 sh 'mvn clean install'语句删除

3.第三段流水线:

12c33a0772a54533834c9e64e038e88a.png

f1099e94507a47518c41e13803c5c192.png

585329c80f4648cda87e34a3d6d0f1a3.png

checkout=0
node{
     stage('pull code'){
    git credentialsId: '0f52bea8-52b4-4b55-ac60-43b4ab9569b7', url: 'https://gitee.com/gbgbkkd/gb.git'
     }
       stage('compile'){
        dir('/var/lib/jenkins/workspace/gb'){
          
        }
    }
      stage('make docker container'){
        dir('/var/lib/jenkins/workspace/gb/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD nginxtest-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
            sh "echo RUN bash -c '\"'touch /app.jar'\"' >> Dockerfile"
            sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"
            sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
            sh "docker build -t jenkinsdemo1 ."    
        }
    }
}
## 注意注意:docker build -t jenkinsdemo1 . 命令中的镜像名不能有大写字母。

f97ab4f1de4b4962b651298f97e11571.png

d20e98860d79458b9baf0cc79980993a.png

8d79631742dc49329d8154f7b52fd22b.png#创建容器并运行,d1是容器名,
docker run --name d1 -p 8866:8866 -d jenkinsdemo1

90631107defa491ea4ce70014fa5b603.png

大整合【直接操作即可】:

checkout=0
node {
    #第一步:填入信息自动生成拉取git的代码
    stage('pull code'){
       git credentialsId: '0f52bea8-52b4-4b55-ac60-43b4ab9569b7', url: 'https://gitee.com/gbgbkkd/gb.git'
    }
    
    stage('check docker container'){
       script{
          checkout=sh(
                script: 'docker ps | grep d1',
                returnStatus: true
          )
      }	
    }
       #第三步:修改gb值为自己的项目名。
    stage('compile'){
        dir('/var/lib/jenkins/workspace/gb'){   
            sh 'mvn clean install'  #出错后此处删除     
        }
    }
      #第四步:修改gb值为自己的项目名。
    stage('remove docker container'){
        if(checkout==0){
            sh 'docker stop d1'
            sh 'docker rm d1'
            sh 'docker rmi jenkinsdemo1'
        }
    }
        #第五步:修改gb值为自己的项目名。
   #同时修改nginxtest-1.0-SNAPSHOT.jar为本地打包后的打包项目名

    stage('make docker container'){
        dir('/var/lib/jenkins/workspace/gb/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD nginxtest-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
            sh "echo RUN bash -c '\"'touch /app.jar'\"' >> Dockerfile"
            sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"
            sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
            sh "docker build -t jenkinsdemo1 ."    
        }
    }
     #第六步:修改端口号
    stage('start'){
        sh 'docker run --name d1 -p 8866:8866 -d jenkinsdemo1'
    }
}

不删除

另一种解决方案治本

找到当前路径将mvn上面替换

说明:

git拉起代码:第一步

打包代码:第三步

把打包后的代码做成镜像:第五步

通过镜像创建容器并运行:第六步

检查是否有容器和镜像存在:第二步

删除已存在的容器和镜像:第四步

a660fa29f8344487a10dc7a50bdb2686.png

更多推荐