linux安装jenkins、docker安装jenkins、k8s安装Jenkins

前言

环境:centos7.9

什么是 jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成 。Jenkins 提供了数百个插件来支持构建、部署和自动化任何项目。Jenkins 是一个独立的开源自动化服务器,可用于自动化与构建、测试、交付或部署软件相关的各种任务。
jenkins官网:https://www.jenkins.io/

yum安装稳定版本Jenkins

[root@git ~]#  rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
[root@git ~]#  yum install epel-release
[root@git ~]#  yum install java-11-openjdk-devel
[root@git ~]#  yum install jenkins

#下载Jenkins的官方yum仓库
[root@git ~]# sudo wget -O /etc/yum.repos.d/jenkins.repo \
				https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
[root@git ~]# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key		#导入key
[root@git ~]# sudo yum install epel-release java-11-openjdk-devel						#安装epel解决daemonize依赖、jdk11
[root@git ~]# sudo yum info jenkins														#查看最新稳定版jenkins							
Loaded plugins: fastestmirror
Available Packages
Name        : jenkins
Arch        : noarch
Version     : 2.319.2
Release     : 1.1
Size        : 69 M
Repo        : jenkins
Summary     : Jenkins Automation Server
URL         : http://jenkins.io/

[root@git ~]# sudo yum install jenkins													#安装jenkins
[root@git ~]# sudo systemctl daemon-reload

启动jenkins

[root@git ~]# systemctl start jenkins.service											#启动jenkins									
[root@git ~]# systemctl status jenkins.service											#查看状态,发现jenkins端口是8080
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (running) since Wed 2022-02-02 15:51:00 CST; 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6984 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/jenkins.service
           └─6988 /etc/alternatives/java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --debug=5 --...

Feb 02 15:51:00 git systemd[1]: Starting LSB: Jenkins Automation Server...
Feb 02 15:51:00 git jenkins[6984]: Starting Jenkins [  OK  ]
Feb 02 15:51:00 git systemd[1]: Started LSB: Jenkins Automation Server.
[root@git ~]#

jenkins的默认用户密码

根据systemctl status jenkins发现jenkins的日志文件位于:/var/log/jenkins/jenkins.log,查看该日志文件,发现jenkins默认生成了一个管理员用户admin和其默认密码位于:/var/lib/jenkins/secrets/initialAdminPassword

修改jenkins的默认端口

jenkins的默认端口是8080,通过systemctl status jenkins就能看到,但是如果想修该端口那该怎么办?笔者也是找了一圈最后才发现yum安装的jenkins,果然,配置文件都放得贼隐蔽。端口居然在/etc/sysconfig/jenkins文件中定义的。

#偶然发现/etc/init.d/下居然有jenkins的服务文件,然后查看端口是不是在这定义的,发现倒是有一个"$JENKINS_PORT"变量
[root@git WEB-INF]# cat  /etc/init.d/jenkins | grep PORT
[ -n "$JENKINS_PORT" ] && PARAMS="$PARAMS --httpPort=$JENKINS_PORT"
[ -n "$JENKINS_HTTPS_PORT" ] && PARAMS="$PARAMS --httpsPort=$JENKINS_HTTPS_PORT"
[ -n "$JENKINS_HTTP2_PORT" ] && PARAMS="$PARAMS --http2Port=$JENKINS_HTTP2_PORT"

#既然有定义$JENKINS_PORT变量,那肯定有定义变量的地方,继续往文件前面查找,然后居然发现引入了一个配置文件JENKINS_CONFIG=/etc/sysconfig/jenkins
[root@git WEB-INF]# cat /etc/sysconfig/jenkins | grep 8080						#固然,端口就在这个配置文件中定义的
## Default:     8080
JENKINS_PORT="8080"

[root@git WEB-INF]# systemctl restart jenkins									#修改默认端口之后需要重启

web页面登陆

