Jenkins 持续集成
Jenkins 安装
Jenkins 安装有很多方案,具体可以查看 Jenkins 官网 介绍,其中多用到 Docker,可以看 Docker 官网安装介绍。
这里介绍一种通用型方案:利用 Java 运行 WAR 文件进行安装部署。这种方案的好处在于,无需服务 Root 权限,便可在线安装部署 Jenkins。
Jenkins 的 Web 应用程序 ARchive(WAR)文件版本可以安装在任何支持 Java 的操作系统或平台上。
具体流程如下:
将最新的稳定 Jenkins WAR 包 下载到计算机上的相应目录。
在下载的目录内打开一个终端/命令提示符窗口到。
运行命令
java -jar jenkins.war
第一次运行,会返回一个初始密码!!! 需要妥善保管,待会要用,若是丢失了则需要去查看一下地址:
# 不同安装路径可能不用 /var/lib/jenkins/secrets/initialAdminPassword
值得注意的是,此时确保安装的 Java 版本符合要求。若是下载了较新的 WAR 包,则建议安装 Java11 以上,具体看下文介绍。
并且该指令无作做到持久化,关闭窗口后,便会停止,下文介绍持久化操作。
浏览
http://localhost:8080
并等到 Unlock Jenkins 页面出现。这里并非一定是 localhost,localhost 是本地服务。应该根据服务器地址自行设置。
Java 安装
环境为腾讯云的 Linux。
搜索 jdk:
$: yum search jdk
会列出当前能用的 jdk 版本。依据情况进行下载,通用的是 Java-1.8.0(较老)、Java-11-openjdk。
确定好 Java 版本后开始安装:
# 请务必确认好版本 # 1.8 版 $: yum install java-1.8.0-openjdk.x86_64 # 11 版 $: yum install java-11-openjdk.x86_64 # 验证安装 $: java -version
若先安装的 1.8 版,后安装的 11 版。而此时需要用到 11 版,可以切换默认 Java 版本(需要权限)。
$: sudo update-alternatives --config java
该命令会显示当前系统中安装的所有 Java 版本,并让选择将哪个版本设置为默认版本。输入数字对应的序号并按回车键即可完成设置。
没有权限进行切换 Java 版本,但又要用别的 Java 版本该如何?
$: update-alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk/bin/java) 2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk/bin/java)
查看当前 Java 版本的同时,括号内会展现不同 Java 安装的路径。利用这个路径便可使用指定的 Java 版本了。
用法(需要用参数
-jar
):$: /usr/lib/jvm/java-11-openjdk/bin/java -jar myapp.jar
这将使用 /usr/lib/jvm/java-11-openjdk 目录下的 Java 可执行程序来运行 myapp.jar 文件。
java 运行持久化
在使用 Jenkins 时,如果希望在关闭浏览器后仍然保持 Jenkins 后台运行,则可以使用以下方法:
使用 nohup 命令(no hang up,不要挂断电话):
nohup
命令可以使进程忽略 SIGHUP 信号(即挂起信号),从而使其在终端关闭后继续在后台运行。例如,要在后台运行 Jenkins 并忽略 SIGHUP 信号,请使用以下命令:$: nohup java -jar jenkins.war > ./jenkins.log &
在 nohup 命令后面添加重定向符号(
>
)和输出文件名(记录日志),以将程序的输出重定向到指定的文件中;在 Linux 和 Unix 系统中,
&
符号表示将命令放入后台运行。当使用&
符号时,程序会在后台运行,并且终端会立即返回到命令提示符。上述命令的意思是将启动名为
jenkins.war
的 Java 程序,并将其输出写入到jenkins.log
文件中。但是,由于在命令末尾添加了&
符号,该程序会在后台运行,并且控制台会立即返回到命令提示符。如果不使用
&
符号,则程序将在前台运行,并且控制台将一直占用,直到程序退出或通过键盘输入Ctrl+C
中断进程。
键入上述指令后,会启动 Jenkins 并将其作为后台任务运行。此时,当关闭终端或断开 SSH 连接时,Jenkins 仍将继续在后台运行。
使用 screen 命令:screen 命令可以创建一个虚拟窗口,并在其中运行命令或程序。可以使用 screen 命令来在 Jenkins 调试控制台中运行 Jenkins,并在关闭 SSH 连接后继续在后台运行。例如,要在 Jenkins 调试控制台中运行 Jenkins 并在后台运行,请使用以下命令:
$: screen -S jenkins $: java -jar jenkins.war
这会创建一个名为 "jenkins" 的新 screen 会话,并在其中启动 Jenkins。此时,当关闭 SSH 连接时,Jenkins 仍将继续在后台运行。
结束持久化
以上俩种方案都可以做到对运行 Jenkins 的持久化。那若何结束进程呢?可以使用以下命令:
# 查看运行 Jenkins 的进程
$: ps aux | grep java | grep jenkins.war
# 利用 kill 杀死进程(假设 PID 为 12345)
$: kill 12345
指令解析:
$: ps aux | grep <your_process_name>
其中,<your_process_name>
是需要查找的进程名。该命令将列出所有匹配的进程,并显示其 PID(进程 ID)和其他详细信息。
要关闭正在运行的 nohup 程序,可以使用以下方法之一:
使用 kill 命令:kill 命令可以发送信号给指定的进程,并请求其关闭或终止。例如,要关闭 PID 为 12345 的进程,请使用以下命令:
$: kill 12345
如果希望强制终止进程而不等待其自行关闭,请使用
-9
选项:$: kill -9 12345
使用 pkill 命令:pkill 命令可以根据进程名或其他属性来查找并关闭匹配的进程。例如,要关闭名为 "myprocess" 的进程,请使用以下命令:
$: pkill myprocess
如果希望强制终止匹配的进程而不等待其自行关闭,请使用
-9
选项:$: pkill -9 myprocess
需要注意的是,在使用以上命令时,请确保已经正确标识了要关闭的进程,并且已经备份了任何重要的数据或配置文件。