Jenkins入门

目录

1.下载安装

2.更改配置

3.启动Jenkins 

3.1 重启jenkins服务 

4.访问jenkins

5.添加全局凭证

5.1 新建项目

5.2 配置构建信息

5.2.1 配置git仓库和凭证

5.2.2 配置凭证

6 Maven项目构建

6.1 创建任务名选择maven项目

6.2 添加maven插件

7. 项目构建

7.1 构建项目常见问题

7.1.1 解析pom文件失败

7.1.2 pom父项目路径错误

7.1.3 重新拉取时清除包失败

7.1.4 权限不足

7.1.5 无法解析镜像仓库的pom文件

8.项目部署

8.1 添加执行shell

8.2 编写可执行的shell脚本 

8.2.1 restart-service.sh

8.2.2 shutdown.sh

8.2.3 start.sh

8.3 项目部署

8.3.1 启动脚本无法后台运行

8.3.2 可后台运行脚本

8.4 访问测试

8.4.1 curl命令测试

9.服务节点管理

9.1 添加服务节点

10.创建流水线

10.1 Blue Ocean插件

11.忘记密码怎么办

11.1 查看配置文件


1.下载安装

通过官方文档下载好之后更改配置

这里完全可以参照官网

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum upgrade
yum install epel-release java-11-openjdk-devel
yum install jenkins
systemctl daemon-reload

2.更改配置

这里主要更改这个 /etc/sysconfig/jenkins文件

这里可以修改jenkins home 和端口号,修改jenkins home 路径后后方便日志查看

/etc/init.d/jenkins 添加jdk安装路径 (也可以不用更改)

3.启动Jenkins 

# systemctl daemon-reload

# systemctl start jenkins.service          //启动jenkins

# systemctl enable jenkins.service       //设置jenkins开机启动 

# systemctl stop jenkins.service           //关闭jenkins 

# systemctl status jenkins.service         //查看jenkins的状态

原文链接:https://blog.youkuaiyun.com/finghting321/article/details/108616750

3.1 重启jenkins服务 

在浏览器地址加restart

关闭jenkins 加exit

重新加载配置信息加 reload

4.访问jenkins

http:ip/端口号

 

 安装失败可以选择重试,一般多试几次就好了...

 

原文参考:Linux下Jenkins 安装与配置_Map的博客-优快云博客_jenkins安装与配置 linux

Jenkins 持续集成综合实战_kefeng.wang 的博客-优快云博客_jenkins持续集成

官方文档:Linuxhttps://www.jenkins.io/doc/book/installing/linux/#red-hat-centos

5.添加全局凭证

5.1 新建项目

5.2 配置构建信息

5.2.1 配置git仓库和凭证

注意:

1.在服务器需要安装 Git

2.此处如果没有配置凭证构建会失败,因为没有权限拉取项目

 不配置凭证无法拉取git仓库项目的错误输出

5.2.2 配置凭证

 

 

 

在这里配置好用户名和密码,添加描述

 这样在项目中添加git仓库时候就可以使用这个凭据,重新构建发现已经成功

 

 构建成功后可以看到项目已经被拉取到workspace目录

查看项目分支

6 Maven项目构建

6.1 创建任务名选择maven项目

注意: 如果没有红色方框的选项可以参考下文添加maven插件

6.2 添加maven插件

系统管理--> 插件管理-->可选插件

 

 搜索框输入maven将会出现下面插件点击选择安装

原文参考:Jenkins 中创建项目时没有Maven项目怎么办 - 支照 - 博客园

7. 项目构建

之前已经创建过项目,不再做过多的记录

我的视图-->点击视图名称

 

 构建了21次终于成功了,下面将记录出现的问题和解决方法

7.1 构建项目常见问题

7.1.1 解析pom文件失败

 这个问题的出现是因为 spring-boot-maven-plugin 没有指定对应的版本

指定最新的版本之后重新尝试问题解决

