jenkins全网最详细教程

打印 上一主题 下一主题

主题 889|帖子 889|积分 2671

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

1、上传文件

我们采用安装包的方式安装。
统一安装 jenkins-2.263-1.1.noarch.rpm

D
2、安装Jenkins


  1. rpm -ivh  jenkins-2.263-1.1.noarch.rpm
复制代码
【标题办理:】

3、修改启动用户为root

  1. vim /etc/sysconfig/jenkins
复制代码

4、启动jenkins

  1. systemctl start jenkins
  2. systemctl status jenkins
复制代码

启动会报错
5、报错,查抄配置文件java的配置

根据报错信息提示:实验下令 systemctl status jenkins

由此推断没找到java情况,根据提示修改Jenkins的配置文件
  1. vim /etc/rc.d/init.d/jenkins
复制代码

  1. ##再次启动jenkins
  2. systemctl start jenkins
  3. ##查看jenkins的状态
  4. systemctl status jenkins
复制代码

6、启动前检察该目录是空的,启动后会生成相应的文件【用来检测前面的操纵是否精确】

  1. ll /var/lib/jenkins
复制代码

【办理标题:】假如输入上面下令后,发现仍旧没有这些文件,关闭虚拟机,重新在登录进来就可以了。
7、登录

访问首页http://虚拟机ip:8080/
![外链图片转存失败,源站大概有防盗链机制,建议将图片生存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=images%2F008.png&pos_id=img-5HKmL7p8-1736992001660

  1. #根据上面红色地址连接,查找对应的登录密码
  2. cat /var/lib/jenkins/secrets/initialAdminPassword
复制代码

8、跳过插件安装



9、修改密码


10、安装插件

1、检察已安装插件


2、解压文件


压缩包内共有191个插件。
  1. #执行第一个命令:
  2. tar -zxvf jenkins-plugins.tar.gz
  3. #查看解压后一共有多少个文件:
  4. ll plugins/ |wc -l
复制代码

3、拷贝插件

验证拷贝后共有191个插件。
  1. #拷贝文件到/var/lib/jenkins/plugins/cp -a plugins/* /var/lib/jenkins/plugins/#检察该目录下一共有多少个文件:ll /var/lib/jenkins
  2. /plugins/ |wc -l
复制代码
4、重启Jenkins

  1. /etc/init.d/jenkins restart
复制代码

2、Git设置

1、上传文件

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

2、解压压缩包

  1. tar -zxvf git-2.33.0.tar.gz
复制代码

3、安装所需依赖

  1. yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
复制代码

【输入 y 】
【报错】

实验“安装所需依赖”的下令时,报错!报错信息如下:

4、编译

进入解压后的目录,实验make下令。
  1. make prefix=/usr/local/git all
复制代码

5、安装

  1. make prefix=/usr/local/git install
复制代码

6、修改情况变量

  1. #打开配置文件
  2. vim /etc/profile
  3. (将下面一行的代码,复制粘贴到上面的配置文件里)
  4. #set git
  5. export PATH=$PATH:/usr/local/git/bin
  6. #加载一下配置文件
  7. source /etc/profile
复制代码

7、查抄git

  1. git --version
复制代码

8、在Jenkins添加git配置



3、写git流水线

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

_+

  1. #上面的操作生成出来的代码:
  2. node {
  3.     git branch: 'develop', credentialsId: '9a19cd80-bb02-4e8b-b126-f023bdebea7b', url: 'https://gitee.com/wztsl/dz12-demo01.git'
  4. }
复制代码


4、maven配置

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

1、上传压缩包

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

2、解压

  1. tar -zxvf apache-maven-3.3.9-bin.tar.gz
复制代码

3、配置情况变量


  1. #第一个命令,编辑/etc/profile
  2. vim /etc/profile
  3. #set maven
  4. MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9
  5. PATH=${MAVEN_HOME}/bin:${PATH}
  6. export PATH
复制代码
4、加载情况变量

  1. source /etc/profile
复制代码

5、测试maven安装是否成功

  1. mvn -v
复制代码

6、更换maven源

  1. #打开setting文件,修改中央仓库为阿里的,不然速度太慢
  2. vim /usr/local/maven/apache-maven-3.3.9/conf/settings.xml
  3. # 找到<mirrors></mirrors>标签对,添加以下内容
  4. <mirror>
  5.    <id>alimaven</id>
  6.     <name>aliyun maven</name>
  7.     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  8.     <mirrorOf>central</mirrorOf>
  9.    <releases>
  10.       <enabled>true</enabled>
  11.         <updatePolicy>always</updatePolicy>
  12.     </releases>
  13.     <snapshots>
  14.       <enabled>true</enabled>
  15.         <updatePolicy>always</updatePolicy>
  16.     </snapshots>
  17. </mirror>
  18. # 指定下载源位置
  19. <localRepository>/usr/local/maven/apache-maven-3.3.9/repository</localRepository>
复制代码
【注意:需要自己创建/usr/local/maven/apache-maven-3.3.9/repository目录】

2、Jenkins配置Maven



配置3个情况变量:JAVA_HOME、MAVEN_HOME
PATH+EXTRA $MAVEN_HOME/bin

5、写maven流水线

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


  • 通过git拉取代码
  • 用Dockerfile查抄是否存在容器和镜像,假如存在则删除
  • 编译,打包
  • 创建docker镜像
  • 启动docker容器
    第一段流水线:git拉取代码
【一步一步测试流水线代码:】

  1. node {
  2.     stage('pull code'){
  3.        git credentialsId: '8bea9def-ba4d-433c-a4b3-14c26be75f1b', url: 'https://gitee.com/mayang3366/jenkins-demo1.git'
  4.     }
  5. }
复制代码
【然后一步一步run测试结果:】

2.第二段流水线:将下载的项目进行打包

  1. node {
  2.         stage('compile'){
  3. #jenkinsDemo1的名字一定要是虚拟机里 /var/lib/jenkins/workspace 路径下存在的。该流水线的目的在于打包该项目。
  4.         dir('/var/lib/jenkins/workspace/jenkinsDemo1'){   
  5.             sh 'mvn clean install'
  6.         }
  7.     }
  8. }
复制代码


【以上操纵,完成第二段流水线就可以实现】
【注意:停掉服务后,删除掉workspace目录下的该项目,希望通过流水线来实现结果。】

【流水线代码如下:】
  1. checkout=0
  2. node {
  3.     stage('pull code'){
  4.        git credentialsId: '8bea9def-ba4d-433c-a4b3-14c26be75f1b', url: 'https://gitee.com/mayang3366/jenkins-demo1.git'
  5.     }
  6.         stage('compile'){
  7.         dir('/var/lib/jenkins/workspace/jenkinsDemo1'){   
  8.             sh 'mvn clean install'
  9.         }
  10.     }
  11.     stage('make docker container'){
  12.         dir('/var/lib/jenkins/workspace/jenkinsDemo1/target'){
  13.             sh "echo FROM openjdk:8 > Dockerfile"
  14.             sh "echo ADD testNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
  15.             sh "echo RUN bash -c '"'touch /app.jar'"' >> Dockerfile"
  16.             sh "echo ENTRYPOINT ['"'java'"','"'-jar'"','"'/app.jar'"'] >> Dockerfile"
  17.             sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
  18.             sh "docker build -t jenkinsdemo1 ."   
  19.         }
  20.     }
  21. }
  22. ## 注意注意:docker build -t jenkinsdemo1 . 命令中的镜像名不能有大写字母。
复制代码

  1. #创建容器并运行,d1是容器名,
  2. docker run --name d1 -p 8888:8888 -d jenkinsdemo1
复制代码

4.第四段流水线:通过镜像创建容器并启动

  1. checkout=0
  2. node {
  3.     stage('pull code'){
  4.        git credentialsId: '8bea9def-ba4d-433c-a4b3-14c26be75f1b', url: 'https://gitee.com/mayang3366/jenkins-demo1.git'
  5.     }
  6.     stage('check docker container'){
  7.         if(fileExists('/var/lib/jenkins/workspace/jenkinsDemo1/target/Dockerfile')){
  8.             sh 'docker stop d1'
  9.             sh 'docker rm d1'
  10.             sh 'docker rmi jenkinsdemo1'
  11.         }
  12.     }
  13.         stage('compile'){
  14.         dir('/var/lib/jenkins/workspace/jenkinsDemo1'){   
  15.             sh 'mvn clean install'
  16.         }
  17.     }
  18.     stage('make docker container'){
  19.         dir('/var/lib/jenkins/workspace/jenkinsDemo1/target'){
  20.             sh "echo FROM openjdk:8 > Dockerfile"
  21.             sh "echo ADD testNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
  22.             sh "echo RUN bash -c '"'touch /app.jar'"' >> Dockerfile"
  23.             sh "echo ENTRYPOINT ['"'java'"','"'-jar'"','"'/app.jar'"'] >> Dockerfile"
  24.             sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
  25.             sh "docker build -t jenkinsdemo1 ."   
  26.         }
  27.     }
  28.     stage('start'){
  29.         sh 'docker run --name d1 -p 8888:8888 -d jenkinsdemo1'
  30.     }
  31. }
  32. 注意:/var/lib/jenkins/workspace/jenkinsDemo1    “jenkinsDemo1”是项目名,可以有大写字母
  33.      docker rmi jenkinsdemo1   jenkinsdemo1 是镜像名,不可以有大写字母
复制代码

node:节点,Jenkins支持分布式,可以给节点命名,master是主节点,不要修改。
stage:声明步骤
fileExists:判断文件是否存在
dir:进入某个目录
5.第五段流水线:删除已存在的容器和镜像

checkout是用于判断是否存在镜像和容器的标识,上面的流水线中并未操纵它,不声明也不会报错。但是,假如在mvn install时报错,会导致流水线不继续运行,就不会生成Dockerfile文件,那么再次实验流水线时,照旧会由于已经有了d1这个容器而启动报错。
研究用什么办法办理这个标题?
1.手动操纵办理方式

2.流水线代码办理方式
  1. checkout=0
  2. node {
  3.     stage('pull code'){
  4.        git credentialsId: '8bea9def-ba4d-433c-a4b3-14c26be75f1b', url: 'https://gitee.com/mayang3366/jenkins-demo1.git'
  5.     }
  6.     stage('check docker container'){
  7.        script{
  8.           checkout=sh(
  9.                 script: 'docker ps | grep d1',
  10.                 returnStatus: true
  11.           )
  12.       }       
  13.     }
  14.     stage('compile'){
  15.         dir('/var/lib/jenkins/workspace/jenkinsDemo1'){   
  16.             sh 'mvn clean install'
  17.         }
  18.     }
  19.     stage('remove docker container'){
  20.         if(checkout==0){
  21.             sh 'docker stop d1'
  22.             sh 'docker rm d1'
  23.             sh 'docker rmi jenkinsdemo1'
  24.         }
  25.     }
  26.     stage('make docker container'){
  27.         dir('/var/lib/jenkins/workspace/jenkinsDemo1/target'){
  28.             sh "echo FROM openjdk:8 > Dockerfile"
  29.             sh "echo ADD testNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
  30.             sh "echo RUN bash -c '"'touch /app.jar'"' >> Dockerfile"
  31.             sh "echo ENTRYPOINT ['"'java'"','"'-jar'"','"'/app.jar'"'] >> Dockerfile"
  32.             sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
  33.             sh "docker build -t jenkinsdemo1 ."   
  34.         }
  35.     }
  36.     stage('start'){
  37.         sh 'docker run --name d1 -p 8888:8888 -d jenkinsdemo1'
  38.     }
  39. }
复制代码
说明:
git拉起代码:第一步
打包代码:第三步
把打包后的代码做成镜像:第五步
通过镜像创建容器并运行:第六步
查抄是否有容器和镜像存在:第二步
删除已存在的容器和镜像:第四步
  1. dir('/var/lib/jenkins/workspace/jenkinsDemo1/target'){
  2.         sh "echo FROM openjdk:8 > Dockerfile"
  3.         sh "echo ADD testNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
  4.         sh "echo RUN bash -c '"'touch /app.jar'"' >> Dockerfile"
  5.         sh "echo ENTRYPOINT ['"'java'"','"'-jar'"','"'/app.jar'"'] >> Dockerfile"
  6.         sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
  7.         sh "docker build -t jenkinsdemo1 ."   
  8.     }
  9. }
  10. stage('start'){
  11.     sh 'docker run --name d1 -p 8888:8888 -d jenkinsdemo1'
  12. }
复制代码
}
  1. 说明:
  2. git拉起代码:第一步
  3. 打包代码:第三步
  4. 把打包后的代码做成镜像:第五步
  5. 通过镜像创建容器并运行:第六步
  6. 检查是否有容器和镜像存在:第二步
  7. 删除已存在的容器和镜像:第四步
  8. ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2448d26033b64c53bebd19d83288ba38.png)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表