新疆后端项目
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
FROM eclipse-temurin:8-jdk
|
||||
#添加时区环境变量
|
||||
ENV TZ Asia/Shanghai
|
||||
#修改apt使用国内源
|
||||
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \
|
||||
&& sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
||||
#为镜像设置时区和字体包
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y fonts-dejavu \
|
||||
&& cp /usr/share/zoneinfo/${TZ} /etc/localtime \
|
||||
&& echo ${TZ} > /etc/timezone
|
||||
#将打包好的jar包封装进镜像
|
||||
ARG JAR_NAME=health-evaluate
|
||||
COPY ${JAR_NAME}.jar app.jar
|
||||
#镜像运行命令
|
||||
ENTRYPOINT [ "java", "-jar", "/app.jar" ]
|
||||
#ENV LOG4J_CONTEXT_SELECTOR org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
|
||||
EXPOSE 10001
|
||||
Vendored
+273
@@ -0,0 +1,273 @@
|
||||
def FeiShu(status, serviceName){
|
||||
def jobNameParts = JOB_NAME.tokenize('/') as String[]
|
||||
def folderName = jobNameParts[0]
|
||||
String statusText = ""
|
||||
if (status == 1) {
|
||||
statusText = "<font color=\\\"green\\\">成功<font>"
|
||||
} else if (status == 2) {
|
||||
statusText = "<font color=\\\"yellow\\\">不稳定<font>"
|
||||
} else {
|
||||
statusText = "<font color=\\\"red\\\">失败<font>"
|
||||
}
|
||||
env.COMMIT_SHORT_HASH = "${sh(script:'git log --pretty=format:\"%h\" --no-merges|head -1', returnStdout: true)}".trim()
|
||||
env.COMMIT_MESSAGE = "${sh(script:'git log --pretty=format:\"%s\" --no-merges|head -1', returnStdout: true)}".trim()
|
||||
env.COMMIT_AUTHOR = "${sh(script:'git log --pretty=format:\"%cn\" --no-merges|head -1', returnStdout: true)}".trim()
|
||||
sh """
|
||||
curl --location --request POST 'https://open.feishu.cn/open-apis/bot/v2/hook/1babaf75-a3e4-4bf0-b236-ee9112b5f68f' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{
|
||||
"msg_type": "interactive",
|
||||
"card": {
|
||||
"config": {
|
||||
"update_multi": true,
|
||||
"enable_forward": true
|
||||
},
|
||||
"header": {
|
||||
"template": "blue",
|
||||
"title": {
|
||||
"content": "项目 四合一后端 构建报告",
|
||||
"tag": "plain_text"
|
||||
}
|
||||
},
|
||||
"card_link": {
|
||||
"url": "${JENKINS_URL}/blue/organizations/jenkins/${folderName}/detail/${BRANCH_NAME}/${BUILD_NUMBER}/pipeline",
|
||||
"pc_url": "",
|
||||
"android_url": "",
|
||||
"ios_url": ""
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"tag": "markdown",
|
||||
"content": "**构建分支**:${BRANCH_NAME}\\n**构建编号**:${BUILD_NUMBER}\\n**提交成员**:${COMMIT_AUTHOR}\\n**提交信息**:${COMMIT_MESSAGE}\\n**构建服务**:${serviceName}\\n**构建状态**:${statusText}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}'
|
||||
"""
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
triggers {
|
||||
pollSCM('*/5 * * * *')
|
||||
}
|
||||
|
||||
environment {
|
||||
PROJECT_NAME = 'cqyt_system'
|
||||
}
|
||||
|
||||
stages{
|
||||
|
||||
stage("Update All Check") {
|
||||
|
||||
when {
|
||||
anyOf {
|
||||
branch "develop"
|
||||
branch "test"
|
||||
branch "master"
|
||||
}
|
||||
}
|
||||
|
||||
agent {
|
||||
docker {
|
||||
image "ubuntu:22.04"
|
||||
args "-v hash_storage:/hash"
|
||||
}
|
||||
}
|
||||
|
||||
steps {
|
||||
dir("${env.WORKSPACE}/jeecg-boot-base-core") {
|
||||
sh '''#!/bin/bash -xe
|
||||
cp -r /hash/${PROJECT_NAME}/env ./
|
||||
buildFIle="./isBuild"
|
||||
sumPath="/hash/${PROJECT_NAME}/jeecg-boot-base-core"
|
||||
sumFile="${sumPath}/${BRANCH_NAME}"
|
||||
checksum=$(find . -type f -exec md5sum {} + | LC_ALL=C sort | md5sum)
|
||||
checksum=${checksum:0:32}
|
||||
if [[ ! -d ${sumPath} ]]
|
||||
then
|
||||
mkdir -p ${sumPath}
|
||||
fi
|
||||
if [[ ! -f ${sumFile} ]]
|
||||
then
|
||||
echo ${checksum} > ${sumFile}
|
||||
echo "TRUE" > ${buildFIle}
|
||||
else
|
||||
if [[ "${checksum}" = "$(cat ${sumFile})" ]]
|
||||
then
|
||||
echo "FALSE" > ${buildFIle}
|
||||
else
|
||||
echo ${checksum} > ${sumFile}
|
||||
echo "TRUE" > ${buildFIle}
|
||||
fi
|
||||
fi
|
||||
'''
|
||||
script {
|
||||
env.IS_BUILD = readFile('./isBuild').trim()
|
||||
env.NACOS_SERVER_ADDR = readFile("./env/NACOS_SERVER_ADDR").trim()
|
||||
env.NACOS_USERNAME = readFile("./env/NACOS_USERNAME").trim()
|
||||
env.NACOS_PASSWORD = readFile("./env/NACOS_PASSWORD").trim()
|
||||
env.NACOS_NAMESPACE = readFile("./env/NACOS_NAMESPACE").trim()
|
||||
if ( env.BRANCH_NAME == 'master' ) {
|
||||
env.NETWORK_NAME = 'stage'
|
||||
} else
|
||||
if ( env.BRANCH_NAME == 'test' ) {
|
||||
env.NETWORK_NAME = 'test'
|
||||
} else {
|
||||
env.NETWORK_NAME = 'dev'
|
||||
}
|
||||
env.PROFILE_NAME = env.NETWORK_NAME
|
||||
env.NACOS_GROUP = env.NETWORK_NAME
|
||||
}
|
||||
sh "rm -f ./isBuild"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
stage("Microservice CI") {
|
||||
|
||||
when {
|
||||
anyOf {
|
||||
branch "develop"
|
||||
branch "test"
|
||||
branch "master"
|
||||
}
|
||||
}
|
||||
|
||||
matrix {
|
||||
|
||||
axes {
|
||||
|
||||
axis {
|
||||
name 'SERVICE_NAME'
|
||||
values 'jeecg-system', 'health-im', 'health-medical', 'health-emergency', 'health-consultation'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
stages {
|
||||
|
||||
stage("Diff Check") {
|
||||
agent {
|
||||
docker {
|
||||
image "ubuntu:22.04"
|
||||
args "-v hash_storage:/hash"
|
||||
}
|
||||
}
|
||||
steps {
|
||||
dir("${env.WORKSPACE}/${SERVICE_NAME}") {
|
||||
sh '''#!/bin/bash -xe
|
||||
buildFIle="./isBuild"
|
||||
if [[ "${IS_BUILD}" = "TRUE" ]]
|
||||
then
|
||||
echo "TRUE" > ${buildFIle}
|
||||
exit 0
|
||||
fi
|
||||
sumPath="/hash/${PROJECT_NAME}/${SERVICE_NAME}"
|
||||
sumFile="${sumPath}/${BRANCH_NAME}"
|
||||
checksum=$(find . -type f -exec md5sum {} + | LC_ALL=C sort | md5sum)
|
||||
checksum=${checksum:0:32}
|
||||
if [[ ! -d ${sumPath} ]]
|
||||
then
|
||||
mkdir -p ${sumPath}
|
||||
fi
|
||||
if [[ ! -f ${sumFile} ]]
|
||||
then
|
||||
echo ${checksum} > ${sumFile}
|
||||
echo "TRUE" > ${buildFIle}
|
||||
else
|
||||
if [[ "${checksum}" = "$(cat ${sumFile})" ]]
|
||||
then
|
||||
echo "FALSE" > ${buildFIle}
|
||||
else
|
||||
echo ${checksum} > ${sumFile}
|
||||
echo "TRUE" > ${buildFIle}
|
||||
fi
|
||||
fi
|
||||
'''
|
||||
script {
|
||||
env."${SERVICE_NAME}_IS_BUILD" = readFile('./isBuild').trim()
|
||||
}
|
||||
sh "rm -f ./isBuild"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage("Maven Package") {
|
||||
when {
|
||||
environment name: "${SERVICE_NAME}_IS_BUILD", value: "TRUE"
|
||||
}
|
||||
agent {
|
||||
docker {
|
||||
image "maven:3-eclipse-temurin-8"
|
||||
args "-v maven-repo:/root/.m2 -v maven-conf:/usr/share/maven/conf"
|
||||
}
|
||||
}
|
||||
steps {
|
||||
dir("${env.WORKSPACE}") {
|
||||
echo "Package ${SERVICE_NAME}"
|
||||
sh "mvn -pl health-system-boms,${SERVICE_NAME}/${SERVICE_NAME}-start -e -B -U -am clean install"
|
||||
}
|
||||
dir("${env.WORKSPACE}/${SERVICE_NAME}/${SERVICE_NAME}-start/target") {
|
||||
echo "Copy ${SERVICE_NAME} JAR"
|
||||
stash(name: "${SERVICE_NAME}_jar", includes: "${SERVICE_NAME}-start.jar")
|
||||
}
|
||||
dir("${env.WORKSPACE}") {
|
||||
echo "Clean Build"
|
||||
sh "mvn clean"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage("Docker Build & Run") {
|
||||
when {
|
||||
environment name: "${SERVICE_NAME}_IS_BUILD", value: "TRUE"
|
||||
}
|
||||
agent any
|
||||
environment {
|
||||
REGISTER_HOST = "registry.cn-shanghai.aliyuncs.com"
|
||||
REGISTER_REPO = "yg7709"
|
||||
IMAGE_NAME = "${PROJECT_NAME}_${SERVICE_NAME}"
|
||||
IMAGE_TAG_LATEST = "${BRANCH_NAME}-latest"
|
||||
IMAGE_TAG_COMMIT = "${BRANCH_NAME}-${GIT_COMMIT}"
|
||||
}
|
||||
steps {
|
||||
dir("${env.WORKSPACE}/.jenkins") {
|
||||
unstash("${SERVICE_NAME}_jar")
|
||||
echo "Docker Build ${SERVICE_NAME}"
|
||||
sh "docker compose -f docker-compose.build.yaml build"
|
||||
echo "Docker Push ${SERVICE_NAME}"
|
||||
sh "docker push ${REGISTER_HOST}/${REGISTER_REPO}/${IMAGE_NAME}:${IMAGE_TAG_LATEST}"
|
||||
sh "docker push ${REGISTER_HOST}/${REGISTER_REPO}/${IMAGE_NAME}:${IMAGE_TAG_COMMIT}"
|
||||
echo "Docker Deploy ${SERVICE_NAME}"
|
||||
sh "docker compose -p ${PROJECT_NAME}_${PROFILE_NAME} up -d ${SERVICE_NAME}"
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
success {
|
||||
FeiShu(1,SERVICE_NAME)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
post {
|
||||
unstable {
|
||||
FeiShu(2,SERVICE_NAME)
|
||||
}
|
||||
failure {
|
||||
FeiShu(3,SERVICE_NAME)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ms-service:
|
||||
build:
|
||||
dockerfile: Dockerfile
|
||||
context: .
|
||||
tags:
|
||||
- "${IMAGE_NAME}:${IMAGE_TAG_LATEST}"
|
||||
- "${IMAGE_NAME}:${IMAGE_TAG_COMMIT}"
|
||||
- "${REGISTER_HOST}/${REGISTER_REPO}/${IMAGE_NAME}:${IMAGE_TAG_LATEST}"
|
||||
- "${REGISTER_HOST}/${REGISTER_REPO}/${IMAGE_NAME}:${IMAGE_TAG_COMMIT}"
|
||||
args:
|
||||
JAR_NAME: ${SERVICE_NAME}-start
|
||||
@@ -0,0 +1,102 @@
|
||||
#版本
|
||||
version: '3.9'
|
||||
|
||||
x-template:
|
||||
service: &service_tmp
|
||||
environment:
|
||||
- NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR}
|
||||
- NACOS_USERNAME=${NACOS_USERNAME}
|
||||
- NACOS_PASSWORD=${NACOS_PASSWORD}
|
||||
- NACOS_NAMESPACE=${NACOS_NAMESPACE}
|
||||
- NACOS_GROUP=${NACOS_GROUP}
|
||||
- PROFILE_NAME=${PROFILE_NAME}
|
||||
restart: always
|
||||
tty: true
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '4'
|
||||
memory: 4G
|
||||
reservations:
|
||||
cpus: '1'
|
||||
memory: 512M
|
||||
extra_hosts:
|
||||
- "yg.dt.io:192.168.1.5"
|
||||
|
||||
#服务配置
|
||||
services:
|
||||
|
||||
jeecg-system:
|
||||
<<: *service_tmp
|
||||
container_name: system-${PROFILE_NAME}
|
||||
hostname: system-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_jeecg-system:${IMAGE_TAG_LATEST}
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "-f", "http://localhost:7001/actuator/health" ]
|
||||
interval: 2m
|
||||
timeout: 2s
|
||||
retries: 5
|
||||
start_period: 5m
|
||||
|
||||
health-consultation:
|
||||
<<: *service_tmp
|
||||
container_name: consultation-${PROFILE_NAME}
|
||||
hostname: consultation-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-consultation:${IMAGE_TAG_LATEST}
|
||||
|
||||
health-emergency:
|
||||
<<: *service_tmp
|
||||
container_name: emergency-${PROFILE_NAME}
|
||||
hostname: emergency-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-emergency:${IMAGE_TAG_LATEST}
|
||||
|
||||
health-im:
|
||||
<<: *service_tmp
|
||||
container_name: im-${PROFILE_NAME}
|
||||
hostname: im-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-im:${IMAGE_TAG_LATEST}
|
||||
|
||||
health-medical:
|
||||
<<: *service_tmp
|
||||
container_name: medical-${PROFILE_NAME}
|
||||
hostname: medical-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-medical:${IMAGE_TAG_LATEST}
|
||||
|
||||
health-medical-gi:
|
||||
<<: *service_tmp
|
||||
container_name: medical-gi-${PROFILE_NAME}
|
||||
hostname: medical-gi-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-medical-gi:${IMAGE_TAG_LATEST}
|
||||
|
||||
health-archives:
|
||||
<<: *service_tmp
|
||||
container_name: archives-${PROFILE_NAME}
|
||||
hostname: archives-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-archives:${IMAGE_TAG_LATEST}
|
||||
|
||||
health-watch:
|
||||
<<: *service_tmp
|
||||
container_name: watch-${PROFILE_NAME}
|
||||
hostname: watch-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-watch:${IMAGE_TAG_LATEST}
|
||||
|
||||
health-intervene:
|
||||
<<: *service_tmp
|
||||
container_name: intervene-${PROFILE_NAME}
|
||||
hostname: intervene-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_health-intervene:${IMAGE_TAG_LATEST}
|
||||
depends_on:
|
||||
jeecg-system:
|
||||
condition: service_healthy
|
||||
|
||||
medical-center:
|
||||
<<: *service_tmp
|
||||
container_name: medical-center-${PROFILE_NAME}
|
||||
hostname: medical-center-${PROFILE_NAME}
|
||||
image: ${REGISTER_HOST}/${REGISTER_REPO}/${PROJECT_NAME}_medical-center:${IMAGE_TAG_LATEST}
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: ${NETWORK_NAME}
|
||||
external: true
|
||||
|
||||
Reference in New Issue
Block a user