Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

时间:2022-03-10 11:50:34

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

你好呀,我是小猿来也,一个刚开始折腾 Devops 的程序猿。

写在前面

前两天在池大那里看到了一段话,原话出自美团首席科学家夏华夏老师,具体内容我贴到了下面。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

对于图片里的内容你们是怎么认为的呢?我呢,刚好最近在和同事一起折腾 jenkins,我觉得这里说的就是一个类 "Devops" 的化处理思想,Devops改变世界。

用 jenkins折腾 各种 Devops 的使用场景,还挺好玩的。

这两天想着在自己的电脑上也装一个 jenkins 的环境。

查了下生产环境的 jenkins 版本是2.263.4。为了尽量和生产环境的 jenkins 保持一致,强迫症的我决定在自己的笔记本上也装这个版本。

一、安装前的挣扎

因为手里的笔记本是 macOS,所以就先去 jenkins 官网上翻了翻。

然后通过 https://www.jenkins.io/zh/download/

进入到 https://www.jenkins.io/download/lts/macos/ 这个页面。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

这个页面给出的指示表明我们可以使用brew install jenkins-lts@YOUR_VERSION来安装我想要的2.263.4这个版本。

怀着很期待的心情,我决定试一试。

$ brew install jenkins-lts@2.263.4
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
Error: No available formula or cask with the name "jenkins-lts@2.263.4".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching taps on GitHub...
Error: No formulae found in taps.

然并卵,结果我发现 Homebrew 找不到这个版本,是我打开的方式不对吗?有点尴尬哈。

https://www.jenkins.io/download/lts/macos/ 这个页面继续往下看,

结果在下图中红框的位置发现了 macOS 原生安装包的下载入口 https://get.jenkins.io/osx-stable/

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

于是进入 https://get.jenkins.io/osx-stable/ 的页面

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

翻了一遍发现这里提供的最低版本是jenkins-1.409.1.pkg,最高版本是jenkins-2.235.2.pkg,没有我需要的2.263.4这个版本,再次尴尬。

于是我再次回到 https://www.jenkins.io/download/lts/macos/ 这个页面,这个页面里有一行文字引起了我的注意。

Native Installer (deprecated)

然后我这才意识到官方好像应该是不再支持用新的 pkg 原生包安装 jenkins 了。

同样在官方博客的网页

Jenkins macOS native installer deprecation:https://www.jenkins.io/blog/2019/11/25/macos-native-installer-deprecation/ 中,

的确有弃用 jenkins macOS 本机安装程序的说明。

网页中有一段说明我截了图,大致是的意思是说作为对弃用 jenkins macOS 本机安装程序的替代,mocOS 下你可以直接使用 War 包或者使用 Homebrew 来安装管理 jenkins。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

There are two Homebrew formulas for Jenkins: jenkins for Weekly releases and jenkins-lts for LTS ones.

官方博客中指出可以使用brew install jenkins安装 jenkins 的最新每周版本。

使用brew install jenkins-lts安装 jenkins 的最新LTS版本。

同样指出可以使用brew install jenkins@YOUR_VERSION安装 jenkins 特定的每周版本。

所以现在根据官方博客的说法

我们可以使用brew install jenkins-lts安装 jenkins 的最新LTS版本。

可以使用brew install jenkins-lts@YOUR_VERSION安装 jenkins 的特定的LTS版本。

可以使用brew install jenkins安装 jenkins 的最新每周版本。

可以使用brew install jenkins@YOUR_VERSION安装 jenkins 的特定的每周版本。

文章开头的时候我们已经尝试了用brew install jenkins-lts@2.263.4来进行安装,结果根本不好使。

现在我打算尝试下用brew install jenkins@2.263.4来进行安装。

$ brew install jenkins@2.263.4
Updating Homebrew...
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
Error: No available formula or cask with the name "jenkins@2.263.4".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching taps on GitHub...
Error: No formulae found in taps.

同样也无法正常进行安装。

好吧本来想偷个懒,结果。。。

我们就乖乖的使用 war 包的方式进行安装吧。

war 包下载 的入口在官网的下载网页中,就是下图中我圈出来的位置。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

进入之后发现从1.409.12.289.1之间所有的lts版在这里都可以下载,当然也包含我想要的2.263.4版本。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

这个时候我们可以选择指定的版本对应的链接,进入对应的页面去直接下载,当然我这里选择的是 2.263.4

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

我们也可以选择使用下面的命令来下载。

wget https://get.jenkins.io/war-stable/2.263.4/jenkins.war

二、安装jenkins

程序账号创建

# 创建组
sudo dscl . create /Groups/jenkins gid 5555
# 创建用户
sudo dscl . create /Users/jenkins uid 7777
sudo dscl . create /Users/jenkins gid 5555
sudo dscl . create /Users/jenkins shell /bin/bash
# 修改用户的密码
sudo passwd jenkins
# 创建用户的home目录
sudo mkdir /Users/jenkins
# 用户的home目录宿主
sudo chown -R jenkins:jenkins /Users/jenkins
# 声明用户的home目录
sudo dscl . create /Users/jenkins home /Users/jenkins

