安装 Jenkins 需要有 java 环境,请先安装并配置好 jdk
安装流程-
下载依赖
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
-
导入密钥
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
-
通过 yum 安装
yum install jenkins
-
查看安装目录相关信息
rpm -ql jenkins
如下图所示
-
jenkins 相关目录含义
/usr/lib/jenkins/:jenkins 安装目录 /etc/sysconfig/jenkins:jenkins 配置文件 /var/lib/jenkins/:默认的 JENKINS_HOME /var/log/jenkins/jenkins.log:jenkins 日志文件
-
修改 jenkins 端口号和用户
jenkins 默认端口号为 8080 ,为了防止端口冲突,修改端口号为 8888 ,用户默认为 jenkins ,直接修改为 root
vim /etc/sysconfig/jenkins
JENKINS_USER="root" JENKINS_PORT="8888"
-
启动
service jenkins start
查看启动状态
service jenkins status
关闭
service jenkins stop
设置开机自启动
chkconfig jenkins on
-
如果启动报错,查看错误日志
journalctl -xe
发现 jdk 路径报错
修改 Jenkins 启动配置文件,指定 java 安装路径
vim /etc/init.d/jenkins
在下图所示最后一行添加自己的 java 安装路径
保存退出后
systemctl daemon-reload
-
启动成功后,访问 http://ip:8888 即可进行初始化配置,初始密码在 /var/lib/jenkins/secrets/initialAdminPassword 中
cat /var/lib/jenkins/secrets/initialAdminPassword
-
登陆后,选择安装默认配置插件,等待安装完成,然后创建账户(默认第一个账户为管理员),一路点确定,即可进入 jenkins 首页
-
进入系统管理,点击全局工具配置,配置 Maven 、 JDK 、 Git 、 NodeJS 等所需环境的名字和路径;然后点击插件管理,安装所需的插件,下面是几个我所需要的插件
Deploy to container Plugin
Config File Provider Plugin
Generic Webhook Trigger Plugin
Publish Over SSH
NodeJS Plugin
-
我们以后端 maven 项目为例,在DashBord下,点击新建任务,创建一个任务,输入任务名称,选择创建一个自由风格的软件项目
-
点击确定后,开始进行任务配置,在 General 添加任务描述,配置构建策略相关信息
-
在源码管理中选择 Git ,配置 Git 仓库地址 Repository URL ,添加身份认证信息 Credentials ,指定代码分支
-
构建环境中勾选控制台输出时间戳信息
-
在构建中点击增加构建步骤,选择 调用顶层maven目标 ,选择你的 maven 版本,输入目标
clean install package -Dmaven.test.skip=true -Pdev
再点击增加构建步骤,选择 执行Shell ,构建完成后会自动运行Shell 脚本
参考的 Shell 脚本如下
# 时间防重 DATE=$(date +%Y%m%d%H%M%S) # 工作区路径 WORKSPACE=/var/lib/jenkins/workspace/demo # 备份区路径 DIR=/app/demo # maven项目生成的jar包 JARFILE=$WORKSPACE/target/demo.jar # 每次构建完成的备份文件 BACKFILE=$DIR/backup/demo-$DATE.jar # 创建备份区 if [ ! -d $DIR/backup ]; then mkdir -p $DIR/backup echo "创建backup" fi # 关掉上次启动的项目 PID=`ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}'` if [ -n "$PID" ]; then kill -9 $PID echo "关闭旧服务" fi # 备份jar包 cp -u $JARFILE $BACKFILE # 只保留5个备份文件 cd $DIR/backup/ ls -lt | grep -v total | awk 'NR>5{print $NF}' | xargs rm -f # 启动 cd $WORKSPACE if [ ! -d $WORKSPACE/logs ]; then mkdir -p $WORKSPACE/logs echo "创建logs" fi # 让jenkins的jar进程不被杀死 BUILD_ID=dontKilMe nohup java -jar $JARFILE > $WORKSPACE/logs/demo.log 2>&1 &
-
制作 SSH 私钥,机器间做免密登录配置
机器 A : 192.168.AA.AAA
机器 B : 192.168.BB.BBB
机器 A 能够免密登录机器 B
进入 A 机器,执行
cd ~ ssh-keygen -t rsa
通过下面的命令,表示可以通过机器 192.168.AA.AAA 免密登录到机器 192.168.BB.BBB
ssh-copy-id 192.168.BB.BBB
测试是否登录 B 机器
ssh 192.168.BB.BBB
退出登录
logout
-
SSH 登录遇到 Permission denied
原因是 ssh 对目录的权限有要求,需要将 .ssh/authorized_keys 的权限修改成 600 ,执行
cd .ssh chmod 600 authorized_keys
发现文件被锁定,无法修改
使用 lsattr 查看加锁情况
lsattr authorized_keys
发现有 i 属性
使用 chattr 解锁,发现没有该命令(可能系统被动过,被删掉了)
chattr -i authorized_keys
如图
重新安装 e2fsprogs
yum -y remove e2fsprogs yum -y install e2fsprogs
安装成功后再改变权限
chattr -i authorized_keys chmod 600 authorized_keys
-
配置 Publish Over SSH
进入 Jenkins —> 系统管理 —> 系统配置,配置 Publish over SSH
-
构建执行 Shell 合适位置添加
scp -r $FILE user@ip:$DIR/ export BUILD_ID=DonTKILLME
通过 ssh 将文件推送到远程服务器
-
构建后操作
执行脚本修改权限为 755
chmod 755 demo.sh
-
通过 shell 脚本运行 jar 包,报错
nohup: failed to run command ‘java’: No such file or directory
服务器上安装了 java ,环境变量也配置成功了的。在命令行输入java -version 也能查到版本号。但是通过脚本执行 java 命令时确报错找不到 java 。这是由于脚本执行命令的时候会默认区 /usr/bin 里面去找 java ,结果就找不到。我们只需要将 java 的 bin 配置软链接映射到 /usr/bin 目录下即可
echo $JAVA_HOME cd /usr/bin ln -s -f $JAVA_HOME/bin/java



