Jenkins

Jenkins

VMware安装参考:https://blog.csdn.net/weixin_52799373/article/details/124324077?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171065735716800225589157%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171065735716800225589157&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-124324077-null-null.142^v99^pc_search_result_base5&utm_term=%E4%B8%83%E7%BB%B4%E5%A4%A7%E8%84%91&spm=1018.2226.3001.4187
网路配置参考:https://blog.51cto.com/u_15127626/2734707
jenkins参考:https://www.bilibili.com/video/BV1bS4y1471A?p=1

1. 搭建Gitlab

1.1 安装docker

  1. 更新yum源
yum update
  1. 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加镜像
//国外镜像
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//阿里镜像 
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 查看源中可使用版本
yum list docker-ce --showduplicates | sort -r
  1. 安装指定版本
yum install docker-ce-26.0.0-1.el7
  1. 配置开机启动项
systemctl start docker
systemctl enable docker
docker version

1.2 使用docker安装gitlab

  1. 添加docker容器
docker run --detach \
	--hostname 192.168.158.3 \
	--publish 443:443 --publish 80:80 \
	--name gitlab \
	--restart always \
	--volume $GITLAB_HOME/config:/etc/gitlab \
	--volume $GITLAB_HOME/logs:/var/log/gitlab:z \
	--volume $GITLAB_HOME/data:/var/opt/gitlab:z \
	--shm-size 256m \
	registry.gitlab.cn/omnibus/gitlab-jh:latest
  1. 启动容器
docker start gitlab
  1. 查看已存在的容器
docker ps -a 
  1. 进入容器
docker exec -it gitlab /bin/bash
  1. 访问gitlab地址(需要等一会):192.168.158.3

  2. 管理员账号登录

    • 用户名:root
    • 密码存在下面文件中(进入容器中),登录后需要改密码不然24h之后会失效
cat /etc/gitlab/initial_root_password
  1. 访问成功!
    在这里插入图片描述
    在这里插入图片描述

1.3 使用gitlab新建项目

在这里插入图片描述

2. 搭建Jenkins(使用war包)

2.1 安装Jenkins

  • 地址:https://www.jenkins.io/
  • 版本:2.346.3 war包 https://get.jenkins.io/war-stable/2.346.3/
  • 一定要注意Jenkins版本所要求的JDK版本!!!
  • 可使用docker安装jenkins:https://zhuanlan.zhihu.com/p/663175903

2.2 安装jdk&jre

(1)安装JRE

  • 检索可用包
yum search java|grep jdk
  • 安装
yum install -y java-1.8.0-openjdk

(2)安装JDK

yum install -y java-devel

2.3 安装Maven

  • 地址:https://maven.apache.org/download.cgi
  • 版本:最新版.tar.gz
  • 路径(需要JDK)
    • 压缩包路径:/root/apache-maven-3.9.6-bin.tar.gz
    • 文件路径:/usr/local/maven
  • **修改setteins文件(阿里云镜像、本地仓库地址) ** 重要!!!
  • 上面一条可参考:https://blog.csdn.net/BThinker/article/details/124265149

2.4 启动Jenkins

  • 启动命令(默认端口8080): java -jar jenkins.war
  • 指定端口启动:java -jar jenkins.war --httpPort=8081
... 
2024-03-24 04:00:26.520+0000 [id=28]	INFO	jenkins.install.SetupWizard#init: 

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

8c32c4f9c96640e7ac75f25f4cd8f930

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

