ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

持续集成系统Jenkins入门

2021-10-12 09:33:03  阅读:279  来源: 互联网

标签:插件 8080 入门 集成系统 agent jenkins Jenkins 节点


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。

jdk 下载链接:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u282b08.tar.gz

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的性能,是一场灾难。这里插件建议按需使用。
跳过默认的插件安装,仅选择中文社区插件安装。
image
● 创建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)
image
粘贴上个步骤2的复制内容。(https://updates.jenkins-zh.cn/update-center.json)
点击立即获取。
image

4.安装Jenkins Slave

系统设置 > 节点管理 > 新建节点
image
● 填写节点信息
image
● 下载agent.jar
image

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系统用户目录

标签:插件,8080,入门,集成系统,agent,jenkins,Jenkins,节点
来源: https://www.cnblogs.com/cndevops/p/15396239.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有