Jenkins安装使用教程

AI 驱动代码审查实战

Claude code-review 插件深度解析,把 AI 智能审查接进 CI/CD 流水线

前言

使用jenkins完成了以下几个步骤
(1)从代码仓库中拉取一个java工程,在本地打包制作成镜像文件,推送到远端harbor仓库中
(2)把远端仓库中的该镜像文件推送到远端应用服务器中,并基于该镜像运行一个容器

环境搭建

Harbor仓库服务器

IP:192.168.37.145
因为harbor服务是用容器的方式启动的,所以需要先在harbor服务器上安装docker
#安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

#添加 Docker 官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#安装 Docker CE
sudo yum install docker-ce docker-ce-cli containerd.io

#启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

#登录harbor官网,下载harbor仓库镜像(国内的服务器速度很慢经常导致下载失败,可以购买一台新加披的阿
里云服务器,先用云服务器下载,然后本地再用scp命令将安装包从阿里云服务器拷贝到本地)
wget https://github.com/goharbor/harbor/releases/download/v2.13.1-rc3/harbor-offline-installer-v2.13.1-rc3.tgz

#解压压缩包
tar -zxvf harbor-offline-installer-v2.13.1-rc3.tgz

#修改harbor相关配置,把yml配置中的hostname改为本机ip,注释掉https配置
cd harborr
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
在这里插入图片描述
安装docker-compose并赋执行权限
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-“uname -s”-“uname -m” -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

#执行脚本,启动harbor仓库服务
/root/harbor/install.sh
在这里插入图片描述
harbor服务占用80端口,可在浏览器登录harbor仓库,url http://192.168.37.145:80,登录用admin/Harbor12345,登录后创建jenkins仓库和show用户,并添加show用户对jenkins仓库的权限

Jenkins服务器

IP:192.168.37.143,需要安装jdk、git、maven、jenkins、docker

#安装jdk
安装jdk17环境最好,低版本的jdk可能不支持jenkins,安装新版本jdk前需要把系统中自带的open-jdk全部卸载掉
yum remove -y java--openjdk
yum remove -y jdk-*
rm -rf /usr/lib/jvm
rm -rf /usr/java
rm -rf /etc/alternatives/java*
rm -rf /etc/alternatives/j*
把 jdk-17.0.12_linux-x64_bin.tar.gz 安装包上传到/root,创建文件夹mkdir -p /usr/local/jdk,解压jdk到指定目录
tar -zxvf jdk-17.0.12_linux-x64_bin.tar.gz -C /usr/local/jdk
配置并重加载全局环境变量文件/etc/profile
vim /etc/profile
export JAVA_HOME=/usr/local/jdk/jdk-17.0.12
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib
source /etc/profile

#安装git
yum -y install git

#安装maven
把 apache-maven-3.8.6-bin.tar.gz 上传到/root目录下,创建文件夹mkdir /usr/local/maven,解压maven到指定目录
tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local/maven
配置并重加载全局变量文件
export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.6
export PATH=$MAVEN_HOME/bin:$PATH
export JAVA_HOME=/usr/local/jdk/jdk-17.0.12
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib

#安装jenkins
把安装包jenkins.war上传到/roott路径下,创建存放日志的目录mkdir /root/logs,执行启动jenkins服务的命令
nohup java -jar jenkins.war >> /root/logs/jenkins.out 2>&1 &
jenkins服务占用8080端口,查看端口是否已经启动
lsof -i:8080
在初次启动服务的输出日志中可以查看到admin用户的密码

docker应用服务器

#安装jq
yum -y install jq

本地push、pull镜像测试

harbor仓库服务器192.168.37.145: 运行harbor镜像仓库服务,存储镜像文件
jenkins服务器192.168.37.143:从git版本库中拉取war代码包到本地,在本地中使用Dockerfile文件把war包打包成镜像,然后推送到harbor镜像仓库
docker应用服务器: 从harbor镜像仓库中拉取镜像到本地,并运行一个容器
harbor仓库服务器接收http的请求,所以对jenkins服务器和docker应用服务器修改配置,将"insecure-registries": [“192.168.37.145:80”]字段追加到配置文件/etc/docker/daemon.json
修改jenkins服务器的用户权限,visudo命令编辑如下

#Allow root to run any commands anywhere
root ALL=(ALL) ALL
jenkins ALL=(root) NOPASSWD: /usr/bin/docker
Defaults:jenkins !requiretty

修改docke应用服务器,visudo编辑如下

##Allow root to run any commands anywhere
root ALL=(ALL) ALL
Defaults:root !requiretty

#测试jenkins服务器推送镜像到harbor仓库,使用tomcat镜像做测试
#对本地的tomcat镜像打tag
docker tag tomcat:latest 192.168.37.145:80/jenkins/tomcat:v1
#把tomcat镜像推送到harbor仓库
docker push 192.168.37.145:80/jenkins/tomcat:v1

#测试docker应用服务器从harbor仓库中拉取镜像并运行容器
在这里插入图片描述
docker pull 192.168.37.145:80/jenkins/tomcat@sha256:ae0e264cf5fb663e5eea1a442829fd4043e383af014d4d40f67b9839c9433a98
基于镜像id运行容器:docker run -d --name tomcat-aa -p 8080:8080 391829227220

jenkins持续集成持续交付

jenkins配置

