其实一直想把jenkins 的笔记整理下,介于公司这次升级jenkins2.0 ,根据自己部署的一些经验,我把它整理成笔记。 之前我们的jenkins1.0 时代 还一直停留在 free style 或者 maven 风格的项目,随着项目的日益增多,环境越来越复杂,需求多,差异化的配置错综复杂,公司产品线大升级;是想着好好的把jenkins 平台给规划下做下升级,兼容更多的场景; 于是,就有了jenkins2.0 的一个探索,截止发文前,已投入生产实践中,本文我更多的还是来阐述分享点jenkins2.0 中带来的一些好的功能点,想法;同时也给大家规避类一些问题。 古代治学总结有人生三境界,在我看来,jenkins 使用接入亦有三个阶段,这也是每一个运维人员应用 jenkins 所必须要经历的。 第一阶段:初接触,有很多不熟悉不了解,应用场景也大多是依赖手工点点点维护的 free style 或者 maven 风格的项目,通过配置一些参数,结合脚本进行项目的构建与发布。这种维护方式其实也是 jenkins 在 1.0 时代的普遍使用姿势。它的最大弊端在于一切参数都要配置化,当维护的项目数量增多的时候,又遇到某些普遍性需要更改的地方,那么维护起来就是一场灾难了。 第二阶段:慢慢往后深入,接触越来越多,逐渐开始了解 pipeline,亦即 jenkins 在 2.0 时代提出的一个新概念:配置即代码,或者说代码即配置。我们可以不必点点点勾选过多地配置项,只需通过代码定义即可实现相同的效果。只不过据我了解,很多人在这个阶段,因为对流水线基础语法掌握程度不够,因此还有很多人是手工配置参数,然后再结合 jenkinsfile 来进行构建发布的,其实这种方式,并没有真正体悟到 2.0 的设计精髓,自然也无法吃到这波技术红利了。 第三阶段:你不应该满足于维护大量 jenkinsfile 的现状中,过多的 jenkinsfile 就像一个又一个肥大的肿块儿一般,对于后期的二次维护,都是极大的挑战。你可能听过共享库,渐渐你开始了解共享库,尝试共享库,最后将同一个类别的 jenkinsfile 进行逻辑抽象,每个项目都变成了另外一种变相的参数化构建,从而接入项目只需配置对应的 引导文件 即可,这种方式能够极大地简化 jenkins 的运维使用难度,对项目交付效率的提升有极大的帮助。 上图,是我司CI/CD 的一个发展阶段,在jenkins2.0 时候,我们做了一个大的变动,使用共享库,将同一个类别的 jenkinsfile 进行逻辑抽象,每个项目都变成了另外一种变相的参数化构建,只需要维护每个项目各自的参数,也就是引导文件, 即可对项目进行交付,另外jenkins2.0 上涉及的一切配置、环境、基础设施、数据变更都纳入版本控制范围。一切皆代码,这也是GitOps的理念 2.部署条件 2.1 官网及下载jenkins官方网站:Jenkins Stable (LTS) : 稳定版本,长期支持 (LTS) 发布基线每 12 周从常规版本流中选择一次。每 4 周发布一次稳定版本 官网: jenkins requires Java 11 or 17 since jenkins 2.357 and LTS 2.361.1 Java11 2.2 服务器硬件要求小型团队的推荐硬件配置: 4 GB+ of RAM 50 GB+ of drive space 50 GB+ 驱动器空间 3. 安装部署 3.1 本次安装环境信息 名称版本Centos7 Centos7.9 【8核16g500G 】 jenkins jenkins 2.401.1 LTS Java Openjdk11.0.2 3.2 部署jdk 下载地址 Copy 3.3 部署jenkins 3.3.1 创建jenkins软件工作目录,并下载最近的LTS war包 #建立jenkins软件工作目录 [root@localhost application]# mkdir -p /home/application/jenkins #下载最近的LTS war包 [root@localhost application]# wget -P /home/application/jenkinsCopy 3.3.2 创建jenkins 主目录如果不指定jenkins 主目录的话,默认是在 /root/.jenkins 目录下 ; 因为咱这里给jenkins 单独创建了/home/application/jenkins工作目录,就需要指定下 官方阐述了更改主目录的三种方法: jenkins储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改: 使用你Web容器的管理工具设置jenkins_HOME环境参数. 在启动Web容器之前设置jenkins_HOME环境变量. (不推荐)更改jenkins.war(或者在展开的Web容器)内的web.xml配置文件 这里我们使用systemd 去管理jenkins 的启动停止,在Environment 中添加 JENKINS_HOME=/home/application/jenkins 3.3.3 使用systemd管理jenkins,并添加开机自启动 #使用systemd管理jenkins,并添加开机自启动 [root@localhost ~]# vim /etc/systemd/system/jenkins.service [Unit] Description=Jenkins Agent After=network.target [Service] User=root Environment="JENKINS_HOME=/home/application/jenkins" ExecStart=/home/application/jdk-11.0.2/bin/java -jar /home/application/jenkins/jenkins.war -Djava.awt.headless=true Restart=always RestartSec=3 [Install] WantedBy=multi-user.target [root@localhost jenkins]# chmod +x /etc/systemd/system/jenkins.service #添加开机自启动 [root@localhost jenkins]# systemctl enable jenkinsCopy 3.3.4 启动jenkins [root@localhost ~]# systemctl start jenkins [root@localhost ~]# systemctl status jenkins ● jenkins.service - jenkins Agent Loaded: loaded (/etc/systemd/system/jenkins.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2023-06-05 05:01:48 EDT; 3s ago Main PID: 27603 (java) CGroup: /system.slice/jenkins.service └─27603 /home/application/jdk-11.0.2/bin/java -jar /home/application/jenkins/jenkins.war -Djava.awt.headless=true Jun 05 05:01:48 localhost.localdomain systemd[1]: Started jenkins Agent. Jun 05 05:01:49 localhost.localdomain bash[27603]: Running from: /home/application/jenkins/jenkins.war Jun 05 05:01:49 localhost.localdomain bash[27603]: webroot: /root/.jenkins/war Jun 05 05:01:49 localhost.localdomain bash[27603]: 2023-06-05 09:01:49.735+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file Jun 05 05:01:52 localhost.localdomain bash[27603]: 2023-06-05 09:01:52.031+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath Jun 05 05:01:52 localhost.localdomain bash[27603]: 2023-06-05 09:01:52.127+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-10.0.13; built: 2022-12-07T20:13:20.134Z; git: 1c2636ea05c0ca8de1ffd6ca7f3a98ac084c766d; jvm 11.0.2+9-LTS Hint: Some lines were ellipsized, use -l to show in full.Copy 3.3.5 启动解锁jenkins大概一两分钟后,可以看到日志输出,jenkins已经初始化安装成功,并且给出了管理员admin的登陆密码为946312e6f67746aba40950417e9c70b4 当然也可在/root/.jenkins/secrets/initialAdminPassword 文件中看到密码 [root@localhost ~]# systemctl status jenkins ● jenkins.service - jenkins Agent Loaded: loaded (/etc/systemd/system/jenkins.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2023-06-05 05:01:48 EDT; 2min 53s ago Main PID: 27603 (java) CGroup: /system.slice/jenkins.service └─27603 /home/application/jdk-11.0.2/bin/java -jar /home/application/jenkins/jenkins.war -Djava.awt.headless=true Jun 05 05:01:55 localhost.localdomain bash[27603]: Please use the following password to proceed to installation: Jun 05 05:01:55 localhost.localdomain bash[27603]: 946312e6f67746aba40950417e9c70b4 Jun 05 05:01:55 localhost.localdomain bash[27603]: This may also be found at: /root/.jenkins/secrets/initialAdminPassword Jun 05 05:01:55 localhost.localdomain bash[27603]: ************************************************************* Jun 05 05:01:55 localhost.localdomain bash[27603]: ************************************************************* Jun 05 05:01:55 localhost.localdomain bash[27603]: ************************************************************* Jun 05 05:02:13 localhost.localdomain bash[27603]: 2023-06-05 09:02:13.107+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization Jun 05 05:02:13 localhost.localdomain bash[27603]: 2023-06-05 09:02:13.124+0000 [id=23] INFO hudson.lifecycle.Lifecycle#onReady: jenkins is fully up and running Jun 05 05:02:14 localhost.localdomain bash[27603]: 2023-06-05 09:02:14.052+0000 [id=49] INFO h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller Jun 05 05:02:14 localhost.localdomain bash[27603]: 2023-06-05 09:02:14.053+0000 [id=49] INFO hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1 [root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword 946312e6f67746aba40950417e9c70b4Copy 4. 安装后配置 4.1 登录jenkins平台如果没有指定端口的话,默认是8080; 如果要指定端口的话,需要再启动文件里 加上 --httpPort=8888 贴入密码 选择 安装jenkins社区推荐的插件;安装过程可能会有点问题,安装失败啥的,重复安装就行,如果实在安装不下去,可以跳过,等进入到jenkins 设置界面设置代理地址即可
在这里创建一个管理员账号,到此jenkins的初始化配置已完成。 到这里安装基本上就完成了 (责任编辑:) |