Jenkins学习

系列文章目录

JavaSE
基础知识、数据类型学习万年历项目代码逻辑训练习题
代码逻辑训练习题方法、数组学习图书管理系统项目
面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习
集合学习IO流、多线程学习仓库管理系统JavaSE项目
员工管理系统、多表查询、反射实现DBHelper学习DML、DDL、数据库对象学习
JavaWeb
网络编程、各种标签、CSS学习ECMAScript、BOM学习DOM、jQuery学习
Servlet、JSP、Cookie、Ajax学习融资管理系统JavaWeb项目
框架
MyBatis框架学习逆向工程、Spring框架IOC、AOP学习SpringMVC框架学习
SpringBoot框架学习招聘网站框架项目Vue介绍、窗体内操作、窗体间操作学习
Vue路由配置、网络请求访问框架项目、element组件介绍学习标准管理系统Vue项目
微服务
Linux安装、Nginx反向代理、负载均衡学习Docker学习Jenkins学习
Nexus学习Spring Security学习RabbitMQ学习
Redis学习MongoDB学习MongoDB学习
Nacos学习Spring Session学习Spring Gateway学习
JSR 303学习OpenFeign学习Hystrix学习


前言

本文我们要讲述:
Jenkins
通过网盘分享的文件:jenkins所需文件
链接: https://pan.baidu.com/s/1djcU9WF6iaGbP_JTZKrU5Q?pwd=m4cz 提取码: m4cz
在下攸攸太上,我在69年6月9日,在电脑上吃了大粪,香的让我跳了起来。


一、Jenkins介绍

1. Jenkins介绍

Jenkins是一个开源的持续集成和持续交付(CI/CD)工具,用于自动化构建、测试和部署软件项目,通过灵活的插件架构和丰富的功能,实现了软件交付流程的自动化。

2. CI/CD介绍

持续集成(Continuous Integration,简称CI)的核心概念是将代码集成到共享存储库中的主干分支中,而不是在开发周期的最后阶段。开发人员在完成代码编写后,将其提交到共享存储库。然后,CI服务器会自动触发构建过程,编译代码并运行自动化测试。如果构建和测试成功,结果将被反馈给开发团队。

持续交付(Continuous Delivery,简称CD)是指将软件的构建、测试和部署过程自动化,以实现快速、可靠地交付软件的能力。它是CI的延伸,旨在进一步优化软件开发和发布的流程。

在持续交付中,开发人员通过版本控制系统将代码提交到共享存储库中。然后,持续交付系统会自动触发构建过程,编译代码、运行自动化测试,并生成可部署的软件包。如果构建和测试成功,系统会自动将软件包部署到指定的环境中,例如测试环境或生产环境。

CI的主要目标是尽早发现和解决问题,以减少集成和发布过程中的风险。通过频繁地集成代码,团队可以更快地发现潜在的问题,并及时修复它们。这有助于提高软件质量、加快开发速度,并促进团队协作。

二、Jenkins安装

1. 上传文件

我们创建/usr/local/jenkins目录(建jenkins文件夹)
在这里插入图片描述

2. 安装Jenkins

cd /usr/local/jenkins
rpm -ivh  jenkins-2.263-1.1.noarch.rpm

3. 修改启动用户为root

vim /etc/sysconfig/jenkins

在文件中将JENKINS_USER=“root”
在这里插入图片描述

4. 配置Java环境

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

在打开的文件中,在光标位置写入如下语句

/usr/local/jdk/jdk1.8.0_231/bin/java

在这里插入图片描述

5. 启动Jenkins

systemctl start jenkins
systemctl status jenkins

在这里插入图片描述
看到actice(running)代表启动成功

6. 检测目录

ll /var/lib/jenkins

在这里插入图片描述
看到很多文件,说明之前的步骤没有错误;
如果没有文件,说明之前的操作有误

7. 登录

通过虚拟机ip:8080访问
进入Jenkins网页,需要输入用户名和密码
用户名为:admin
密码查询语句

cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述
将密码输入密码栏,点击登录后略作等待
会出现插件安装界面,我们点击右上角的X跳过插件安装环节

