1.应用场景
任何你想自动化实现的运维任务,都可以通过Jenkins执行;
● 持续集成实践
○ 集成svn/git客户端实现源代码下载检出
○ 集成maven/ant/gradle/npm等构建工具实现源码编译打包单元测试
○ 集成sonarqube对源代码进行质量检查(坏味道、复杂度、新增bug等)
● 持续部署实践
○ 集成SaltStack/Ansible实现自动化部署发布
● 自动化测试实践
○ 集成Jmeter/Soar/Kubernetes/.....
2.Jenkins安装部署
关于Jenkins的安装:
可以使用rpm/war/docker安装;
提前安装好JDK8+环境。
Jenkins采用分布式架构,分为server节点和agent节点。
server节点也是可以运行构建任务的,但我们一般使其主要来做任务的调度。(毕竟server节点挂了就都...)
agent节点专门用于任务的执行。随着现在容器的流行,可以将server、agent节点在容器或者基于Kubernetes中部署。
关于agent节点借助容器可以实现动态的资源分配等等好处。agent节点可以分为静态节点和动态节点。
静态节点是固定的一台vm虚机或者容器。
动态节点是随着任务的构建来自动创建agent节点。
2.1 安装JDK环境
如果使用rpm的方式安装的Jenkins需要提前安装好JDK,Jenkins Slave运行也需要使用JDK。
tar zxf OpenJDK8U-jdk_x64_linux_hotspot_8u282b08.tar.gz -C /usr/local
cd /usr/loca/jdk8u282-b08
pwd
vim /etc/profile
export JAVA_HOME=/usr/local/jdk8u282-b08
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
java -version
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.282-b08, mixed mode)
3.安装Jenkins Master
3.1 rpm 安装
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.277.1-1.1.noarch.rpm
rpm -ivh jenkins-2.277.1-1.1.noarch.rpm
## 配置文件/etc/sysconfig/jenkins
## service start
[root@zeyang-nuc-service jenkins]# netstat -anlpt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 16016/java
[root@zeyang-nuc-service jenkins]# service jenkins status
systemctl stop firewalld
## 访问
http://IP:8080/
访问http://IP:8080/, 打开首页之后按照提示信息, 获取/var/lib/jenkins/secrets/initialAdminPassword中的管理员密码。
Jenkins的插件使其强大, 但过多的插件会影响Jenkins的性能,是一场灾难。这里插件建议按需使用。
跳过默认的插件安装,仅选择中文社区插件安装。
● 创建admin用户
● 配置站点url
3.2 docker安装
docker pull jenkins/jenkins:2.289.3-lts-centos7
mkdir -p /data/cicd3/jenkins
chmod +x /data/cicd3/jenkins
## 指定时区
#System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
docker run -itd --name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai'" \
--privileged=true \
-v /data/cicd3/jenkins:/var/jenkins_home docker.io/jenkins/jenkins:2.289.1-lts-centos7
##FAQ
[root@zeyang-nuc-service ~]# docker logs -f jenkins
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
chmod 777 -R jenkins/
● 默认端口8080
● 配置JENKINS_HOME /var/lib/jenkins
● 配置启动用户Jenkins
● 配置插件更新源(Jenkins 中文社区源)
3.3 配置插件源
进入Jenkins首页,然后最下面(点击 Jenkins中文社区)
然后跳转到这个页面,按照图中的操作。 (2,3,4)
粘贴上个步骤2的复制内容。(https://updates.jenkins-zh.cn/update-center.json)
点击立即获取。
4.安装Jenkins Slave
系统设置 > 节点管理 > 新建节点
● 填写节点信息
● 下载agent.jar
mkdir -p /data/cicd/jenkinsagent
cd /data/cicd/jenkinsagent
wget http://192.168.1.200:8080/jnlpJars/agent.jar
## 编写启动脚本
#!/bin/bash
echo e199ecad9b95bc93277d74469256a7b4b3aa7c9d2c67916e93cdd0f93c9f9a5e > secret-file
nohup java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/build-01/jenkins-agent.jnlp -secret @secret-file -workDir "/data/cicd/jenkinsagent" >/dev/null &
## 启动agent
sh -x start.sh
ps aux | grep agent
5.Jenkins的数据目录
Jenkins采用文件存储, 其配置相关信息都保存到了XML文件中。
[root@zeyang-nuc-service jenkins]# ls -d */
caches/ jobs/ nodes/ secrets/ userContent/ war/ workspace/
fingerprints/ logs/ plugins/ updates/ users/
● caches: 系统缓存数据
● jobs: Jenkins项目作业
● nodes: Jenkins slave节点信息
● secrets: 秘钥信息
● userContent: 类似于web站点目录,可以上传一些文件
● workspace: 默认的工作目录
● fingerprints: 指纹验证信息
● logs : 日志信息
● plugins: 插件相关配置
● updates: 插件更新目录
● users: jenkins系统用户目录