jenkins部署

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件,满足任何项目的需要。它拥有庞大的社区支持,基于Java开发使其可以移植到所有主要平台,有超过1800个插件的丰富生态系统。

[TOC]

1.准备工作

  • Jenkins服务器的示例配置如下:
地址:10.30.3.231
配置:不低于4C8G,建议8C32G
存储:建议100G系统盘 + 1T数据盘

1.1.安装jdk

  • 安装 jdk 20.0.2,不得低于 Java 11 否则会报错
#.下载安装
mkdir -p /usr/local/java
curl -L http://iso.sqlfans.cn/jdk/openjdk-20.0.2_linux-x64_bin.tar.gz -o /opt/openjdk-20.0.2_linux-x64_bin.tar.gz
tar -zxf /opt/openjdk-20.0.2_linux-x64_bin.tar.gz -C /usr/local/java/
mv /usr/local/java/jdk-20.0.2 /usr/local/java/openjdk20
/usr/local/java/openjdk20/bin/java -version

注:以上操作只是解压最新的 java 版本到指定目录,并未配置java环境,主要是不想改动默认的java版本

2.Jenkins安装部署

2.1.下载安装

  • 安装 jenkins 2.414.1,为了不改动java环境,这里通过指定java版本来启动jar包
mkdir -p /data/jenkins
cd /data/jenkins
curl -sL http://iso.sqlfans.cn/linux/jenkins.2.414.1.war -o /data/jenkins/jenkins.war
nohup /usr/local/java/openjdk20/bin/java -jar /data/jenkins/jenkins.war --httpPort=8080 --enable-future-java > /data/jenkins/jenkins.log 2>&1 &
netstat -lnpt | grep 8080

3.Jenkins环境配置

3.1.解锁Jenkins

  • 登录服务器,执行如下命令,复制验证码
cat /root/.jenkins/secrets/initialAdminPassword
  • 浏览器打开jenkins控制台,粘贴验证码,解锁 Jenkins,并安装推荐的插件,最后创建第一个管理员账户,并开始使用Jenkins进入Jenkins后台
地址:http://10.30.3.231:8080
账号:jenkins
密码:Admin_147

3.2.自定义jenkins插件

3.2.1.修改插件下载地址

3.2.2.安装中文汉化插件

3.3.用户权限管理

3.3.1.安装用户认证插件

3.3.2.开启权限全局安全配置

3.3.3.创建和管理角色

角色名称 类型 权限 描述
baseRole Global roles Permission 选择 全部/Read 全局角色,绑定Overall的Read权限,给所有用户绑定最基本的Jenkins访问权限
role1 Item roles Pattern 选择 demo.* 项目角色,绑定 demo.* ,即只能操作demo开头的项目
role2 Item roles Pattern 选择 demo-cicd.* 项目角色,绑定 demo-cicd.* ,即只能操作demo开头的项目
  • 添加效果如下图示:

3.3.4.创建用户

3.3.5.给用户分配角色

  • 打开:http://10.30.3.231:8080/manage/role-strategy/assign-roles
  • 针对 Global roles 角色,添加2个示例用户,分配 baseRole 这个最基本的只读角色,并应用
  • 针对 Item roles 角色,添加2个示例用户,将 demoUser1 添加到 role1 角色中,将 demoUser2 添加到 role2 角色中,并应用

3.3.6.创建项目测试权限

  • 以管理员账户创建两个项目,分别为 demo01demo-cicd01
  • 测试场景1:使用 demoUser1 登录,根据 role1 的正则匹配规则 demo.* 能看到demo01和demo-cicd01项目
  • 测试场景2:使用 demoUser2 登录,根据 role2 的正则匹配规则 demo-cicd.*只能看到demo-cicd01项目

3.4.凭据管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便 Jenkins可以和这些第三方的应用进行交互。

3.4.1.安装凭据插件

3.4.2.确认凭据类型

Username with password:用户名和密码 
SSH Username with private key:使用SSH用户和密钥 
Github App:GitHub 应用进行身份验证现
Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret fifile就会被删除。 
Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token 
Certifificate:通过上传证书文件的方式

3.4.3.创建及测试凭据

此过程略...

3.5.安装Maven

此过程略...

3.6.安装tomcat

此过程略...

4.Jenkins服务器维护

4.1.管理url

4.2.配置LDAP作为用户认证

  • 打开:http://10.30.3.231:8080/manage/configureSecurity
  • 找到 安全域 选择 LDAP,修改如下域控信息(其他配置保持默认),配置完成后点击 应用,退出登录并使用任意域账号登陆成功即可(注:认证生效之后原有的jenkins账号就无法再登录了
Server:填写企业内部域控服务器地址,比如 ldap://10.30.3.9:389
root DN:填写域控查询根目录号,比如 OU=jjkj_root,DC=jjkj,DC=tech
User search filter:填写用户搜索过滤器,比如 sAMAccountName={0}
Group membership:选择 "Parse user attribute for list of LDAP groups" \ memberOf
Manager DN:填写管理区分名,比如 CN=git_ad2,OU=jjkj_root,DC=jjkj,DC=tech
Manager Password:填写Manager DN配置的账号密码,即 jjkj.tech\jjkj_root\git_ad2 的密码

4.3.配置邮箱服务器发送构建结果

此过程略...

遇到的问题

场景1:如何彻底卸载 jenkins

cd /opt/
ps -ef |grep -i jenkins|grep -v grep|awk '{print $2}'| xargs kill -9 2> /dev/null
rm -rf /data/jenkins
rm -rf /root/.jenkins

场景2:首次打开Jenkins页面报错 Cannot load from short array

  • 症状:首次打开Jenkins页面报错 Cannot load from short array
java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null
  • 原因:linux系统缺少相关字体导致,执行如下2行命令,并重启jenkins进程即可
yum install -y fontconfig
fc-cache --force

场景3:清理jenkins占用的空间

  • 症状:jenkins服务器磁盘空间不足告警
[root@jenkins ~]# du -sh /home/admin/.jenkins/* | grep G
120G    jobs
157G    workspace
  • 解决:参考如下方案
1.删除一些过期的任务、太老的依赖及模块
2.jenkins界面配置只保留最近的几次构建

场景4:jenkins页面报 502 Bad Gateway

  • 症状:收到jenkins告警 502 Bad Gateway
  • 分析:查看nginx配置发现 8080端口未监听
cat /etc/nginx/conf.d/jenkins.conf
  • 解决:启动jenkins服务以监听8080端口
nohup java -jar /home/admin/jenkins/jenkins.war --httpPort=8080 --enable-future-java > /home/admin/jenkins/jenkins.log 2>&1 &
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2024-04-10 21:24:30

results matching ""

    No results matching ""