macOS可以使用dscl 管理用户,了解更多你可以点击查看

准备jenkins的运行目录

# 切换当前用户为 jenkins
$ su - jenkins
jenkins$ whoami
jenkins # 准备程序安装包目录
jenkins$ pwd
/Users/jenkins
jenkins$ mkdir soft
jenkins$ ls
soft
jenkins$ cd soft/
jenkins$ wget https://get.jenkins.io/war-stable/2.263.4/jenkins.war
jenkins$ ls
jenkins.war # 准备程序运行目录
jenkins$ cd /Users/jenkins/
jenkins$ mkdir 2.263.4
jenkins$ ls
2.263.4 soft

启动jenkins

jenkins$ java -jar -Xmx4096m -DJENKINS_HOME=/Users/jenkins/2.263.4 /Users/jenkins/soft/jenkins.war --httpPort=9999
Running from: /Users/jenkins/soft/jenkins.war
webroot: System.getProperty("JENKINS_HOME")
.
.
.
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation: ecc86b654f3a4e0bbeb4e2df962839a0 This may also be found at: /Users/jenkins/2.263.4/secrets/initialAdminPassword
.
.
.

启动的过程中我们可以看到 jenkins 管理员用户的初始化密码会写在的

${JENKINS_HOME}/secrets/initialAdminPassword中,

我的这个实验是在/Users/jenkins/2.263.4/secrets/initialAdminPassword这个文件中,你在实验过程可能会稍有不同。

三、初识jenkins

入门指引

jenkins 启动完成之后,我们访问 http://localhost{port}/ (我这里的端口是9999)即可进入jenkins的页面。

首次访问即可看到 jenkins 的入门指引,接下来你会依次看到下面的界面。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

这个时候我们可以选择使用admin账户继续(jenkins 安装时自动创建 admin 用户)也可以选择创建新的 admin 用户,这里我们选择使用已有的 admin 账户继续。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

你已跳过创建admin用户的步骤。要登录请使用用户名 "admin" 及用于访问安装向导的管理员密码。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

点击开始使用 jenkins

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

首页的中间部分主要提供了一些 jenkins 新手可能会用到的链接,第一个便是任务创建链接。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

然后是 agent 设置链接

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

接着是集群配置的链接

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

最后是分布式构建的相关文档的链接。

https://www.jenkins.io/redirect/distributed-builds

https://wiki.jenkins.io/display/JENKINS/Distributed+builds

主要菜单

首页的左边是常用的功能菜单的链接。依次分别是"新建Item","用户列表","构建历史","Manage Jenkins","My Views"等。

我们先看下"Manage Jenkins"吧,点击进入。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

部分插件由于缺少依赖无法加载。要恢复这些插件提供的功能,需要修复这些问题并重启 Jenkins。

按照页面的提示我们需要重启一下就 jenkins 这样才能使插件生效,然后我们在浏览器里输入http://localhost:9999/restart

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

点击"是"之后会在"重启中"页面的页面停留片刻

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

等到 jenkins 重启完成之后,页面会自动跳转到登陆页面。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

在登陆页面中输入 admin 以及它的密码(jenkins 安装时自动创建的用户,密码信息启动日志中有)再次进入 jenkins 的首页,

发现页面的菜单显示跟重启之前有一些差别,应该是重启之后本地化插件生效了,菜单以中文的形式显示。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

再次进入到"系统管理"菜单中,我们同样发现页面中菜单以中文的形式展示出来了,同时重启之前的那一片红色的提示已经消失。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

Job Demo

准备好了 jenkins,我们赶紧来跑个 job 试下吧。例子很简单就是用 jenkins job 打印出 "jenkins hello world"。

创建job。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

配置job。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

执行job。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

job执行记录列表。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

job执行日志。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

Job正常执行并打印出“jenkins hello world”。

管理密码修改(重要)

最后由于我们一直使用的是 jenkins 安装时自动设定的密码,这个密码在上面的安装日志中有输出。

同时在${JENKINS_HOME}/secrets/initialAdminPassword这个文件中也有保存。

所以会存在一定的安全隐患,为了避免不必要的麻烦,所以这里我们需要把 admin 的密码修改一下了。

它的操作步骤是在"系统管理"里找到"管理用户"

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

点击"管理用户"的链接进入"用户列表",在给出的所有用户列表中找出 admin 用户,点击它的设置按钮。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

进入 admin 用户的信息更新页面,下拉到密码设置的区域,录入新的密码信息提交即可。

Devops 改变coding —— 安装个指定版本的 jenkins 发现和想象的不太一样?

重新访问http://localhost:9999/在跳转的登陆页面中录入 admin 用户的新密码可以正常登陆就说明 admin 用户的密码更新成功了。

最后的最后,不知道是不是我的打开方式不对,居然无法使用 Homebrew 安装指定版本的 jenkins,你是如何安装的呢?