发布文件

This commit is contained in:
tanglong 2026-09-23 10:49:35 +08:00
parent 5feea47331
commit 077499d2d3
3 changed files with 71 additions and 10 deletions

View File

@ -2,6 +2,13 @@
.git/ .git/
.gitignore .gitignore
.idea/ .idea/
.agents/
.vscode/
docs/
output/
tools/
src/test/
*.xlsx
*.iml *.iml
*.log *.log
README.md README.md

View File

@ -1,21 +1,24 @@
# Build stage # Build stage
FROM maven:3.9.8-eclipse-temurin-17 AS builder ARG MAVEN_IMAGE=maven:3.9.16-eclipse-temurin-17-alpine
FROM ${MAVEN_IMAGE} AS builder
WORKDIR /app WORKDIR /app
COPY .mvn/settings.xml /root/.m2/settings.xml COPY .mvn/settings.xml /root/.m2/settings.xml
COPY pom.xml . COPY pom.xml .
RUN mvn -B -ntp -Dmaven.test.skip=true dependency:go-offline
COPY src ./src COPY src ./src
RUN mvn -B -ntp -DskipTests clean package RUN mvn -B -ntp -Dmaven.test.skip=true clean package
# Runtime stage # Runtime stage
FROM eclipse-temurin:17-jre ARG RUNTIME_IMAGE=eclipse-temurin:17-jre-alpine
FROM ${RUNTIME_IMAGE}
WORKDIR /app WORKDIR /app
COPY --from=builder /app/target/agent-foundation-0.0.1-SNAPSHOT.jar app.jar COPY --from=builder /app/target/agent-foundation-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8880 EXPOSE 8880
# Runtime env defaults (override in Jenkins/Deploy env) # JAVA_TOOL_OPTIONS is read directly by the JVM, so no shell entrypoint is needed.
ENV JAVA_OPTS="" ENV JAVA_TOOL_OPTIONS=""
ENV SPRING_PROFILES_ACTIVE=prod ENV SPRING_PROFILES_ACTIVE=prod
ENV SERVER_PORT=8880 ENV SERVER_PORT=8880
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"] ENTRYPOINT ["java", "-jar", "/app/app.jar"]

59
Jenkinsfile vendored
View File

@ -1,12 +1,22 @@
pipeline { pipeline {
agent any agent any
options {
timestamps()
disableConcurrentBuilds()
timeout(time: 45, unit: 'MINUTES')
}
environment { environment {
APP_NAME = 'agent-foundation' APP_NAME = 'agent-foundation'
IMAGE_NAME = 'your-registry/agent-foundation' IMAGE_NAME = 'agent-foundation'
IMAGE_TAG = "${env.BUILD_NUMBER}" IMAGE_TAG = "${env.BUILD_NUMBER}"
CONTAINER_NAME = 'agent-foundation' CONTAINER_NAME = 'agent-foundation'
APP_PORT = '8080' APP_PORT = '8880'
CONTAINER_PORT = '8880'
MAVEN_IMAGE = 'maven:3.9.16-eclipse-temurin-17-alpine'
RUNTIME_IMAGE = 'eclipse-temurin:17-jre-alpine'
DOCKER_BUILDKIT = '1'
} }
stages { stages {
@ -16,10 +26,32 @@
} }
} }
stage('Pull Base Images') {
steps {
script {
[env.MAVEN_IMAGE, env.RUNTIME_IMAGE].each { image ->
retry(3) {
timeout(time: 10, unit: 'MINUTES') {
sh "docker pull ${image}"
}
}
}
}
}
}
stage('Build Image') { stage('Build Image') {
steps { steps {
script { script {
sh "docker build -t ${IMAGE_NAME}:${IMAGE_TAG} -t ${IMAGE_NAME}:latest ." timeout(time: 20, unit: 'MINUTES') {
sh """
docker build --progress=plain \
--build-arg MAVEN_IMAGE=${MAVEN_IMAGE} \
--build-arg RUNTIME_IMAGE=${RUNTIME_IMAGE} \
-t ${IMAGE_NAME}:${IMAGE_TAG} \
-t ${IMAGE_NAME}:latest .
"""
}
} }
} }
} }
@ -50,7 +82,8 @@
sh ''' sh '''
docker run -d \ docker run -d \
--name ${CONTAINER_NAME} \ --name ${CONTAINER_NAME} \
-p ${APP_PORT}:8080 \ --restart unless-stopped \
-p ${APP_PORT}:${CONTAINER_PORT} \
-e DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} \ -e DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} \
-e WECOM_CORP_ID=${WECOM_CORP_ID} \ -e WECOM_CORP_ID=${WECOM_CORP_ID} \
-e WECOM_AGENT_ID=${WECOM_AGENT_ID} \ -e WECOM_AGENT_ID=${WECOM_AGENT_ID} \
@ -61,6 +94,24 @@
} }
} }
} }
stage('Verify') {
steps {
timeout(time: 3, unit: 'MINUTES') {
sh '''
for attempt in $(seq 1 30); do
if docker exec ${CONTAINER_NAME} wget -qO- http://127.0.0.1:${CONTAINER_PORT}/actuator/health | grep -q '"status":"UP"'; then
echo "Health check passed"
exit 0
fi
sleep 5
done
docker logs --tail 200 ${CONTAINER_NAME}
exit 1
'''
}
}
}
} }
post { post {