浏览器直接输入IP+端口即可,如果你没改端口的话默认端口就是8080,然后安装页面提示进行即可,建议登陆之后修改密码。
在这里插入图片描述

dockers安装jenkins

下面讲dockers安装Jenkins,首先,必须先安装dockers,docker-compose

#下载官网页面显示的lts长期支持的版本
docker pull jenkins/jenkins:2.361.3-lts
#创建目录,使用docker-compose安装jenkins 
cd /usr/local/
mkdir docker/jenkins -p
mkdir docker/data -p
cd jenkins/
vim docker-compose.ymal
version: "3.1"
services:
  jenkins:
    image: jenkins/jenkins:2.361.3-lts
    container_name: jenkins
    ports:
      - 8080:8080				#宿主机8080映射到容器8080端口
      - 50000:50000
    volumes:					#设置卷映射到本地目录
      - /usr/local/docker/data:/var/jenkins_home/

#设置我们的数据卷目录权限,不然等下Jenkins启动会报权限不足的
chmod 777 -R /usr/local/docker/data 或者  chown  -R 1000:1000 /usr/local/docker/data
#启动jenkins	
docker-compose -f docker-compose.ymal up -d
#查看日志我们知道,Jenkins的初始密码位于initialAdminPassword 文件
docker logs -f jenkins	
容器目录/var/jenkins_home/secrets/initialAdminPassword 映射本地目录--> /usr/local/docker/data/secrets/initialAdminPassword

#网页登陆
http://192.168.118.143:8080/

修改Jenkins的默认下载插件地址

Jenkins是由大量的插件构成的,第一次登录的时候也会下载大量的插件,默认的插件是从官网下载的,由于官网下载特别慢,我们可以修改其默认的下载地址为国内镜像地址:

#这里做了数据卷映射,所以直接修改,当然你也可以进入容器里面的/var/jenkins_home/来修改
vim /usr/local/docker/data/hudson.model.UpdateCenter.xml
地址改为:http://mirror.xmission.com/jenkins/updates/update-center.json

重启Jenkins即可。

k8s 安装Jenkins(推荐)

官网:https://www.jenkins.io/doc/book/installing/kubernetes/
这里使用helm安装:
# 配置Jenkins的helm仓库
helm repo add jenkinsci https://charts.jenkins.io
helm repo update
helm search repo jenkinsci

kubectl create  ns kube-ops
 # 安装sa,下载不了直接打开网址复制即可
wget -O jenkins-sa.yaml https://raw.githubusercontent.com/installing-jenkins-on-kubernetes/jenkins-sa.yaml
kubectl -n kube-ops apply -f jenkins-sa.yaml

# 官网的教程是直接下载一个values.yaml,然后在线安装jenkins的,这里我们可以把chart下载下来:
helm pull jenkinsci/jenkins --version=5.1.4
tar xf jenkins-5.1.4.tgz
cd jenkins
vim values.yaml
controller:
  serviceType: NodePort		# 改为NodePort类型
  nodePort: 30000			# 定义端口
persistence:				
  storageClass: nfs-storageclass	#指定使用的存储类
# 安装Jenkins
helm install jenkins -n kube-ops jenkins/ 
# 获取admin用户登录密码
kubectl exec --namespace kube-ops -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
# 获取登录url
export NODE_PORT=$(kubectl get --namespace kube-ops -o jsonpath="{.spec.ports[0].nodePort}" services jenkins)
export NODE_IP=$(kubectl get nodes --namespace kube-ops -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
# 成功登录jenkins之后,安装中文插件

# 这里发现一个问题,就是admin用户修改密码,重启jenkins之后其密码会还原为初始密码,而新建一个普通用户,重启jenkins后其密
# 码仍然是设置的密码,为什么admin的密码没有持久化下来这点不详。jenkins的 sts 资源文件只挂载持久化了/var/jenkins_home目录。
# 所以,重启jenkins之后可能登录不了,获取admin用户的初始密码登录即可:kubectl exec --namespace kube-ops -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值