接上文 jenkins 搭建 - rpm
主要步骤
- 使用 gitlab 部署专用账户, 拉取指定分支, 指定commit的代码
- 使用 maven 编译和打包
- 远程发送部署包到指定的主机和目录
- 操作远程主机, 杀死旧的进程, 启动新的进程
配套环境
# 安装 git
yum install git
# 安装 maven
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
yum install -y maven
# 为 maven 配置镜像加速
less /usr/share/apache-maven/conf/settings.xml
# 修改 localRepository (个人喜好, 仅供参考)
## <localRepository>/usr/share/apache-maven/repo</localRepository>
# 添加 mirror
## <mirror>
## <id>nexus-aliyun</id>
## <mirrorOf>central</mirrorOf>
## <name>Nexus aliyun</name>
## <url>http://maven.aliyun.com/nexus/content/groups/public</url>
## </mirror>
# 开放 jenkins 用户的 bash 权限, jenkins 服务默认是由 jenkins 用户和组启动
less /etc/passwd # 将 jenkins 那一行的行尾, false 改为 bash
# 切换 jenkins 用户, 配置远程主机的免密登录
su jenkins
cd ~/.ssh
ssh-keygen -t rsa
ssh-copy-id user@192.168.x.x
新建任务
- 起名字, 选择 自由风格, 确认
- General
丢弃旧的构建 - 建议勾选, 只保存有限的历史记录
参数化构建过程 - 建议勾选, 使用变量编写脚本, 复用性和可维护性会大大提高
以下是本示例使用的参数 (均为字符参数, 结合shell使用)
参数名 | 参数说明 | 参数值 |
---|---|---|
PROJECT_NAME | 项目名称 | mms-backend |
REPO_URL | 仓库地址 | http://username:password@git.domain.com/first/mms-backend.git |
CHECKOUT_BRANCH | 检出分支 | master |
COMMIT_ID | 提交短ID | f2b45d3 或 HEAD |
MVN_CMD | mvn打包命令 | clean package -U -Dmaven.test.skip=true |
JAR_NAME | jar包名称(不带后缀) | mms-backend-1.0 |
REMOTE_URL | 远端用户地址 | user@192.168.x.x |
REMOTE_DIR | 远端目录('/'结尾) | /opt/springboot/mms/ |
JAVA_OPTION | jvm参数 | -Xms128M -Xmx128M -server -Dfile.encoding=UTF-8 |
JAVA_PROFILE | 自定义参数 | --spring.profiles.active=beta |
- 源码管理 - 无
- 构建触发器
触发远程构建 (例如,使用脚本) - 按需勾选, 通过 http 远程执行任务
其他工程构建后触发 - 按需勾选
定时构建 - 按需勾选
- 构建
增加构建步骤 > 执行shell
# 清除上次构建的内容
rm -rf $PROJECT_NAME
# 拉取代码
git clone $REPO_URL
cd $PROJECT_NAME
git checkout $BRANCH
git reset --hard $COMMIT_ID
export PARAM_0=`git rev-parse --short $COMMIT_ID`
# 打包
mvn $MVN_CMD
cd target
# 发送远程主机
scp $JAR_NAME.jar $REMOTE_URL:$REMOTE_DIR$JAR_NAME.$CHECKOUT_BRANCH.$PARAM_0.jar
export PARAM_1=`ssh $REMOTE_URL ps -ef | grep $REMOTE_DIR$PROJECT_NAME | awk '{print $2}'`
# 杀死旧进程
ssh $REMOTE_URL bash -c "'kill -9 $PARAM_1'" || true
sleep 1
# 启动新进程
ssh $REMOTE_URL bash -c "'rm -f $REMOTE_DIR$PROJECT_NAME.jar'"
ssh $REMOTE_URL bash -c "'ln -s $REMOTE_DIR$JAR_NAME.$CHECKOUT_BRANCH.$PARAM_0.jar $REMOTE_DIR$PROJECT_NAME.jar'"
ssh $REMOTE_URL bash -c "'nohup java $JAVA_OPTION -jar $REMOTE_DIR$PROJECT_NAME.jar $JAVA_PROFILE >/dev/null 2>&1 &'"
- 构建后操作 - 按需添加
执行任务
- 在首页点击任务名称, 进入任务详情
- 点击左侧的 Build with Parameters, 确认参数后, 开始构建
- 查看构建历史, 控制台输出, 检查脚本执行过程
远程执行任务
- 添加远程访问的授权Token
右上角, 点击用户名, 左侧点击设置, 在 API Token 下, 添加新 Token, 记录下来
- 关闭跨域拦截
主页 > 系统管理 > 全局安全设置 > 跨站请求伪造保护, 取消勾选
- 通过 url 执行任务
四个要素: 用户名, 用户token, 任务名, 任务token (任务 > 配置 > 构建 > 触发远程构建中配置)
http://username:apitoken@192.168.x.x:8080/job/jobname/buildWithParameters?token=jobtoken&cause=测试远程执行
- 查看构建历史, 控制台输出, 检查脚本执行过程
网友评论