7.1.2 pom父项目路径错误

 

7.1.3 重新拉取时清除包失败

由于前面的步骤是我手动在服务器拉取最新包,而且使用的是root用户,导致拉取的jar文件也是root组的,导致jenkins用户无法执行清除操作

 这里可以手动在服务器删除相应文件然后重试

7.1.4 权限不足

jenkins会复制项目jar包到maven目录

但是maven本地仓库repo目录所属用户和用户组都是root,并且对其他用户的权限是不可写入

解决方法:编辑vim /etc/sysconfig/jenkins 更改 JENKINS_USER用户为root 

vim /etc/sysconfig/jenkins

7.1.5 无法解析镜像仓库的pom文件

 之前因为拉取速度较慢,配置了阿里镜像,后来删除配置的镜像重新拉取问题解决

8.项目部署

8.1 添加执行shell

8.2 编写可执行的shell脚本 

echo "start deploy."
TAR_FILE_PATHS=/data/jenkins/workspace/test-maven02/target/delivery-ocpx-0.0.1-SNAPSHOT.jar
SHELL_PATH=/data/jenkins
sh ${SHELL_PATH}/restart-service.sh ${TAR_FILE_PATHS}

其中用到了三个自己编写的脚本 readme.md

# restart-service.sh 重启服务脚本

 用法:sh restart-service.sh [path.file_name]
 示例:sh restart-service.sh /data/jenkins/workspace/test-maven02/target/delivery-ocpx-0.0.1-SNAPSHOT.jar


# shutdown.sh 关闭服务脚本

 用法:sh shutdown.sh [file_name]
 示例:sh shutdown.sh delivery-ocpx-0.0.1-SNAPSHOT.jar


# start.sh 启动服务脚本

 用法:sh start.sh [path.file_name]
 示例:sh start.sh /data/jenkins/workspace/test-maven02/target/delivery-ocpx-0.0.1-SNAPSHOT.jar

8.2.1 restart-service.sh

echo "########################### well restart service! ########################"

path=${1%/*}
file=${1##*/}

echo "path:" ${path}
echo "file:" ${file}

sh /data/jenkins/shutdown.sh ${file}

sh /data/jenkins/start.sh $1

echo "########################### restart service end! ########################"

8.2.2 shutdown.sh

# 停止服务

service_name=$1

echo "########################### well stop ${service_name} service! ########################"
echo "service_name:" ${service_name}

pcmd="ps -ef |grep ${service_name}|grep -v "grep" | head -n1 | awk '{printf("%d/n"), $2}' | awk -F/ '{printf("%d"), $1}'"
echo "pcmd:" ${pcmd}

port=${pcmd}
echo "port:" ${port}

kill -9 ${port}


echo "########################### ${service_name} service is shutdown! ########################"

8.2.3 start.sh

# 启动服务
echo "########################### well start service! ########################"

