jekins简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
安装(MAC)
- 安装命令:brew install jenkins
- 启动命令:brew services start jenkins
- 停止命令:brew services stop jenkins
配置
- JDK配置
- MAVEN配置
- github配置
- 安装常用插件->Manage Plugins
- 安装Build Name and Description Setter插件(重命名任务)
- 安装git parameter插件(配置任务时,添加git相关参数)
- 安装Maven Integration plugin 插件(构建pom任务)
问题
-
提示账号没有脚本的执行权限
解决:需要使用sudo命令,并且要配置允许账号使用sudo时不输入密码
1.sudo vi /etc/sudoers
2.设置:账户 ALL = (ALL) NOPASSWD: NOPASSWD: ALL -
构建springboot应用时,提示XX-SNAPSHOT.jar中没有主清单属性的解决办法
解决:在pom文件中加入如下代码
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- jekins调用脚本启动jar包后显示启动成功实际并没有
原因: jenkins Process leaked file descriptors:Jenkins默认会在Build结束后Kill掉所有的衍生进程
解决:在调用启动脚本前使用 BUILD_ID=dontKillMe 来标示该脚本启动进程不被kill掉 - jekins调用stop脚本根据名称查找进程id会多出来两个id号的问题
原因:当前启动脚本也会被包含在内,所以会多出现一个进程id号
解决:忽略当前的shell脚本即可,pid=ps -ef | grep "$filename" | grep -v “脚本名称” | grep -v "grep" | awk '{print $2}'
- 忘记amdin初始密码怎么办?
解决:进入/users/你的用户名/.jenkins/secrets,cat initialAdminPassword
POM方式构建项目配置示例
- 首先选择pom构建项目,配置git项目地址
- 配置项目参数
- 源码账号管理
- 构建编写shell脚本
- 编写启动脚本
启动shell命令:
DEPLOY_PATH=/Users/renfeng/Downloads/usesful/jekins_deploy/deploy_path
SCRIPT_PATH=/Users/renfeng/Downloads/usesful/jekins_deploy/deploy_script
JAR_PATH=$DEPLOY_PATH/$ServiceName
DEPLOY_VERSION=`echo $POM_VERSION | awk -F'-' '{print $1}'`
JAR_NAME=${ServiceName}-${DEPLOY_VERSION}-SNAPSHOT.jar
cd $SCRIPT_PATH
sh init.sh $DEPLOY_PATH $ServiceName
cp $WORKSPACE/target/$JAR_NAME $JAR_PATH
sh stop.sh $JAR_NAME
BUILD_ID=dontKillMe sh start.sh $JAR_PATH $JAR_NAME
init.sh
echo "**********************web on jenkins beigin init*************************"
BASE_PATH=$1
PROJECT_NAME=$2
JAR_PATH=$BASE_PATH/$PROJECT_NAME
if [ ! -d $JAR_PATH ]; then
echo "beigin build jar path:$JAR_PATH"
mkdir $JAR_PATH
fi
echo "**********************web on jenkins beigin inited*************************"
stop.sh
echo "**********************web on jenkins begin stop*************************"
JAR_NAME=$1
echo "$JAR_NAME"
pid=`ps -ef | grep $JAR_NAME | grep -v "stop" | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]; then
kill -9 $pid
fi
echo "**********************web on jenkins stoped*************************"
start.sh
#!/bin/bash
JAR_PATH=$1
JAR_NAME=$2
echo "**********************web on jenkins begin start************************"
chmod 777 $JAR_PATH
cd $JAR_PATH
LOG_PATH="$JAR_PATH/log"
if [ ! -d $LOG_PATH ];
then
mkdir $LOG_PATH
fi
nohup java -jar $JAR_NAME >>$LOG_PATH/local-cache.log &
echo "**********************web on jenkins started*************************"