8. 修改密码

我们点击右上角小人下的Configure,进入设置用户界面,将密码改成自己的密码后save。
后可以根据用户名和密码登录Jenkins
在这里插入图片描述
在这里插入图片描述

9. 安装插件

cd /usr/local/jenkens
tar -zxvf jenkins-plugins.tar.gz
ll plugins/ |wc -l

此为安装插件命令,先进入文件夹,后解压文件,最后查看解压后文件有多少个
在这里插入图片描述

10. 拷贝插件

cp -a plugins/* /var/lib/jenkins/plugins/
ll /var/lib/jenkins/plugins/ |wc -l

将下载好的插件拷贝到指定文件夹下,查看该目录下的文件个数,应该是191,我之后还做了其他操作,所以多了几个
在这里插入图片描述

11. 重启Jenkins

/etc/init.d/jenkins restart

刷新网页后再次登录,可以到Dashboard下的ManageJenkins

三、Git设置

1. 上传文件

将此文件放入/usr/local/git中(新建git文件夹)
在这里插入图片描述

2. 解压压缩包

cd /usr/local/git
tar -zxvf git-2.33.0.tar.gz

3. 安装所需依赖

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

输入y

4. 编译

cd git-2.33.0
make prefix=/usr/local/git all

执行编译命令,需要等很长时间

5. 安装

make prefix=/usr/local/git install

6. 修改环境变量

vim /etc/profile

打开配置文件
将下面的代码复制到配置文件中

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

在这里插入图片描述

7. 检查git

git --version

在这里插入图片描述

8. 在Jenkins添加git配置

在首页中打开Credentials
在这里插入图片描述
点击下方(global)
在这里插入图片描述
点击Add Credentials
在这里插入图片描述
写入用户名与密码后,点击ok
在这里插入图片描述
点击Update
在这里插入图片描述
可以看到ID已经自动生成了
在这里插入图片描述

四、Git流水线

1. 创建流水线

首页进入New Item
在这里插入图片描述
输入项目名称并选择Pipeline后ok
在这里插入图片描述
Description写入项目描述
在这里插入图片描述
滚到最底部点击在这里插入图片描述
1、先在Sample Step中选择git:Git
2、创建一个将百度网盘中的240919_DemoNginx项目传到Git上,复制他的地址
https://gitee.com/jinjingyuan/240921foureight.git
3、Branch选择master
4、Credentials选择刚刚创建的用户
5、点击Generate Pipeline Script按钮
在这里插入图片描述
复制生成的流水线代码

git credentialsId: 'da6c7934-bfce-4e17-adb9-ec41d8c0fd35', url: 'https://gitee.com/jinjingyuan/240921foureight.git'

将复制的流水线代码用node包裹,放在Pipeline的Script中
在这里插入图片描述
以上步骤完毕后,点击Save

2. 测试流水线

在项目中点击Build Now
在这里插入图片描述
在运行的流水线中点击Console Output
在这里插入图片描述
最后会说SUCCESS
在这里插入图片描述

五、Maven配置

1. 上传文件

创建/usr/local/maven文件夹
放入maven压缩包
在这里插入图片描述

2. 解压文件

cd /usr/local/maven
tar -zxvf apache-maven-3.3.9-bin.tar.gz

在这里插入图片描述

3. 配置环境变量

vim /etc/profile

加入如下代码

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

在这里插入图片描述

4. 加载环境变量

source /etc/profile

在这里插入图片描述

5. 测试Maven安装成功与否

mvn -v

在这里插入图片描述

6. 替换Maven源

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

进入settings.xml文件,找到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>

在这里插入图片描述
后创建/usr/local/maven/apache-maven-3.3.9/repository文件夹

六、Maven流水线

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

1. 配置Maven环境变量

Jenkins首页点击Manage Jenkins
在这里插入图片描述
点击Configure System
在这里插入图片描述
在Global properties下Add三个环境变量
MAVEN HOME
/usr/local/maven/apache-maven-3.3.9
JAVA HOME
/usr/local/idk/jdk1.8.0 231
PATH+EXTRA
$MAVEN HOME/bin
在这里插入图片描述

2. 第一段流水线:Git拉去代码

我们在Build History里找到#1,在#1下拉框找到Replay
在这里插入图片描述
在Main Script中,用

stage('pull code'){     }

包裹原来的第二行,后Run
在这里插入图片描述
结果:
在这里插入图片描述
在这里插入图片描述

3. 第二段流水线:把下载的项目打包成.jar文件

先去终端运行

/etc/init.d/jenkins restart

类似第一条流水线,我们点击#2的Replay
在这里插入图片描述
点击Console Output
在这里插入图片描述
复制这部分代码**/var/lib/jenkins/workspace/demo0921**
在这里插入图片描述
将Main Script改成如下形式,/var/lib/jenkins/workspace/demo0921放在dir的’'内,Run

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