log_file=${1%.*}.log
file_name=${1##*/}

echo "log_file:" ${log_file}
echo "file_name:" ${file_name}

scmd="nohup java -jar ${1} > ${log_file}  2>&1 &"
echo "${scmd}"

${scmd}

echo "########################### start service end! ########################"

三个文件存放在jenkins根目录下,建议将权限更改为755 

8.3 项目部署

点击 立即构建

 

 此时项目已经正常启动了

8.3.1 启动脚本无法后台运行

虽然项目正常构建并且正常运行,但是项目一直处于正在构建的状态

问题原因:Jenkins执行shell是Jenkins来将你填写的shell脚本语句在部署的机器上执行,实际上就是Jenkins启动了子进程到部署的机器上执行命令行,所以当最后一行命令执行结束后,Jenkins会杀掉所有在此过程中创建的子进程,如果这里有需要后台运行的,或者挂起的任务时,在Jenkins执行结束后,这些挂起的或后台的任务都会被杀掉

解决方法:

        1.加入环境变量BUILD_ID=DONTKILLME

        2.启动参数加入 -Dhudson.util.ProcessTree.disable=true

8.3.2 可后台运行脚本

参考如下:可以拆分多个脚本放在服务器

#!/bin/bash
echo "start deploy."
BUILD_ID=DONTKILLME

TAR_FILE_PATHS=/data/jenkins/workspace/test-maven02/target/delivery-ocpx-0.0.1-SNAPSHOT.jar
OCPX_SERVICE_NAME=delivery-ocpx-0.0.1-SNAPSHOT.jar

pid=`ps x|grep ${OCPX_SERVICE_NAME}|grep java|grep -v grep |awk '{printf($1)}'`
echo "pid:${pid}"

if [ -z "${pid}" ]
then
 echo "service do not start!"
else
 echo "well kill service pid:${pid}"
 kill -9  ${pid}
fi


log_file=${TAR_FILE_PATHS/.jar/.log}
# source /etc/profile
nohup java -Dhudson.util.ProcessTree.disable=true -jar ${TAR_FILE_PATHS} > ${log_file} 2>&1 &

或者这样使用 

sh "BUILD_ID=DONTKILLME nohup java -jar ${TAR_FILE_PATHS} > ${log_file} 2>&1 &"

还可以这样

s_cmd="BUILD_ID=dontKillMe nohup java -jar ${TAR_FILE_PATHS} > ${log_file} 2>&1 &"
echo "${s_cmd}"
eval ${s_cmd}

 也可以使用JENKINS_NODE_COOKIE=dontKillMe (没试过)

原文参考:Jenkins踩坑之旅:nohup后台执行shell命令_qq_34412985的博客-优快云博客_jenkins 执行nohup
Jenkins构建、发布后台Maven项目时无法后台执行或无法启动的问题(亲测好用)_Aubrey.J的博客-优快云博客

8.4 访问测试

8.4.1 curl命令测试

curl localhost:9527/version

 返回正常的版本信息说明服务正常启动了

9.服务节点管理

9.1 添加服务节点

系统管理-->节点管理-->新建节点

 

 点击保存,启动代理就会自动连接上去,可以查看日志信息

日志中可以看到这样一段话 

在节点服务器中可以看到相应的文件 

 

 但是此时服务并没有启动

搜索资料发现大家都在用Publish Over SSH ,但是现在这个插件已经被禁了https://www.jenkins.io/security/advisory/2022-01-12

参考原文:jenkins插件Publish Over SSH因安全问题下架 - 爱码网

10.创建流水线

10.1 Blue Ocean插件

前面有安装插件记录这里不做过多展示

 打开Blue Ocean

 选择Git代码仓库,选择SSH方式连接

这里连接Git远程仓库有一个坑,选择HTTPS方式很难弄,应该不是我密码输错了

 在git远程仓库中将公钥添加进去,点击创建流水线

 

 官网参考:Blue Ocean

11.忘记密码怎么办

有时候太久没有登陆jenkins之后需要登陆,但是忘了密码

11.1 查看配置文件

找到jenkins目录,下面有个users目录

# 我的根目录是 /data/jenkins
less /data/jenkins/users/users.xml

可以看到用户信息,帮助唤醒部分记忆,但是需要对用户名密码记忆深刻,当然很多人是真的忘了,所以需要换种方法

### Jenkins 入门教程与基础指南 Jenkins 是一个开源的持续集成与持续交付(CI/CD)工具,广泛用于自动化构建、测试和部署流程。它支持跨平台运行,能够与各种版本控制系统、构建工具和部署平台集成,适用于从开发到运维的全流程自动化。 #### Jenkins 简介 Jenkins 提供了一个可扩展的平台,用户可以通过安装插件来增强其功能,例如支持 Git、SVN、Docker、Kubernetes、邮件通知等。它允许用户通过 Web 界面进行配置和管理,同时也支持通过 Jenkinsfile 文件实现流水线即代码(Pipeline as Code)的方式定义构建流程。 #### Jenkins 安装 Jenkins 可以通过多种方式进行安装,常见的方式包括使用 WAR 文件部署、通过系统包管理器安装(如 apt 或 yum)或使用 Docker 容器运行。其中,使用 WAR 文件是最基础的安装方式,适用于所有操作系统环境。 在 Linux 系统中,可以创建一个工作目录并设置环境变量以指定 Jenkins 的主目录。例如,创建 `/usr/local/jenkins` 目录,并在 `/etc/profile` 中添加环境变量 `export JENKINS_HOME=/usr/local/jenkins`,这样可以确保 Jenkins 的数据和配置文件存储在指定位置[^2]。 #### Jenkins 插件管理 插件是 Jenkins 的核心扩展机制。用户可以根据需求安装各种插件,以支持不同的构建工具、版本控制系统、通知机制等。Jenkins 提供了丰富的插件库,几乎涵盖了所有常见的开发和运维场景。在使用 Jenkins 之前,建议先安装必要的插件,以满足项目的自动化需求[^3]。 #### Jenkins 目录结构与文件 Jenkins 的安装目录通常包含多个子目录,如 `jobs` 存储项目构建信息,`plugins` 存放插件文件,`workspace` 是工作区目录等。理解这些目录的用途有助于更好地管理和维护 Jenkins 系统。 #### 创建 Freestyle 项目 Freestyle 项目是 Jenkins 中最基础的项目类型,适合简单的构建任务。用户可以在 Jenkins Web 界面中创建 Freestyle 项目,并配置源码管理、构建触发器、构建步骤和构建后操作等。 #### 连接 GitLab 获取仓库代码 Jenkins 支持与 GitLab 集成,通过配置 GitLab 插件并设置 Webhook,可以实现代码推送后自动触发构建。用户需要在 Jenkins 项目中配置 GitLab 的仓库地址、认证信息以及触发条件。 #### 使用 Linux 脚本部署 HTTPD 服务 在 Jenkins 中,可以通过执行 Shell 脚本的方式部署服务。例如,使用 Linux Shell 脚本安装和配置 Apache HTTPD 服务,并将其作为构建后操作的一部分执行。这种方式适合快速部署和测试环境的自动化设置。 #### Git Push 触发自动构建 Jenkins 支持多种构建触发方式,包括定时触发、远程触发和 Git Push 触发。通过配置 GitLab 或 GitHub 的 Webhook,当代码被推送到仓库时,Jenkins 会自动触发相应的构建任务,从而实现持续集成。 #### Jenkinsfile 与流水线 Jenkinsfile 是 Jenkins 流水线(Pipeline)的定义文件,采用 Groovy 语法编写。它允许用户将构建流程以代码形式存储在版本控制系统中,便于版本管理和协作。Jenkinsfile 支持声明式和脚本式两种语法风格,推荐使用声明式语法以提高可读性和可维护性。 #### 构建历史管理 Jenkins 允许用户配置构建历史的保留策略,以避免服务器资源被过多的构建记录占用。可以通过设置“保持构建天数”和“保持构建的最大个数”来控制历史记录的存储量,从而在保留必要历史信息的同时,避免磁盘空间被耗尽[^4]。 #### Jenkins 升级 Jenkins 的升级通常涉及更新 WAR 文件或插件版本。建议在升级前备份 Jenkins 主目录,以防止配置丢失。升级过程中应关注插件兼容性问题,并在测试环境中验证后再进行生产环境升级。 --- ### 示例 Jenkinsfile(声明式流水线) ```groovy pipeline { agent any stages { stage('Build') { steps { echo 'Building...' sh 'make' } } stage('Test') { steps { echo 'Testing...' sh 'make test' } } stage('Deploy') { steps { echo 'Deploying...' sh 'make deploy' } } } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值