jenkins(不是很全面)

Jenkins

1、什么是Jenkins

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

Jenkins是一个可拓展的持续集成引擎。

2、Jenkins的作用

  • 持续、自动地构建、测试软件。
  • 监控一些任务,或定时任务。

3、什么是CI/CD

持续集成、持续部署

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

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

4、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

请添加图片描述

rpm可以用来安装应用程序

-i :安装软件包

-v:可视化

-h:显示进度

3、修改启动用户为root

vim /etc/sysconfig/jenkins

请添加图片描述

把JENKINS_USER的值修改成root

4、启动jenkins并加入开机启动

systemctl start jenkins
systemctl status jenkins

请添加图片描述

根据错误日志,可以看出Jenkins没有启动成功,报错和java配置有关。

如果实在找不到什么错误,把特殊的字复制到网上搜索

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

修改Jenkins的配置文件,添加我们的java可执行文件的路径,注意一定是可执行文件,不是JAVA_HOME的路径。

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

请添加图片描述

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

ll /var/lib/jenkins

成功后,这个目录文件下回有很多文件

7、登录

请添加图片描述

cat /var/lib/jenkins/secrets/initialAdminPassword

这个文件中保存了admin的初始化密码,大家的都不一样,而且很长,不方便记,后续一定要修改。

8、跳过插件安装

请添加图片描述
请添加图片描述

9、修改密码

请添加图片描述

密码统一修改成123456

10、安装插件

1、查看已安装插件

在这里插入图片描述

在这里插入图片描述

没有安装任何插件。

通过服务器查看:
在这里插入图片描述

2、解压文件
tar -zxvf jenkins-plugins.tar.gz
ll plugins/ |wc -l

一共给大家191个插件。

3、拷贝插件

将解压好的插件拷贝到Jenkins下

cp -a plugins/* /var/lib/jenkins/plugins/
ll /var/lib/jenkins/plugins/ |wc -l
4、重启Jenkins
/etc/init.d/jenkins restart

在这里插入图片描述

2、Git设置

1、上传文件

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

2、解压压缩包

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

4、编译

make prefix=/usr/local/git all

5、安装

make prefix=/usr/local/git install

6、修改环境变量

vi /etc/profile

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

source /etc/profile

7、检查

git --version

8、在Jenkins添加git配置

我们通过Jenkins调用git的命令,实现代码管理,所以要在Jenkins中设置好git。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
username和password是自己的git账号和密码
在这里插入图片描述
在这里插入图片描述

密码都是以密文存在的,这个ID是后续流水线上用到的唯一标识。

3、写流水线

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不用沙盒方式执行,在空白区域写流水线代码,save保存

node("master"){
    stage('download code'){
        git(
            branch: 'develop', credentialsId: '8977004d-6900-46be-80e4-d8e7d34b7262', url: 'https://gitee.com/wztsl/dz7-demo01.git'
        )
    }
}

node:Jenkins是支持分布式的,node代表节点,master是本机节点的意思,代表流水线在本机上执行

stage:步骤,构建时会分步骤显示,方便检查、纠错等操作

git:执行git命令,拉取代码

​ branch:分支

​ credentialsId:git账户的唯一标识

​ url:git仓库地址

Jenkins提供了流水线帮助,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成后,复制即可用。

在这里插入图片描述

build now 开始构建流水线。

4、maven配置

1、安装

1、上传压缩包

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

2、解压
tar -zxvf apache-maven-3.3.9-bin.tar.gz
3、配置环境变量
vi /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、测试
mvn -v

在这里插入图片描述

6、替换maven源
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>

2、Jenkins配置Maven

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
JAVA_HOME:配置自己的

MAVEN_HOME:配置自己的

PATH+EXTRA:$MAVEN_HOME/bin

5、再写流水线

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

  • 拉取代码

  • 交易是否已经做过这个镜像,可以通过判断Dockerfile文件是否存在确定,有这个文件就是已经上传过

  • 打包代码

  • 做成镜像并上传docker

    如果是第一次上传,直接上传即可

    如果已经上传过了,要停止正在运行的容器,删除这个容器,再删除对应的镜像,最后上传新的镜像

  • 启动容器

checkedState=0
node("master"){
    stage('download code'){
        git(
           branch: 'develop', credentialsId: '41b13e72-9760-4746-9841-e63283cd4932', url: 'https://gitee.com/Summeringer/keep-damo.git'
        )
    }
    stage('check docker state'){
        if(fileExists('/var/lib/jenkins/workspace/chensuo/Dockerfile')){
            checkedState=1
        }
    }
    stage('compile'){
        dir('/var/lib/jenkins/workspace/chensuo'){
            sh "mvn clean install"
        }
    }
    stage('docker build'){
        if(checkedState == 1){
            sh "docker stop tsb"
            sh "docker rm tsb"
            sh "docker rmi \$(docker images testspringboot -q) -f"
        }
        dir('/var/lib/jenkins/workspace/chensuo'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD target/keep-damo-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
            sh "echo EXPOSE 8898 >> Dockerfile"
            sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"
            sh "docker build -t testspringboot ."
        }
    }
    stage('deploy'){
        sh "docker run -d --network host -p 8898:8080 --name tsb testspringboot"
    }
}

checkedState:定义了一个变量用来做标识

fileExists:判断文件是否存在的方法

dir:进入某个目录文件

创建Dockerfile时,注意jar的路径

echo FROM openjdk:8 > Dockerfile :将“FROM openjdk:8”输出到Dockerfile文件中

echo EXPOSE 8898 >> Dockerfile:两个大于号代表追加,EXPOSE代表这个镜像对外的端口号

如果sh中有引号,注意转义

"
sh “docker build -t testspringboot .”
}
}
stage(‘deploy’){
sh “docker run -d --network host -p 8898:8080 --name tsb testspringboot”
}
}


checkedState:定义了一个变量用来做标识

fileExists:判断文件是否存在的方法

dir:进入某个目录文件

创建Dockerfile时,注意jar的路径

echo FROM openjdk:8 > Dockerfile :将“FROM openjdk:8”输出到Dockerfile文件中

echo EXPOSE 8898 >> Dockerfile:两个大于号代表追加,EXPOSE代表这个镜像对外的端口号

如果sh中有引号,注意转义。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值