2024-03-24 04:01:09.985+0000 [id=28]	INFO	jenkins.InitReactorRunner$1#onAttained: Completed initialization
2024-03-24 04:01:10.073+0000 [id=22]	INFO	hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
2024-03-24 04:01:11.502+0000 [id=57]	INFO	h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2024-03-24 04:01:11.505+0000 [id=57]	INFO	hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
2024-03-24 04:01:11.520+0000 [id=57]	INFO	hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Download metadata. 46,931 ms
  • 访问地址:http://192.168.158.4:8080/

  • 开启8080端口

    • 查询端口是否开放 firewall-cmd --query-port=8080/tcp
    • 开放8080端口 firewall-cmd --permanent --add-port=8080/tcp
    • 重启防火墙(修改配置后要重启防火墙) firewall-cmd --reload
  • 启动成功!
    在这里插入图片描述

  • 过一会后,点击【安装推荐的插件】并设置Jenkins用户信息
    在这里插入图片描述

2.5 安装插件

  • maven integration、git
    在这里插入图片描述

  • 一堆报错,原因:Jenkins安装的时候默认安装的都是最新版本Jenins所兼容的插件,而不是你当前所使用Jenkins版本兼容的插件,因此会出现不兼容的情况.

在这里插入图片描述

2.6 Jenkins与JDK不兼容(重要)

  1. 找到当前版本对应的镜像源,地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/
  2. 在 Jenkins 插件管理中配置镜像源地址。提交。重启Jenkins。

