Jenkins打包部署gitee项目至阿里云ECS服务器

所需插件:
Git Parameter Plug-In插件
Publish Over SSH插件
Gitee Plugin插件
NodeJS Plugin插件(打包前端所需)

Jenkins安装及配置详见链接:Jenkins安装及基础环境配置
Jenkins配置SSH免密登录:Jenkins配置SSH免密登录

以下为具体配置步骤:

1、Gitee配置

进入Dashboard -- Manage Jenkins -- Configure System,下拉找到Gitee配置部分,如下图示:

图1-Gitee配置图1-Gitee配置

配置内容:

链接名:Gitee
Gitee域名URL:https://gitee.com
证书令牌:点击添加按钮,添加Gitee证书令牌

添加Gitee证书令牌如下图示:

图2-添加凭据图2-添加凭据

添加凭据配置:

类型:Gitee API令牌
范围:全局 (Jenkins, nodes, items, all child items, etc)
Gitee APIV5 私人令牌:[gitee生成的token]
ID:13(整形数字)
描述:Gitee API Token

在Gitee配置中,选择刚添加的证书令牌,点击测试链接按钮,如果显示成功,则表明Gitee配置没问题,可继续下一步操作。

2、创建项目及配置

首先,点击“新建Item”,创建项目文件夹;
其次,进入文件夹后,再次点击“新建Item”,输入任务名称创建Freestyle project项目。

General

基础配置如下图示:

图3-基础配置1图3-基础配置1

图4-基础配置2图4-基础配置2

配置内容:

填写项目描述
选择Gitee链接
勾选参数化构建项目
添加Choice Parameter,参数名:environment
选项(每行一个值):
test
mgr

描述分别与选项对应:
test-测试环境
mgr-预上线环境

添加Git Parameter,参数名:branch
描述:请选择要发布的分支
参数类型:分支
默认值:origin/master

源码管理

源码管理配置如下图所示:

图5-源码管理配置图5-源码管理配置

配置内容:

选择Git
填写Respository URL仓库地址

构建

由于Jenkins所在机器为Windows系统,故:
增加构建步骤选择:Execute Windows batch command

打包命令:

echo "执行编译打包..."
mvn clean install
echo "打包完毕"

构建后操作

构建后操作如下图所示:

图6-构建后操作配置图6-构建后操作配置

点击Add Server按钮,选择对应的远程服务器

SSH远程配置:

SSH Server
Name:选择环境对应的SSH服务器
点击高级:
勾选:Verbose output in console
勾选Label,输入框输入:test,标识当前服务器对应环境

Transfers
Source files(要上传的源文件):business-admin/target/business-admin.jar
Remove prefix:business-admin/target/
Remote directory(上传服务器临时目录):/opt/publish/apple-business-api/
Exec command:发布shell脚本

具体发布shell脚本如下:

#!/bin/bash
source /etc/profile

publishDir=/opt/publish/apple-business-api
serviceDir=/opt/servers/apple-business/backend

AppName=business-admin.jar

# JVM参数
JVM_OPTS=" --spring.profiles.active=test -Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log

function start()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

    if [ x"$PID" != x"" ]; then
        echo "$AppName is running..."
    else
        nohup java -jar $AppName $JVM_OPTS  > /dev/null 2>&1 &
        echo "Start $AppName success..."
    fi
}

function stop()
{
    echo "Stop $AppName"
    
    PID=""
    query(){
        PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
    }

    query
    if [ x"$PID" != x"" ]; then
        kill -TERM $PID
        echo "$AppName (pid:$PID) exiting..."
        while [ x"$PID" != x"" ]
        do
            sleep 1
            query
        done
        echo "$AppName exited."
    else
        echo "$AppName already stopped."
    fi
}


cd $serviceDir

echo "停止服务..."
stop

echo "将jar包拷贝至服务目录..."
cp $publishDir/business-admin.jar -r -f $serviceDir/business-admin.jar

echo "启动服务..."
java -version
start

echo "备份部署的jar包..."
mkdir -p $publishDir/backup/${BUILD_ID}/
mv $publishDir/business-admin.jar $publishDir/backup/${BUILD_ID}/

echo "发布完毕..."

最后,点击最底下“高级”按钮
勾选Parameterized publishing
Parameter name:与最开始Choice Parameter参数名:environment保持一致

如下图示;

图7-参数化发布配置图7-参数化发布配置

点击应用--保存即可。

以上远程发布即配置完成。

构建发布测试

点击Build with Parameters按钮,
选择对应的环境参数和要发布的分支,
点击“开始构建”按钮,执行构建操作。
点击下方构建历史,可查看对应的控制台输出信息。

如下图示:

图8:构建发布图8:构建发布

常见构建失败错误:
找不到命令,创建文件夹无权限等问题,具体可根据控制台日志提示修改测试。

(完)

最后修改于:2022年09月01日 16:40

添加新评论