首次登录jenkins http://192.168.37.143:8080,将推荐的插件全部安装完成,需要做三个配置,第一是配置maven,maven负责把远端代码库中的项目打包,第二是配置凭据,该凭据是登录docker应用服务器的用户密码,第三是配置ssh,登录docker应用服务器

配置maven,进入jenkins后右上角有个齿轮按钮,代表系统管理,点击后进入,点击全局工具配置,页面拉到最下面配置maven名字和安装地址
在这里插入图片描述
添加凭据,在进入系统管理,点击凭据管理,先添加域,命名为docker,再添加凭据,配置docker应用服务器的账户密码
在这里插入图片描述
在这里插入图片描述
进入系统管理,点击系统配置,在ssh remote host中配置docker应用服务器的地址和登录凭据
在这里插入图片描述

jenkins测试

新建有个任务例如mave-docker,进入任务,左侧导航栏中的配置,定义了执行该任务的各个步骤
在这里插入图片描述
在这里插入图片描述
Generral的描述中输入一个名字即可,其余默认;源码管理中选择git,输入代码库项目中的https开头、git结尾的url,其余默认;Trigger和Enviroment默认;Pre Step配置默认;Build配置如下
在这里插入图片描述
Post Step步骤中选择第一个,Run only if build succeeds。这里面分两步,第一步是执行shell脚本,在jenkins服务上执行,第二步是ssh连接到dockerr应用服务器执行shell脚本
第一步:
在这里插入图片描述

#war_home目录,该目录在maven构建时自动创建,保存从项目中拉下来的war包
JENKINS_WAR_HOME='/root/.jenkins/workspace/maven-docker/target'
#存放Dockerfile的目录,在该目录下通过Dockerfile把war包构建成镜像image
DOCKERFILE_HOME='/root/jenkins/docker-file/maven-docker-test_war'
#harbor服务器ip地址
HARBOR_IP='192.168.37.145'
#harbor仓库名
REPOSITORIES='jenkins/maven-docker-test'
#登录harbor的用户名
HARBOR_USER='show'
#登录harbor密码
HARBOR_USER_PASSWD='show111111A'
HARBOR_USER_EMAIL='785615861@qq.com'
 
#从git上把代码包srpingbootdatajpa.war拉到路径$JENKINS_WAR_HOME下,然后再拷贝到$DOCKER_HOME路径下
\cp -f ${JENKINS_WAR_HOME}/springbootdatajpa.war ${DOCKERFILE_HOME}/maven-docker-test.war

#登录harbor仓库,把jenkins本地的历史镜像全部删除
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80
IMAGE_ID=`sudo docker images | grep ${REPOSITORY} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    sudo docker rmi ${IMAGE_ID}
fi  
 
#构建镜像
cd ${DOCKERFILE_HOME}
TAG=`date +%Y%m%d-%H%M%S`
#执行Dockerfile文件,将war包构建成镜像image
sudo docker built -t ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} . &> /dev/null
#把新构建的镜像推送到harbor仓库中
sudo docker push ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &> /dev/null

#构建镜像build步骤所使用到的Dockerfile文件
#Version 1.0
#Base image
From tomcat:8.0.36-alpine
#authow
MAINTAINER show <785615861@qq.com>
#add war
ADD maven-docker-test.war /usr/local/tomcat/webapps/
#define working directory
WORKDIR /usr/local/tomcat/bin
#define enviroment variables
ENV PATH /usr/local/tomcat/bin:$PATH
#define default commmand
CMMD ['catalina.sh',"run"]
#expose port
EXPOSE 8080

第二步:

#定义变量
HARBOR_IP='192.168.37.145'
REPOSITORIES='jenkins/maven-docker-test'
HARBOR_USER='show'
HARBOR_USER_PASSWD='show111111A'

#登录harbor
docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80

#停止、删除容器并删除镜像
#获取运行中的容器id
CONTAINER_ID=`docker ps | grep "maven-docker-test" | awk '{print $1}'`
#把运行中的容器停止并删除
if [ -n "$CONTAINER_ID" ]; then
    docker stop $CONTAINER_ID
    docker rm $CONTAINER_ID
else #把启动失败的容器也一并删除掉
    CONTAINER_ID=`docker ps -a | grep "maven-docker-test" | awk '{print $1}'`
    if [ -n "$CONTAINER_ID" ]; then
        docker rm $CONTAINER__ID
    fi
fi

#删除本地的所有相关镜像
IMAGE_ID=`docker images | grep ${REPOSITORIES} | awk 'print {print $3}'`
if [ -n "${IMAGE_ID}" ]; then
    docker rmi ${IMAGE_ID}
fi

TAG=`curl -s http://192.168.37.145/api/repositories/jenkins/maven-docker-test/tags | jq '.[-1] {name:.name}' | awk -F
'"' '/name/{print $4}'`

#拉取镜像到本地
docker pull ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &>/dev/null

#运行容器
docker run -dti --name maven-docker-test -p 8080:8080 ${HARBOR_IP}:80/${REPOSITORIES}:${TAG}

以上步骤以设置完成,保存后回到工程中点击立即构建即可
在这里插入图片描述
通过网盘分享的文件:jenkins安装包
链接: https://pan.baidu.com/s/1iaFk3kphnWBM791fB16PtA

AI 驱动代码审查实战

Claude code-review 插件深度解析,把 AI 智能审查接进 CI/CD 流水线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值