在这里插入图片描述
检验:
cd /var/lib/jenkins/workspace/demo0921
ll
cd …
ll
四条语句分别执行
在这里插入图片描述

4. 第三条流水线:将.jar文件做成Docker镜像

cd demo0921
mvn clean install

在这里插入图片描述

ll
cd target
ll
java -jar 240919_DemoNginx-1.0-SNAPSHOT.jar

在这里插入图片描述
访问页面显示admin:8888即代表操作成功
在这里插入图片描述
执行如下命令

cd /var/lib/jenkins/workspace/demo0921
rm -rf target
/etc/init.d/jenkins restart
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
/etc/init.d/jenkins restart

Replay的Main Script中

checkout=0
node {
    stage('pull code'){
       git credentialsId: '0d34702d-9692-4d06-90f9-821e743c9bc7', url: 'https://gitee.com/quanmingzhe/240921maven.git'
    }
	stage('compile'){
        dir('/var/lib/jenkins/workspace/demo0921'){   
            sh 'mvn clean install'
        }
    }
    stage('make docker container'){
        dir('/var/lib/jenkins/workspace/demo0921/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD 240919_DemoNginx-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 demo0921 ."    
        }
    }
}

在这里插入图片描述

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

checkout=0
node {
    stage('pull code'){
       git credentialsId: '0d34702d-9692-4d06-90f9-821e743c9bc7', url: 'https://gitee.com/quanmingzhe/240921maven.git'
    }
	stage('compile'){
        dir('/var/lib/jenkins/workspace/demo0921'){   
            sh 'mvn clean install'
        }
    }
    stage('make docker container'){
        dir('/var/lib/jenkins/workspace/demo0921/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD 240919_DemoNginx-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 demo0921 ."    
        }
    }
    stage('start'){
        sh 'docker run --name d8 -p 8989:8888 -d demo0921'
    }
}

在这里插入图片描述

6. 第五、六段流水线:删除已存在的容器和镜像

checkout=0
node {
    stage('pull code'){
       git credentialsId: '0d34702d-9692-4d06-90f9-821e743c9bc7', url: 'https://gitee.com/quanmingzhe/240921maven.git'
    }
    stage('check docker container'){
       script{
          checkout=sh(
                script: 'docker ps | grep d1',
                returnStatus: true
          )
      }	
}
	stage('compile'){
        dir('/var/lib/jenkins/workspace/demo0921'){   
            sh 'mvn clean install'
        }
    }
        stage('remove docker container'){
        if(checkout==0){
            sh 'docker stop d8'
            sh 'docker rm d8'
            sh 'docker rmi demo0921'
        }
    }
    
    stage('make docker container'){
        dir('/var/lib/jenkins/workspace/dasf/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD 240919_DemoNginx-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 dasf ."    
        }
    }
    stage('start'){
        sh 'docker run --name d8 -p 8989:8888 -d demo0921'
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
jenkins所需文件


总结

本文讲述了:
Jenkins:自动化构建、测试和部署软件项目
jenkins所需文件
我还在回味大粪圆圆的滋味,让我想起了之前吃过的7坨爱因斯坦的,他的那个颜色非常鲜艳,应该是1001年2月30日他吃了蛋糕的缘故。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攸攸太上

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值