在这里插入图片描述

  1. 可选插件 —> 立即获取 (这个步骤很关键,不然后面依然报错,都是教训!

在这里插入图片描述

  1. 搜索 maven integration —> install without restart

在这里插入图片描述

3. 使用Jenkins发布

  1. 新建一个任务,选择【构建一个maven项目】

在这里插入图片描述

  1. 配置git相关信息

在这里插入图片描述

出现无法连接仓库,需要在服务器上安装一下git

yum install git

在这里插入图片描述

  1. 指定分支:/test

在这里插入图片描述

  1. Build
    1. 配置maven,MAVEN_HOME和服务器路径对应

在这里插入图片描述

	2. 配置父pom路径,与实际项目保持一致

在这里插入图片描述

  1. 首次构建项目在这里插入图片描述

在构建执行状态中可以看见正在执行,点进去可以查看控制台

在这里插入图片描述

首次构建失败原因:

[INFO] Compiling 2 source files with javac [debug target 1.8] to target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:08 min
[INFO] Finished at: 2024-03-24T20:34:23+08:00
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project test: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[JENKINS] Archiving /root/.jenkins/workspace/study-jenkins/test/test/pom.xml to org.example/test/1.0-SNAPSHOT/test-1.0-SNAPSHOT.pom
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
channel stopped
Finished: FAILURE

需要安装JDK!参考本文档2.2章节

  1. 再次构建,构建成功!

在这里插入图片描述

  1. 找到/root/.jenkins/workspace/study-jenkins/test/test/target/test-1.0-SNAPSHOT.jar在这里插入图片描述

  2. 启动jar包,记住开放8088端口
    在这里插入图片描述

java -jar test-1.0-SNAPSHOT.jar --server.port=8088
  1. 访问成功!192.168.158.4:8088/common

  1. 自动启动jar

使用nohup java -jar启动jar包时失效:https://blog.joshua317.com/article/265

​ 根据上面链接中的解决方案:

在这里插入图片描述

BUILD_ID=studyJenkins
nohup java -jar /root/.jenkins/workspace/study-jenkins/test/test/target/test-1.0-SNAPSHOT.jar --server.port=8088 > /usr/local/nohup.out 2>&1 &

说明:

>覆盖写
>>追加写

标准输入(stdin):代码为0,使用<或<<
标准输出(stdout):代码为1,使用>或>>
标准错误输出(stderr):代码为2,使用2>或2>>

2>&1含义详解可参考:https://blog.csdn.net/m0_45406092/article/details/113586005

可以在服务器上面查看启动日志:

cat nohup.out  # 显示整个文件
tail -f nohup.out  # -f 不停地去读最新的内容,用Ctrl+c来终止!  -10  查看后10行
  1. 构建前清理脚本开发**(重要)**
  • 脚本如下:
#!/bin/bash

#1.获取传入的参数 
appname=$1
echo "arg: $1"

#2.获取正在运行的jar包pid
pid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`
echo "pid: $pid"

#3.清理历史jar目录
rm -rf /root/.jenkins/workspace/study-jenkins

#4.关闭pid
if [ -z $pid ];
	then 
		echo "$appname not started."
	else 
		kill -9 $pid
        echo "$appname stoping..."

#5.检查pid是否已关闭
check=`ps -ef | grep -w $pid | grep java`
if [ -z $check ];
    then 
    	echo "$appname pid: $pid is stop."
    else 
    	echo "$appname stop failed." 
fi
fi
  • 在目标服务器新建脚本文件:
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  maven  nohup.out  sbin  share  src  study.sh
[root@localhost local]# pwd
/usr/local
[root@localhost local]# cat study.sh 
#!/bin/bash

#1.获取传入的参数 
appname=$1
echo "arg: $1"
...
  • 修改文件权限
chmod 777 study.sh
  • 在jenkins上面配置Pre Steps

在这里插入图片描述

  • 接下来,可以体验日常开发模式。

develop分支提交代码 —> 合并到test分支 —> Jenkins发版!

4. 几种构建方式

  • 快照依赖构建/Build whenever a SNAPSHOT dependency is built
    • 当依赖的快照被构建时执行本job
  • 触发远程构建(例如,使用脚本)
    • 远程调用本job的restapi时执行本job
  • job依赖构建/Build after other projects are built
    • 当依赖的job被构建时执行本job
  • 定时构建/Build periodically
    • 使用cron表达式定时构建本job
  • 向Github提交代码时触发jenkins自动构建/Github hook trigger for GITScm polling
    • Github-WebHook触发时构建本job
  • 定时检查代码变更/Poll SCM
    • 使用cron表达式定时检查代码变更,变更后构建本job

5. Docker镜像运行jar包

  1. 准备一台有docker环境的服务器
  2. 准备支持jdk的镜像
  3. 把jar包打包到容器内
  • 编写dockerfile:
FROM openjdk:11
EXPOSE 8080

WORKDIR /root

ADD jarfile/test*.jar /root/app.jar
ENTRYPOINT ["java", "-jar", "/root/app.jar"]
  • 打包镜像:
docker build -t test .
  • 配置国内Docker镜像源

修改/etc/docker/daemon.json文件,没有的话创建一个

写入

{
  "registry-mirrors": [
    "https://dockerproxy.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://ccr.ccs.tencentyun.com"
  ]
}
  • 重启docker,让配置生效
systemctl restart docker
  • 检查配置是否生效
docker info

输出结果中显示 Registry Mirrors 为配置文件配置内容,说明配置成功

  • 创建容器(运行镜像)
docker run -d --name demp -p 8080:8080 test 

5.1 自动化部署到Docker容器中

大致步骤:

  • 清理:dockerfile、jar

停止容器、删除容器、删除镜像


docker stop test
docker rm test
docker rmi test
  • 构建镜像
  1. docker外挂目录
docker run -d -p 8080:8080 --name demo-out-v /root/jarfile/test-1.jar:/app.jar openjdk:11 java -jar app.jar
  1. 自动化部署构建Docker镜像运行jar

emctl restart docker


- 检查配置是否生效

```shell
docker info

输出结果中显示 Registry Mirrors 为配置文件配置内容,说明配置成功

  • 创建容器(运行镜像)
docker run -d --name demp -p 8080:8080 test 

5.1 自动化部署到Docker容器中

大致步骤:

  • 清理:dockerfile、jar

停止容器、删除容器、删除镜像


docker stop test
docker rm test
docker rmi test
  • 构建镜像
  1. docker外挂目录
docker run -d -p 8080:8080 --name demo-out-v /root/jarfile/test-1.jar:/app.jar openjdk:11 java -jar app.jar
  1. 自动化部署构建Docker镜像运行jar
  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值