jenkins教程及自己踩过坑
先输入:然后再粘贴下面:后边的命令,然后回车, 不要写两个冒号!这里的清华镜像地址不可以使用https,否则依旧报错。
Jenkins
持续集成 记 Linux 下使用 docker 安装 Jenkinstangoliver ·
1、Jenkins
Jenkins 是独立的开源自动化服务器,可用于自动化构建、测试、交付或部署各种软件任务。
可以通过本地系统包、Docker 安装,或者独立运行在安装 JRE 的机器中。
本文通过 Docker 部署 Jenkins。
1.1 下载
https://www.jenkins.io/download/
选择 Docker 镜像。
选择 Docker 部署类型后,
1、查看Jenkins需要的JDK版本
2、安装JDK进入如下图的界面,以jenkins2.346版本为例,为了配合 JDK 版本:8,
我选择符合 JDK 的 Jenkins,通过 Tags 查看历史 Jenkins 列表,
因为最新的 Jenkins 版本已经使用 JDK11 了,所以需要选择其他版本的 Jenkins。
选择 JDK8 版本的 Jenkins,TAG 为 lts-jdk8,
sudo docker pull jenkins/jenkins:lts-jdk8
3.在 centos7中 中使用 sudo 拉取:
sudo docker pull jenkins/jenkins:lts-jdk8
拉取过程如下图所示。
1.2 下载镜像:dind为在 Jekins 节点内执行 Docker 命令。
这个镜像按需安装。
sudo docker image pull docker:dind
1.3 新建挂载的文件夹
新建文件夹,用于挂载 Jenkins 镜像内部的文件,
保证:Jenkins 宕机后,文件不丢失,可直接重启,无需再配置。
mkdir -p /mydata/jekins
修改文件管理员:
sudo chown -R 1000:1000 jekins
1.4 启动 Jekins
使用 Docker 部署服务,一般有两种启动方式:
(1)前台启动:直接运行,控制台查看日志;
(2)后台启动:守护进行运行,日志文件查看日志;
1.4.1 前台启动
这里将 Jenkins 对外暴露的端口为:40000
映射 Jenkins 内部的 8080 端口。
前台启动,可在控制台直接查看日志,如下图:
sudo docker run --name jenkins-docker --rm \
--volume /mydata/jekins/data:/var/jenkins_home \
--publish 40000:8080 \
jenkins/jenkins:lts-jdk8
1.4.2 后台启动
后台启动:守护进程,使用参数:detach,
需要在日志文件中查看日志。
sudo docker run --name jenkins-docker --rm --detach \
--volume /mydata/jekins/data:/var/jenkins_home \
--publish 40000:8080 \
jenkins/jenkins:lts-jdk8
1.5 查看容器
Jenkins 启动后,查看运行的容器,
获取 Jenkins 容器 ID,如下图:
docker ps
1.6 进入容器
进入容器,是为了获取 Jenkins 初始密码,
毕竟第一次运行,需要查看密码。
0cb8b5be1b3d4a408043682379845ba4
获取初始密码
cat /var/jenkins_home/secrets/initialAdminPassword
初始密码:
0cb8b5be1b3d4a408043682379845ba4
这里,完成 Jenkins 准备工作,下面正式配置 Jenkins。
2 配置 Jekins
2.1 引导页
通过访问如下地址,进入 Jenkins 引导页,如下图所示,由图可知,需要填入初始密码,即上面的初始密码。
2.2 安装插件
密码校验通过后,进入安装插件步骤,如下图所示,
这里选择:安装推荐的插件。
安装过程如下图所示。
2.3 创建用户
安装推荐插件后,进入创建用户,如下图,创建第一个管理员用户。
实例
开始使用如下图:
2.4 首页
完成如上配置后,即可进入 Jenkins 首页,如下图,开始愉快地玩耍吧!
jenkins-Jenkins安装和简单使用
1、Jenkins简介
- Jenkins官网:https://www.jenkins.io/
- Jenkins说明文档
- Jenkins是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
- Jenkins是一款使用Java语言开发的开源的自动化服务器。可以通过界面或Jenkinsfile告诉它执行什么任务,何时执行。理论上,可以让它执行任何任务,但是通常只应用于持续集成和持续交付。
- Jenkins的特征:
- 开源的Java语言开发持续集成工具,支持持续集成,持续部署。
- 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
- 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
- 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
- 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
- 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git、svn、maven、docker等。
- 持续集成流程:
- (1)首先,开发人员每天进行代码提交,提交到Git仓库
- (2)然后,Jenkins作为持续集成工具,使用Git插件到Git仓库拉取代码到集成服务器,再配合JDK、Maven等软件完成代码编译、代码测试与审查、测试、打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
- (3)最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。
2、安装Jenkins
2.1、安装前的准备
1、查看Jenkins需要的JDK版本
2、安装JDK
2.1.2、安装Maven
2.1.3、安装Git
2.2、安装Jenkins
1、下载jenkins
Jenkins官网镜像: https://mirrors.jenkins.io/
2、安装jenkins
yum install ./jenkins-2.277.1-1.1.noarch.rpm
3、配置jenkins
(1)修改配置文件
vim /etc/sysconfig/jenkins
JENKINS\_HOME="/data/jenkins"
JENKINS\_PORT="18081"
(2)创建目录
mkdir -p /data/jenkins
chown jenkins.jenkins /data/jenkins
(3)添加java软链(或将java路径添加到/etc/init.d/jenkins文件)
ln -s /usr/local/jdk/bin/java /usr/bin/java
注意,新版的jenkins有unit文件(如jenkins-2.346.3)
修改unit文件
vim /usr/lib/systemd/system/jenkins.service
Environment="JENKINS\_HOME=/data/jenkins"
WorkingDirectory=/data/jenkins
Environment="JENKINS\_PORT=18081"
//使unit文件生效
systemctl daemon-reload
4、启动jenkins
启动jenkins
systemctl start jenkins
- 启动jenkins时报错:Job for jenkins.service failed because a timeout was exceeded.
- 解决问题:修改/data/jenkins/hudson.model.UpdateCenter.xml文件(第一次启动jenkins时会自动生成该文件),再重启服务。
修改前
<?xml version='1.1' encoding='UTF-8'?>
<sites>
` `<site>
` `<id>default</id>
` `<url>https://updates.jenkins.io/update-center.json</url>
` `</site>
</sites>
修改后
<?xml version='1.1' encoding='UTF-8'?>
<sites>
` `<site>
` `<id>default</id>
` `<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
` `</site>
<a name="efzq-1705297820091"></a></sites>
5、访问jenkins
- (1)、登录jenkins
- (2)、首次登录时跳过插件安装
3、安装jenkins插件的方法
- Jenkins自身提供的功能并不多,很多功能是通过插件实现的。
3.1、在线安装插件
- jenkins默认的是拉取官方的插件仓库,但官方仓库在国外,因此要将官方的仓库换成国内的。
3.1.1、使用国内的插件源
1、在jenkins界面上修改仓库源
- 将https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json复制到红框里,该信息会写到/data/jenkins/hudson.model.UpdateCenter.xml文件中
- Jenkins --> Manage Jenkins --> Manage Plugins --> [Advanced]
2、修改插件文件
//这个文件有插件的信息
//这个文件有插件的信息
]# sed -i 's#https://www.google.com#https://www.baidu.com#g' /mydata/jenkins/updates/default.json
]# sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' /mydata/jenkins/updates/default.json
3、重启jenkins服务
3.1.2、安装插件
- Jenkins --> Manage Jenkins --> Manage Plugins --> [Available]
3.2、离线安装
1、查找要安装的插件及其版本
- 下载插件的地址:https://updates.jenkins-ci.org/download/plugins
- 搜索插件的地址:https://plugins.jenkins.io/
- 因为我安装的是jenkins-2.277.11.0.24
2、安装插件
(1)将插件安装包放到/data/jenkins/plugins目录中
(2)重启jenkins服务
4、汉化插件
- 可以使用"Localization: Chinese (Simplified)"
5、用户权限管理插件
- 可以使用"Role-based Authorization Strategy"
5.1、创建用户
- Jenkins --> Manage Jenkins --> Manage Users
- 创建2个用户,分别是hh01、hh02。
- 创建2个用户,分别是hh01、hh02。
5.2、基于项目矩阵授权策略
1、开启权限全局安全配置
- Jenkins --> Manage Jenkins --> Configure Global Security
- 选择"项目矩阵授权策略"的授权策略,并保存。
- 选择"项目矩阵授权策略"的授权策略,并保存。
2、对用户授权
- Jenkins --> Manage Jenkins --> Configure Global Security
5.3、基于角色的授权策略
1、开启权限全局安全配置
- Jenkins --> Manage Jenkins --> Configure Global Security
- 选择"Role-Based Strategy"的授权策略,并保存。
2、创建角色
-
Jenkins --> Manage Jenkins --> Manage and Assign Roles --> Manage Roles
- Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
- Item roles(项目角色):针对某个或者某些项目的角色
- Node roles(节点角色):节点相关的权限
-
添加以下三个角色:
- baseRole:该角色为全局角色。仅授予Overall的Read权限,是为了给所有用户授予最基本的Jenkins访问权限。
- 注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission。
- role01:该角色为项目角色。使用正则表达式绑定"item-a.*"开头的项目,并授予对项目的所有权限。即该角色只能管理"item-a.*"开头的项目
- role02:该角色为项目角色。使用正则表达式绑定"item-b.*"开头的项目,并授予对项目的所有权限。即该角色只能管理"item-b.*"开头的项目
- baseRole:该角色为全局角色。仅授予Overall的Read权限,是为了给所有用户授予最基本的Jenkins访问权限。
3、给用户分配角色
- Jenkins --> Manage Jenkins --> Manage and Assign Roles --> Assign Roles
- 绑定规则如下:
- hh01用户分别绑定baseRole和role01角色
- hh02用户分别绑定baseRole和role02角色
4、创建项目测试权限
- Jenkins --> New Item
- 用管理员admin创建两个项目,分别为item-a-01和item-b-01。
- 测试结果是:
- hh01用户:只能看到item-a-01项目
- hh02用户:只能看到item-b-01项目
6、凭据管理插件
6.2、使用凭据
- 从GitLab上克隆代码有两种方法:http和ssh。
- http:可以使用"Username with password"凭据。
- ssh:可以使用"SSH Username with private key"凭据。
- Jenkins从Gitlab拉取源代码,需要安装Git插件以及在Jenkins服务器上安装Git工具
6.2.1、使用http协议从gitlab上拉取代码
1、添加凭据
- Jenkins --> Manage Jenkins --> Manage Credentials --> Stores scoped to Jenkins:[Jenkins] --> 全局凭据 (unrestricted) --> Add Credentials
2、使用凭据
- 创建一个自由风格的新项目test-gitlab-http,然后使用git插件去GitLab上拉取源代码。
3、运行该项目
- 可以看到Jenkins将源代码从GitLab上拉取到了Jenkins服务器上的/data/jenkins/workspace/test-gitlab-http。
6.2.2、使用ssh协议从gitlab上拉取代码
1、创建ssh密钥
ssh-keygen -t rsa
2、将ssh的公钥放到Gitlab中
- 使用管理员用户root登录GitLab --> 点击头像 --> Edit Profile --> SSH Keys
- 将id_rsa.pub文件中的内容复制到这里,点击"Add Key"。
- 将id_rsa.pub文件中的内容复制到这里,点击"Add Key"。
3、将ssh的私钥放到Jenkins中
- Jenkins --> Manage Jenkins --> Manage Credentials --> Stores scoped to Jenkins:[Jenkins] --> 全局凭据 (unrestricted) --> Add Credentials
- 将id_rsa文件中的内容复制到这里。
4、使用凭据
- 创建一个自由风格的新项目test-gitlab-ssh,然后使用git插件去GitLab上拉取源代码。
5、运行该项目
- 可以看到Jenkins将源代码从GitLab上拉取到了Jenkins服务器上的/data/jenkins/workspace/test-gitlab-ssh。
7、配置全局工具
7.1、添加全局工具
- Jenkins --> Manage Jenkins --> Global Tool Configuration
- Name:任意字符串
- HOME/Path:工具在Jenkins服务器上的位置。
1、添加jdk工具
2、添加git工具
3、添加maven工具
7.2、为工具配置全局变量
- Jenkins --> Manage Jenkins --> Configure System
- 添加三个全局变量JAVA_HOME、M2_HOME、PATH+EXTRA
- JAVA_HOME:工具在Jenkins服务器上的位置
- M2_HOME:工具在Jenkins服务器上的位置
- PATH+EXTRA:$M2_HOME/bin
- 添加三个全局变量JAVA_HOME、M2_HOME、PATH+EXTRA
分类: DevOps-Jenkins
Jenkins安装插件失败、安装慢的解决方案!!!最新可用!!!_解决jenkins安装插件很慢的问题(linux)-CSDN博客
遇见的问题及解决方式
一、解决插件可用列表空白没有插件的问题
http://服务器IP地址:8080/jenkins/pluginManager/available
更新Update Site URL为国内清华镜像的地址
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
点击Check now更新完成后,可用插件列表就有插件了
但是目前点击安装插件还是会失败报错!!!
二、解决插件安装问题,加速Jenkins安装插件速度
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
所以解决办法就把官方插件地址,替换成清华镜像的地址
使用 tomcat 加载的war包的形式启动的Jenkins的工作目录在 /root/.jenkins
vim /root/.jenkins/updates/default.json
先输入:然后再粘贴下面:后边的命令,然后回车, 不要写两个冒号!
这里的清华镜像地址不可以使用https,否则依旧报错
:1,$s/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g
打开重启页面(http://localhost:8080/jenkins/restart)点击yes
等待重启,登录后再次尝试安装插件
注意!链接内的localhost替换成你的服务器IP
建议备份修改后的default.json文件,当/root/.jenkins/updates/下的此文件因不可控因素自动更新后,可以直接覆盖文件,避免重复修改。
centos7安装jenkins报错:failed to find a valid Java installation
1、使用systemctl start jenkins启用失效并报错:Job for jenkins.service failed because the control process exited with error code. See “systemctl status jenkins.service” and “journalctl -xe” for details
2、使用命令查看journalctl -xe 发现报错:jenkins: failed to find a valid Java installation
3、经查找资料发现systemctl 启动时不会使用etc/init.d/jenkins配置文件,而会使用/usr/lib/systemd/system/jenkins.service文件
编辑该文件,查看java相关配置,找到如下配置:
将注释打开后修改为jdk的实际安装位置
4、加载后,systemctl daemon-reload ,然后重启jenkins,问题解决
5、如果还是不行,则可能是java环境问题,jenkins 估计只会去/usr/bin/java找jdk
ln -s /usr/local/java/jdk-11.0.4/bin/java /usr/bin/java
如何实现手动安装jdk后安装jenkins启动报错:jenkins: failed to find a valid Java install的具体操作步骤
需要在 /usr/lib/systemd/system/jenkins.service中执行
Environment="JAVA\_HOME=/usr/lib/java"
执行建立软连接
ln -s /opt/jdk-11.0.21/bin/java /usr/bin/java
systemctl daemon-reload
不用软连接时执行
rm /usr/bin/java
修改jenkins日志及安装包缓存的存储位置
vi /etc/init.d/jenkins
找到PARAMS=“–logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war” 注释掉
并加入*
JAVA\_CMD="$JENKINS\_JAVA\_CMD $JENKINS\_JAVA\_OPTIONS -DJENKINS\_HOME=$JENKINS\_HOME -jar $JENKINS\_WAR"
PARAMS="--logfile=/mydata/jenkins/logs/jenkins.log --webroot=/mydata/jenkins/war"
logfile 日志所在路径
webroot war的缓存路径
报错是 Exception in thread “main” java.lang.IllegalArgumentException: Unrecognized option: --handlerCountMax=100
简单研究了一下Jenkins,发现学习的东西还是要实际用起来才会有了解,不然光懂理论知识,其实还是会有很多坑的。
我用的是Centos7 安装Jenkins,在控制台输入service jenkins start 控制台并没有直接报错,然后我去/var/log/jenkins/jenkins.log (这事默认的日志目录,如果进行过修改,去找这个文件就可以),查看报错信息为Exception in thread “main” java.lang.IllegalArgumentException: Unrecognized option: --handlerCountMax=100 然后百度查完之后,发现需要进行一些内容上的注销。在/etc/init.d/jenkins,进行这个注释或者删除
[ -n "$JENKINS\_HANDLER\_IDLE" ] && PARAMS="$PARAMS --handlerCountMaxIdle=$JENKINS\_HANDLER\_IDLE"
[ -n "$JENKINS\_HANDLER\_MAX" ] && PARAMS="$PARAMS --handlerCountMax=$JENKINS\_HANDLER\_MAX"
然后再重新启动,就发现没有报错,可以启动起来
转发一下学习大佬接错步骤的连接错误解决办法的大佬链接
需要在 /usr/lib/systemd/system/jenkins.service
TimeoutStartSec=0systemctl daemon-reload // 重新加载配置文件
centos7安装镜像解压配置
解压安装镜像
rpm -ivh jenkins-2.346-1.1.noarch.rpm
建立软连接
ln -s /opt/jdk-11.0.21/bin/java /usr/bin/java
重新加载
systemctl daemon-reload
修改此文件的权限
chmod -R 777 /opt/jdk-11.0.21/
` `chmod -R 777 /opt/jdk-11.0.21/bin/java
` `将/var/cache/jenkins/war/ 复制至 /mydata/jenkins/war/
cp -r /var/cache/jenkins/war/\* /mydata/jenkins/war/
创建多级文件夹
mkdir -p /my/dahda
创建文件
touch a.txt
find / -name git 命令会在整个文件系统中查找名为 git 的文件或目录,并输出它们的路径。这个命令需要使用 sudo 命令以管理员权限运行,以便在整个文件系统中搜索
find / -name git
会在系统的 $PATH 环境变量指定的路径中查找 git 命令的位置,并输出该位置的绝对路径。执行一下命令
which git
如果 git 命令已经被安装并且 $PATH 环境变量包含了 git 命令的路径,那么该命令将输出 git 命令的绝对路径,例如 /usr/bin/git
查询81端口占用的程序 PID
lsof -i :81 安转 yum install lsof
查杀进程
kill -9 PID / kill -15 PID
chmod -R 777 /mydata/jenkins/
查看系统日志的
journalctl -f -n 1000
启动jenkins
systemctl stop jenkins
systemctl status jenkins
systemctl start jenkins
遇见的问题解决
[Jenkins] Failed to start Jenkins Continuous Integration Server
如果你在安装Jenkins的时候,总是出现下方的错误,而且配置了jdk路径也无法解决,请参考本文的解决办法:
错误信息:
jenkins.service - Jenkins Continuous Integration Server
` `Loaded: loaded (/usr/lib/systemd/system/jenkins.service; disabled; vendor preset: disabled)
` `Active: failed (Result: start-limit) since Tue 2022-06-07 17:09:46 CST; 20s ago
` `Process: 5706 ExecStart=/usr/bin/jenkins (code=exited, status=1/FAILURE)
` `Main PID: 5706 (code=exited, status=1/FAILURE)
Jun 07 17:09:45 k8s-master systemd[1]: jenkins.service: main process exited, code=exited, status=1/FAILURE
Jun 07 17:09:45 k8s-master systemd[1]: Failed to start Jenkins Continuous Integration Server.
Jun 07 17:09:45 k8s-master systemd[1]: Unit jenkins.service entered failed state.
Jun 07 17:09:45 k8s-master systemd[1]: jenkins.service failed.
Jun 07 17:09:46 k8s-master systemd[1]: jenkins.service holdoff time over, scheduling restart.
Jun 07 17:09:46 k8s-master systemd[1]: Stopped Jenkins Continuous Integration Server.
Jun 07 17:09:46 k8s-master systemd[1]: start request repeated too quickly for jenkins.service
Jun 07 17:09:46 k8s-master systemd[1]: Failed to start Jenkins Continuous Integration Server.
Jun 07 17:09:46 k8s-master systemd[1]: Unit jenkins.service entered failed state.
Jun 07 17:09:46 k8s-master systemd[1]: jenkins.service failed.
主要看这里,如果你按照普遍的方法解决不了,那一定是报错信息不一样,Process: 5706 ExecStart=/usr/bin/jenkins (code=exited, status=1/FAILURE)
解决办法(一)
首先安装jdk信息,如果你服务器上已经安装了jdk8,那么就执行
yum install fontconfig java-8-openjdk
可能会出现已经存在或者其他的提示,不用管,也不影响。
接下来完善Jenkins加载到jdk的配置,
两种办法:
方法一
可以直接在配置文件配置 /etc/init.d 下的jenkins文件中增加现有jdk的路径:
记得systemctl daemon-reload一下
方法二
也可以直接创建软链接,就像windows创建快捷方式一样简单,不用的时候可以删除这个软链接即可。
ln -s /usr/local/java/jdk1.8.0_291/bin/java /usr/bin/java
随后再次启动Jenkins即可
systemctl start jenkins
解决办法(二)
如果不想卸载,那么你也可以不使用systemctl的方式去启动暂停Jenkins,直接用Jenkins自带的服务启动,其实systemctl最终也是执行的这个命令。
cd /etc/init.d
# 启动
./jenkins start
# 停止
./jenkins stop
# 状态
./jenkins status
解决办法(三)
如果按照上边的方法和网上其他的方法都无法解决,你可以卸载了重新按照官方的步骤坐下来,也是可以的。
好啦,至此,问题解决,还解决不了,那就自求多福吧。
卸载jenkins
卸载jenkins
[root@localhost jenkins]# rpm -e jenkins [root@localhost jenkins]# rpm -ql jenkins [root@localhost jenkins]# find / -iname jenkins | xargs -n 1000 rm -rf
ln -s /usr/local/java/jdk1.8.0_291/bin/java /usr/bin/java
随后再次启动Jenkins即可
systemctl start jenkins
#### 解决办法(二)
如果不想卸载,那么你也可以不使用systemctl的方式去启动暂停Jenkins,直接用Jenkins自带的服务启动,其实systemctl最终也是执行的这个命令。
cd /etc/init.d
启动
./jenkins start
停止
./jenkins stop
状态
./jenkins status
解决办法(三)
[外链图片转存中...(img-bbblZFRd-1705477868321)]
如果按照上边的方法和网上其他的方法都无法解决,你可以卸载了重新按照官方的步骤坐下来,也是可以的。
好啦,至此,问题解决,还解决不了,那就自求多福吧。
##### [ 卸载](https://testerhome.com/topics/36098?order_by=created_at&)**jenkins**
> ### [ 卸载](https://testerhome.com/topics/36098?order_by=created_at&)**jenkins**
>
> ```
> [root@localhost jenkins]# rpm -e jenkins
>
> [root@localhost jenkins]# rpm -ql jenkins
>
> [root@localhost jenkins]# find / -iname jenkins | xargs -n 1000 rm -rf
> ```
更多推荐
所有评论(0)