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
创建当前目录
将两个文件传入到当前目录中
2、安装Jenkins
rpm -ivh jenkins-2.263-1.1.noarch.rpm
【问题解决:】
3、修改启动用户为root
vim /etc/sysconfig/jenkins
点击i来进行编辑
进入页面后找不到按↓来查找
编辑结束后Esc退出 :wq进行保存退出
4、启动jenkins
systemctl start jenkins 进行启动
systemctl status jenkins 查看状态
启动会报错
5、报错,检查配置文件java的配置
根据报错信息提示:执行命令 systemctl status jenkins查看状态
由此推断没找到java环境,根据提示修改Jenkins的配置文件
vim /etc/rc.d/init.d/jenkins
找到自己的jdk位置进入到jdk的bin路径复制当前路径
/usr/local/jdk/jdk1.8.0_231/bin后面加上/java 添加到下图红色位置
再次进行启动和查看状态
systemctl start jenkins 进行启动
systemctl status jenkins 查看状态
6、启动前查看该目录是空的,启动后会生成相应的文件
ll /var/lib/jenkins
【解决问题:】如果输入上面命令后,发现仍然没有这些文件,关闭虚拟机,重新在登录进来就可以了。
7、登录
访问首页 http://192.168.153.128:8080/
自身ip+端口号
#根据上面红色地址连接,查找对应的登录密码
cat /var/lib/jenkins/secrets/initialAdminPassword
8、跳过插件安装
9、修改密码
密码统一修改成123456
默认用户名是:admin
10、安装插件
1、查看已安装插件
【目前一个插件都没有!】
2、解压文件
进入到当前目录下
ll进行查看 执行后面解压命令后查看才有
#执行第一个命令:
tar -zxvf jenkins-plugins.tar.gz
#查看解压后一共有多少个文件:
ll plugins/ |wc -l
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
【刷新页面:再次进行登录!admin 123456】
2、Git设置
1、上传文件
将git压缩包上传到服务器上,git-2.33.0.tar.gz
创建当前目录
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命令。
make prefix=/usr/local/git all
5、安装
make prefix=/usr/local/git install
6、修改环境变量
#打开配置文件
vim /etc/profile
(将下面一行的代码,复制粘贴到上面的配置文件里)
【注意这是配置文件中的】
#set git
export PATH=$PATH:/usr/local/git/bin
#加载一下配置文件
source /etc/profile
7、检查git
git --version
8、在Jenkins添加git配置
【第一步:】
【第二步:】
【第三步:设置git账号和密码 】
【第四步:设置完成】
【第五步:】
【第六步:自动帮忙生成id】
3、写git流水线
初识流水线。从git上拉取代码到虚拟机。
【第一步:创建一个新的流水线】
【第二步:定义名字】
点击下发ok!
【第三步:添加代码描述】
【第四步:编写流水线代码,如果忘记了,参照第五步】
【第五步:自动生成流水线代码】
【第六步:保存流水线代码】
node{
上面复制的网址粘贴进来
}
【第七步:测试流水线代码是否有错】
点击左侧Build Now
【第八步:查看代码】
点击
4、maven配置
【配置maven,把刚才下载的项目代码,打包发布出来,在宿主机上访问,就算成功。】
1、安装
1、上传压缩包
上传文件apache-maven-3.3.9-bin.tar.gz
2、解压
进入当前目录
cd /usr/local/maven
解压
tar -zxvf apache-maven-3.3.9-bin.tar.gz
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
4、加载环境变量
source /etc/profile
5、测试maven安装是否成功
mvn -v
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>
【注意:需要自己创建/usr/local/maven/apache-maven-3.3.9/repository目录】
2、Jenkins配置Maven
【第一步:】
【第二步:】
【第三步:点击三下Add】
【第四步:配置环境变量】
配置3个环境变量:JAVA_HOME、MAVEN_HOME
PATH+EXTRA $MAVEN_HOME/bin
5、写maven流水线
目的:拉取最新代码,将代码打包好,做成镜像,上传到docker中,然后启动容器,外部可以访问。
-
通过git拉取代码
-
用Dockerfile检查是否存在容器和镜像,如果存在则删除
-
编译
-
创建docker镜像
-
启动docker容器
1.第一段流水线:
【一步一步测试流水线代码:】
刚进来时
node {
stage('pull code'){
git credentialsId: '0f52bea8-52b4-4b55-ac60-43b4ab9569b7', url: 'https://gitee.com/gbgbkkd/jenkins-demo1.git'
}
}
修改后
点击run
2.第二段流水线:
node {
stage('compile'){
dir('/var/lib/jenkins/workspace/fff'){
sh 'mvn clean install'
}
}
}
如果报这个错误
解决办法
把 sh 'mvn clean install'语句删除
3.第三段流水线:
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 . 命令中的镜像名不能有大写字母。
#创建容器并运行,d1是容器名,
docker run --name d1 -p 8866:8866 -d jenkinsdemo1
大整合【直接操作即可】:
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'
}
}
说明:
git拉起代码:第一步
打包代码:第三步
把打包后的代码做成镜像:第五步
通过镜像创建容器并运行:第六步
检查是否有容器和镜像存在:第二步
删除已存在的容器和镜像:第四步
标签:git,流程,maven,sh,Jenkins,jenkins,docker,解析 From: https://blog.csdn.net/m0_71240584/article/details/142411561