欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

centos下jenkins的安装

程序员文章站 2024-01-27 14:09:46
...

centos下jenkins的安装

实验环境

CentOS版本:CentOS Linux release 7.5.1804 (Core)

Jenkins版本:2.249.1

Java版本:1.8.0_221

从官网下载Jenkins

进入Jenkins中文网,https://www.jenkins.io/zh/,如果你进入的是英文版的网站,可以通过左上角来选择语言,如下图:

centos下jenkins的安装

 

在jenkins首页,我们点击下载按钮,进入下载页面,如下图:

centos下jenkins的安装

 

下载页面中,我们选择“稳定版(LTS)”版本的java通用war包进行下载,目前最新的稳定版下载地址如下:

http://mirrors.jenkins.io/war-stable/2.249.1/jenkins.war

编写启动停止脚本

下载好war包,配置好java环境变量,可以直接使用java -jar jenkins.war的方式直接启动jenkins。

默认的数据目录位于当前用户家目录下的.jenkins目录,web端口是8080。

为了方便启动和停止,这里我们编写一个启动脚本,脚本中可以自定义数据目录和web端口,如下:

cat jenkins.sh

#!/bin/bash
export LANG=zh_CN.UTF-8

:<<!
shell多行注释,开始

脚本说明信息
shell脚本模板,注意换行符必须是UNIX换行符\n

linux 中 jenkins 启动、停止脚本
参考:https://blog.csdn.net/u011974797/article/details/78889580

脚本放置在 jenkins.war 包所在的目录即可
默认的jenkins数据目录为war包所在目录下的 jenkins_data 目录,可以通过修改 JENKINS_DATA 变量值来修改jenkins数据目录
默认的jenkins端口为8080,可以通过修改 JENKINS_PORT 变量值来修改jenkins的web端口

shell多行注释,结束
!

# 引入root用户和当前用户的环境变量,开始
. /etc/profile
. ~/.bash_profile
# 引入root用户和当前用户的环境变量,结束

SHELL_FOLDER=$(dirname $(readlink -f "$0"))
echo $SHELL_FOLDER # 当前脚本所在目录的绝对路径

ip=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d '/'` # 获取当前节点的ip地址
echo $ip

date "+%Y-%m-%d %H:%M:%S"

# 编写脚本内容

JENKINS_ROOT=$SHELL_FOLDER # jenkins的安装目录,即 jenkins.war 包所在的目录,例如:/data/msf/jenkins
JENKINS_DATA=jenkins_data # 设置jenkins数据目录名称
JENKINS_PORT=8080 # 设置jenkins的启动端口
JENKINSFILENAME=jenkins.war # jenkins war 包的名称
JENKINSRUNLOG=jenkins.run.log # jenkins 运行日志

export JENKINS_HOME=$JENKINS_ROOT/$JENKINS_DATA # 设置jenkins的工作目录

#查看进程状态
status(){
    # 注意,调用时加上双引号可以把grep结果中的换行符保留下来,例如:echo "$(status)"
    ps -ef | grep $JENKINS_ROOT/$JENKINSFILENAME | grep -v grep
}

case "$1" in
start)
    echo "Starting $JENKINS_ROOT/$JENKINSFILENAME "
    if [[ $(status) != "" ]]; then
        echo "服务运行正常,无需启动"
    else
        nohup java -jar $JENKINS_ROOT/$JENKINSFILENAME --httpPort=$JENKINS_PORT > $JENKINS_ROOT/$JENKINSRUNLOG 2>&1 &
    fi
    ;;
stop)
    echo "Stoping $JENKINS_ROOT/$JENKINSFILENAME "
    if [[ $(status) != "" ]]; then
        echo "$(status)" | awk '{print $2}' | while read pid
        do
           kill $pid
           echo " $pid kill 首先使用 kill 来停止进程"
        done
        echo "等待5秒,如果进程还在,那么使用 kill -9 来杀死进程"
        sleep 5
        if [[ $(status) != "" ]]; then
            echo "$(status)" | awk '{print $2}' | while read pid
            do
               kill -9 $pid
               echo " $pid kill 如果没能正常终止,使用 kill -9 来杀死进程"
            done
        fi
    else
        echo "服务已经停止,无需停止"
    fi
    ;;
restart)
    sh $0 stop
    sh $0 start
    ;;
status)
    echo "getstatus $JENKINS_ROOT/$JENKINSFILENAME "
    result=$(status)
    echo "$result"
    if [[ $result != "" ]]; then
        echo "服务运行正常"
    else
        echo "服务已经停止"
    fi
    ;;
*)
    printf 'Usage: %s {start|stop|restart|status}\n'
    exit 1
    ;;
esac

date "+%Y-%m-%d %H:%M:%S"

 

脚本编写完成后启动停止就比较方便了,执行脚本时,脚本路径使用绝对和相对路径都可以,使用方式如下:

启动

sh jenkins.sh start

停止

sh jenkins.sh stop

重启

sh jenkins.sh restart

查看状态

sh jenkins.sh status

 

设置开机启动

设置开机启动后,重启机器时就不用手动启动jenkins了。

这里我们通过 /etc/rc.d/rc.local 的方式设置开机启动,需要使用root用户身份进行设置。

在 centos7 中 /etc/rc.d/rc.local 的权限被降低了,需要给它增加下可执行权限,如下:

chmod +x /etc/rc.d/rc.local

然后在 /etc/rc.d/rc.local 中追加jenkins的启动命令,如下:

su - user -c "sh /data/msf/jenkins/jenkins.sh start"

其中,user代表是启动jenkins时的用户名,后面的启动命令中脚本地址需要使用绝对路径。

su - user -c 代表切换到user用户,然后执行后面的命令。