diff --git a/k8s/build-java.sh b/k8s/build-java.sh new file mode 100644 index 00000000..2f9e1d7b --- /dev/null +++ b/k8s/build-java.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +baseDir="/home/somuns/ci4s" +cd $baseDir && mvn clean install + +#cd ${baseDir}/ruoyi-modules && mvn install +if [ $? -ne 0 ]; then + echo "Failed to build ruoyi-modules" + exit 1 +fi + + + + + + + diff --git a/k8s/build-node.sh b/k8s/build-node.sh new file mode 100644 index 00000000..9805d2ca --- /dev/null +++ b/k8s/build-node.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +baseDir="/home/somuns/ci4s" +cd ${baseDir}/react-ui + +npm install + +if [ $? -ne 0 ]; then + echo "Failed to install npm depend package" + exit 1 +fi + + +npm run build +if [ $? -ne 0 ]; then + echo "Failed to build react-ui" + exit 1 +fi + + + diff --git a/k8s/build.sh b/k8s/build.sh new file mode 100644 index 00000000..384b4e19 --- /dev/null +++ b/k8s/build.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +#登录到172.20.32.185 环境执行 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + +#拉取master分支的最新代码 +git pull +if [ $? -ne 0 ]; then + echo "拉取代码失败,请检查网络或联系管理员!" + exit 1 +fi + +if [ -d "${baseDir}/react-ui/dist" ]; then + rm -rf ${baseDir}/react-ui/dist +fi + +if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ];then + rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar +fi + + +# 编译java +docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/java-build:jdk8-mvn3.6 ${baseDir}/k8s/build-java.sh +if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 +fi + +# 编译node +docker run -v ${baseDir}:${baseDir} -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh +if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 +fi + + +mkdir -p ${baseDir}/k8s/dockerfiles/jar +mkdir -p ${baseDir}/k8s/dockerfiles/html +# 复制jar包 +cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar +if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 +fi + +# 复制前端文件 +cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html +if [ $? -ne 0 ]; then + echo "复制html文件失败,请检查代码!" + exit 1 +fi + +sh ${baseDir}/k8s/build_and_deploy_front_managenent.sh diff --git a/k8s/build_and_deploy_front_managenent.sh b/k8s/build_and_deploy_front_managenent.sh new file mode 100644 index 00000000..274a8463 --- /dev/null +++ b/k8s/build_and_deploy_front_managenent.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +bastDir=/home/somuns/ci4s +cd ${bastDir}/k8s/dockerfiles +mkdir -p ${bastDir}/k8s/template-yaml/deploy + +tag=$(date +'%Y%m%d%H%M') +managent=172.20.32.187/ci4s/managent:${tag} +front=172.20.32.187/ci4s/ci4s-front:${tag} + +docker build -t ${managent} -f managent-dockerfile . + +if [ "$?" -ne "0" ];then + echo "buid ${managent} image fail" + exit 1 +fi + +docker build -t ${front} -f nginx-dockerfile . + +if [ "$?" -ne "0" ];then + echo "buid ${front} image fail" + exit 2 +fi + +cd ${bastDir}/k8s/template-yaml + +cp -rf k8s-12front.yaml deploy/ +cp -rf k8s-7management.yaml deploy/ + +cd deploy/ + +#镜像替换 +sed -i "s#managenent-image#${managent}#g" k8s-7management.yaml +if [ "$?" -ne "0" ];then + echo "replace ${managent} image fail" + exit 3 +fi + + + +sed -i "s#front-image#${front}#g" k8s-12front.yaml + +if [ "$?" -ne "0" ];then + echo "replace ${front} image fail" + exit 4 +fi + + +docker push ${managent} +docker push ${front} + +kubectl apply -n argo -f k8s-7management.yaml + +if [ "$?" -ne "0" ];then + echo "deploy ${managent} image fail" + exit 5 +fi + + +kubectl apply -n argo -f k8s-12front.yaml + +if [ "$?" -ne "0" ];then + echo "buid ${front} image fail" + exit 6 +fi + + + diff --git a/k8s/new_deploy.sh b/k8s/new_deploy.sh new file mode 100644 index 00000000..785f34cc --- /dev/null +++ b/k8s/new_deploy.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +# 记录开始时间 +start=$(date +%s) +# 默认参数 +service="manage-front" +env="dev" + +# 解析命令行参数 +while getopts "s:e:" opt; do + case $opt in + s) service=$OPTARG ;; + e) env=$OPTARG ;; + \?) echo "Invalid option -$OPTARG" >&2; exit 1 ;; + esac +done + +echo "deploy service: $service, env: $env" +# 根据环境设置 IP 地址 +if [ "$env" == "dev" ]; then + remote_ip="172.20.32.181" +elif [ "$env" == "test" ]; then + remote_ip="172.20.32.185" +else + echo "Invalid environment - $env" + exit 1 +fi + +baseDir=/home/somuns/ci4s +cd ${baseDir}/k8s/dockerfiles +mkdir -p ${baseDir}/k8s/template-yaml/deploy + +tag=$(date +'%Y%m%d%H%M') +managent=172.20.32.187/ci4s/managent:${tag} +front=172.20.32.187/ci4s/ci4s-front:${tag} + +remote_deploy_dir=/home/deploy/manage-platform +manager_yaml=k8s-7management.yaml +front_yaml=k8s-12front.yaml + +# 构建 manage 镜像 +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + cd ${baseDir}/k8s/dockerfiles + docker build -t ${managent} -f managent-dockerfile . + if [ "$?" -ne "0" ]; then + echo "build ${managent} image fail" + exit 1 + fi + + cd ${baseDir}/k8s/template-yaml + # 复制 YAML 文件 + cp -rf ${manager_yaml} deploy/ + # 镜像替换 + cd deploy/ + sed -i "s#managenent-image#${managent}#g" ${manager_yaml} + if [ "$?" -ne "0" ];then + echo "replace ${managent} image fail" + exit 3 + fi + # 推送镜像 + docker push ${managent} + # 部署服务 + ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${manager_yaml} ]; then mv ${remote_deploy_dir}/${manager_yaml} ${remote_deploy_dir}/k8s-7management.yaml.bak; fi" + scp ${baseDir}/k8s/template-yaml/deploy/${manager_yaml} root@$remote_ip:${remote_deploy_dir}/${manager_yaml} + if [ $? -ne 0 ]; then + echo "Failed to copy ${managent} yaml file" + exit 1 + else + echo "Successfully copied ${managent} yaml file" + fi + ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${manager_yaml}" + if [ $? -ne 0 ]; then + echo "Failed to deploy ${managent} image" + exit 1 + else + echo "Successfully deployed ${managent} image" + fi +fi + + +# 构建 front 镜像 +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + cd ${baseDir}/k8s/dockerfiles + docker build -t ${front} -f nginx-dockerfile . + if [ "$?" -ne "0" ];then + echo "build ${front} image fail" + exit 2 + fi + + # 复制 YAML 文件 + cd ${baseDir}/k8s/template-yaml + cp -rf ${front_yaml} deploy/ + + # 镜像替换 + cd deploy/ + sed -i "s#front-image#${front}#g" ${front_yaml} + if [ "$?" -ne "0" ];then + echo "replace ${front} image fail" + exit 4 + fi + + + # 镜像推送 + docker push ${front} + + #部署服务 + ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${front_yaml} ]; then mv ${remote_deploy_dir}/${front_yaml} ${remote_deploy_dir}/k8s-12front.yaml.bak; fi" + scp ${baseDir}/k8s/template-yaml/deploy/${front_yaml} root@$remote_ip:${remote_deploy_dir}/${front_yaml} + if [ $? -ne 0 ]; then + echo "Failed to copy ${managent} yaml file" + exit 1 + else + echo "Successfully copied ${managent} yaml file" + fi + ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${front_yaml}" + if [ $? -ne 0 ]; then + echo "Failed to deploy ${front} image" + exit 1 + else + echo "Successfully deployed ${front} image" + fi +fi + + +# 记录结束时间 +end=$(date +%s) +echo "部署成功, 耗时: $((end-start))秒" diff --git a/k8s/newbuild.sh b/k8s/newbuild.sh new file mode 100644 index 00000000..dcdef4d9 --- /dev/null +++ b/k8s/newbuild.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +#记录开始时间 +start=$(date +%s) + +# 默认参数 +branch="master" +service="manage-front" +env="dev" + +# +show_help() { + echo "Usage: $0 [-b branch] [-s service] [-e environment]" + echo + echo "Options:" + echo " -b Branch to deploy" + echo " -s Service to deploy (manage-front, manage, front)" + echo " -e Environment (e.g., dev, prod)" + echo " -h Show this help message" +} + +# 解析命令行选项 +while getopts "b:s:e:h" opt; do + case $opt in + b) branch=$OPTARG ;; + s) service=$OPTARG ;; + e) env=$OPTARG ;; + h) show_help; exit 0 ;; + \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;; + esac +done + +echo "branch: $branch" +echo "service: $service" +echo "env: $env" + +# 登录到目标环境 +baseDir="/home/somuns/ci4s" +cd ${baseDir} + +# 拉取指定分支的最新代码 +echo "Checking out and pulling branch $branch..." +git checkout $branch +if [ $? -ne 0 ]; then + echo "切换到分支 $branch 失败,请检查分支名称是否正确!" + exit 1 +fi + +git pull origin $branch +if [ $? -ne 0 ]; then + echo "拉取代码失败,请检查网络或联系管理员!" + exit 1 +fi + +# 创建目录 +mkdir -p ${baseDir}/k8s/dockerfiles/jar +mkdir -p ${baseDir}/k8s/dockerfiles/html + +if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then + # 清理前端构建文件 + if [ -d "${baseDir}/react-ui/dist" ]; then + rm -rf ${baseDir}/react-ui/dist + fi + + # 编译前端 + docker run -v ${baseDir}:${baseDir} \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + 172.20.32.187/ci4s/node:16.16.0 ${baseDir}/k8s/build-node.sh + if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 + fi + + # 复制前端文件 + cp -rf ${baseDir}/react-ui/dist/ ${baseDir}/k8s/dockerfiles/html + if [ $? -ne 0 ]; then + echo "复制html文件失败,请检查代码!" + exit 1 + fi +fi + +if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then + # 清理java构建文件 + if [ -f "${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar" ]; then + rm -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar + fi + + # 编译java + docker run -v ${baseDir}:${baseDir} -v /home/maven:/home/maven \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + 172.20.32.187/ci4s/build:v1 ${baseDir}/k8s/build-java.sh + if [ $? -ne 0 ]; then + echo "编译失败,请检查代码!" + exit 1 + fi + + # 复制jar包 + cp -rf ${baseDir}/ruoyi-modules/management-platform/target/management-platform.jar ${baseDir}/k8s/dockerfiles/jar/management-platform.jar + if [ $? -ne 0 ]; then + echo "复制jar包失败,请检查代码!" + exit 1 + fi +fi + + +# 构建和部署 +sh ${baseDir}/k8s/new_deploy.sh -s $service -e $env +# 记录结束时间 +end=$(date +%s) + +#计算运行时间 +runtime=$((end-start)) +echo "编译和发布成功,耗时:$runtime 秒" diff --git a/settings.xml b/settings.xml new file mode 100644 index 00000000..d0fe0f07 --- /dev/null +++ b/settings.xml @@ -0,0 +1,274 @@ + + + + + + + + /home/maven/repository + + + + + + + + + + + + + + + + + + + + + + + + + + alimaven + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + central + + + + + + + + + myjdk + + true + 1.8 + + + 1.8 + 1.8 + 1.8 + + + + + + + + myjdk + + \ No newline at end of file diff --git a/settings.xml.bak b/settings.xml.bak new file mode 100644 index 00000000..e27c579c --- /dev/null +++ b/settings.xml.bak @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +