Administrator
Published on 2024-12-17 / 92 Visits
0

jenkins部署东方通应用

一、通过jenkins构建一个maven项目

  1. 正常创建一个maven项目

  2. 填写项目git信息或者其他更新代码方式

  3. 配置maven信息或者其他构建项目信息

二、检查东方通cli账号

这里是通过命令发布或者重新发布,使用thanos可能是不行的。 这里应该是使用账号cli

cli的默认密码为cli123.com,如果需要验证密码,或者修改cli密码可以进入东方通根目录->bin目录下执行以下命令

./commandstool.sh change-admin-password --user=cli

这是一个修改管理员密码的命令,执行后需要验证旧密码,可以用来验证一下密码是否正确,如果旧密码输入正确两次就该修改为新的密码,如果不需要修改密码直接退出即可。

三、配置SSH Publishers信息

1.配置服务器信息

在jenkins系统设置中,配置东方通所在服务器信息,就和平常项目一样配置即可

2.配置文件传输信息

SSH Publishers组件中配置Transfers信息。

Source filesRemove prefix和平常项目一样配置即可。

Remote directory需要配置到东方通根目录下jenkinsFile文件夹下

3.配置命令执行信息

吧以下脚本填入Exec command中,变量部分需要根据自己的项目来定

此脚本和文件传输中Remote directory有很大关联,不想关联可自行调整

#!/bin/bash
source /etc/profile

# 定义变量,需要修改为自己的信息
# 原始包名
packageName=cold_storage-1.0.0.war
# 东方通根目录
tongWebRoot=/home/TW_7041_Enter_Liunx
# 东方通账号
user=cli
# 东方通账号对应密码
password=cli123.com
# 东方通部署的前缀
context=/api
# 东方通中的应用名称,同一个东方通中是唯一的
appName=storage




#自动组装参数,几乎不用动
# jenkins文件存放地址,和插件中Remote directory的目录必须一直
jenkinsFileDir=$tongWebRoot/jenkinsFile
# 用于存放密码的文件,不用管
passwordFile=$jenkinsFileDir/password
# 用于查看该应用名称是否已经被发布过
appPathDeployment="$tongWebRoot/deployment/$appName"


# 吧初始包名改为以日期命名的格式,用于备份和发布
cd $jenkinsFileDir
jarName="$appName-$(date +%Y-%m-%d-%H-%M-%s).war"
mv $packageName $jarName
jarPath="$jenkinsFileDir/$jarName"


# 判断jenkins存放数据的文件夹是否存在,如果不存在就创建
if [ ! -d "$jenkinsFileDir" ]; then
    mkdir -p "$jenkinsFileDir"
    echo "目录 $jenkinsFileDir 被创建。"
fi


#判断密码文件是否存在,如果不存在就创建,如果存在判断是否正确,如果不正确就修改
# 判断文件是否存在
if [ -f "$passwordFile" ]; then
    # 读取文件内容
    currentContent=$(cat "$passwordFile")
    
    # 判断内容是否为AS_ADMIN_password=xxxx
    if [ "$currentContent" != "AS_ADMIN_password=$password" ]; then
        # 更新文件内容
        echo "AS_ADMIN_password=$password" > "$passwordFile"
        echo "文件 $passwordFile 的内容已被更新。"
    else
        echo "文件 $passwordFile 的内容已经是AS_ADMIN_password=$password。"
    fi
else
    # 如果文件不存在,则创建并写入内容
    echo "AS_ADMIN_password=$password" > "$passwordFile"
    echo "文件 $passwordFile 被创建并写入了内容。"
fi


#判断当前应用是否已经被部署,如果已经部署就用redeploy如果没有被部署就用deploy
echo "$appPathDeployment"
cd $tongWebRoot/bin
pwd
# 检查当前appname的应用是否被发布过
if [ -e "$appPathDeployment" ]; then
    # 如果已经被发布过,就使用重新发布命令
    echo ./commandstool.sh redeploy --user=$user --passwordfile=$passwordFile --applocation=$jarPath $appName
    ./commandstool.sh redeploy --user=$user --passwordfile=$passwordFile --applocation=$jarPath $appName
else
    # 如果没有被发布过,就用发布命令
    echo ./commandstool.sh deploy --user=cli --passwordfile=$passwordFile --contextroot=$context --applocation=$jarPath storage
    ./commandstool.sh deploy --user=cli --passwordfile=$passwordFile --contextroot=$context --applocation=$jarPath storage
fi