From 4053c70dccda02ee3f1622facdb9f4b36864d38f Mon Sep 17 00:00:00 2001 From: dxin Date: Fri, 31 Oct 2025 16:47:36 +0800 Subject: [PATCH] gengai --- Dockerfile/web/lessie_web_Dockerfile | 10 +++ SCM/build_image_lessie_ai_web.groovy | 32 ++++++--- k8s_yaml/public/Secret/jennie-im-tls.yaml | 30 +++++++++ k8s_yaml/test/Readme.md | 9 ++- k8s_yaml/test/test-flymoon-agent.yaml | 2 +- k8s_yaml/test/test-flymoon-payment.yaml | 2 +- k8s_yaml/test/test-lessie-agents.yaml | 2 +- k8s_yaml/test/test-lessie-ai-web.yaml | 81 +++++++++++++++++++++++ k8s_yaml/test/test-lessie-go-api.yaml | 2 +- 9 files changed, 156 insertions(+), 14 deletions(-) create mode 100644 Dockerfile/web/lessie_web_Dockerfile create mode 100644 k8s_yaml/public/Secret/jennie-im-tls.yaml create mode 100644 k8s_yaml/test/test-lessie-ai-web.yaml diff --git a/Dockerfile/web/lessie_web_Dockerfile b/Dockerfile/web/lessie_web_Dockerfile new file mode 100644 index 0000000..08fe95b --- /dev/null +++ b/Dockerfile/web/lessie_web_Dockerfile @@ -0,0 +1,10 @@ +# 使用 Nginx 官方轻量镜像 +FROM nginx:1.25-alpine + +# 拷贝前端构建产物 +COPY dist/ /usr/share/nginx/html/ + +# 暴露端口 +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/SCM/build_image_lessie_ai_web.groovy b/SCM/build_image_lessie_ai_web.groovy index b9ec84d..d3c0b48 100644 --- a/SCM/build_image_lessie_ai_web.groovy +++ b/SCM/build_image_lessie_ai_web.groovy @@ -1,8 +1,6 @@ pipeline { agent any - tools{ - node 'node20.15.0' - } + parameters { gitParameter( branchFilter: 'origin/(.*)', @@ -19,25 +17,30 @@ pipeline { choice( name: 'NAME_SPACES', choices: ['sit', 'test', 'prod'], - description: '选择构建的环境配置:' + description: '选择存放镜像的仓库命名空间:' + ) + choice( + name: 'BUILD_ENV', + choices: ['im', 's2', 'prod'], + description: '选择构建的环境配置, 默认为 pnpm build:im 构建' ) string( name: 'CUSTOM_TAG', defaultValue: '', - description: '可选:自定义镜像 Tag (字母、数字、点、下划线、短横线), 留空则自动生成 “ v+构建次数_分支名_短哈希_构建时间 ”' + description: '可选:自定义镜像 Tag (字母、数字、点、下划线、短横线), 如 v0.0.1, 留空则自动生成 “ v+构建次数_分支名_短哈希_构建时间 ”' ) } environment { REGISTRY = "uswccr.ccs.tencentyun.com" // 镜像仓库地址 NAMESPACE = "lessie${params.NAME_SPACES}" // 命名空间根据choices的选择拼接 - IMAGE_NAME = "flymoon-admin" // 镜像名(固定前缀) + IMAGE_NAME = "lessie-ai-web" // 镜像名(固定前缀) CREDENTIALS_ID = "dxin_img_hub_auth" // 容器仓库凭证ID } stages { stage('拉取代码') { steps { - git branch: "${params.Code_branch}", credentialsId: 'fly_gitlab_auth', url: 'http://106.53.194.199/root/web/jennie.git' + git branch: "${params.Code_branch}", credentialsId: 'fly_gitlab_auth', url: 'http://106.53.194.199/web/jennie.git' } } @@ -109,9 +112,20 @@ pipeline { } } - stage('Maven 编译') { + stage('pnpm i&b') { steps { - sh "cd ${WORKSPACE}/ && mvn clean install -Dmaven.test.skip=true" + script { + def buildEnv = params.BUILD_ENV // 获取参数 + sh """ + export PATH="/data/nvm/versions/node/v20.15.0/bin:$PATH" + echo "开始安装依赖包" + cd ${WORKSPACE}/ && rm -rf node_modules && pnpm install + echo "开始构建" + pnpm build:${buildEnv} + mv dist/main/index.html dist/ + chmod -R 755 dist/ + """ + } } } diff --git a/k8s_yaml/public/Secret/jennie-im-tls.yaml b/k8s_yaml/public/Secret/jennie-im-tls.yaml new file mode 100644 index 0000000..2d35fa8 --- /dev/null +++ b/k8s_yaml/public/Secret/jennie-im-tls.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +data: + tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVuakNDQTRhZ0F3SUJBZ0lVUGFOcWJtREQrSG9BVjArT0xXTGZyd3lrUWI4d0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZc3hDekFKQmdOVkJBWVRBbFZUTVJrd0Z3WURWUVFLRXhCRGJHOTFaRVpzWVhKbExDQkpibU11TVRRdwpNZ1lEVlFRTEV5dERiRzkxWkVac1lYSmxJRTl5YVdkcGJpQlRVMHdnUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5CmFYUjVNUll3RkFZRFZRUUhFdzFUWVc0Z1JuSmhibU5wYzJOdk1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGgKTUI0WERUSTFNRE14T0RFeE5ERXdNRm9YRFRRd01ETXhOREV4TkRFd01Gb3dZakVaTUJjR0ExVUVDaE1RUTJ4dgpkV1JHYkdGeVpTd2dTVzVqTGpFZE1Cc0dBMVVFQ3hNVVEyeHZkV1JHYkdGeVpTQlBjbWxuYVc0Z1EwRXhKakFrCkJnTlZCQU1USFVOc2IzVmtSbXhoY21VZ1QzSnBaMmx1SUVObGNuUnBabWxqWVhSbE1JSUJJakFOQmdrcWhraUcKOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXRiMmhvVWQ2YU9QS0FaUzVoZnBtbno4VFZzNWV2c3RFT09YYgo3UTdZTzl1S2VIMEdXWEZGaXNuM3NhNzF4YU1waCszbERVZExQYlorSUpRQXVEN01ScWxNYXdXYzNxT1dMaDJHCk84dThsemVMZjdMQW9JU3p1YXR5M1craTJpamNiTUkwZEtxeGRYcHBucW1MQm01dW96MHRTOEVCLzVPWlNnOXkKN2paT0ovS3pFTUlCd1kyN0tJMWdwMHJ5eUEzSGJCUE1XNy9vRHRmUVF3eDBPajlhOUJVcHBYYzNKVWo5UENlUAoyQmZ3bjBwK0o3UUErY0psNm5XQ25SWDRoQzFleXJLcjllWkNpNmJ4UWpuc1l0TlIzR0FkM2lQQWZ2L0NKaWpNCnJuWjVzQ3N0VlpZUk5hc3p4NmczU1p2K3cyblh3ZWZSbkQvenQ1bUp5akd2aC83bm5RSURBUUFCbzRJQklEQ0MKQVJ3d0RnWURWUjBQQVFIL0JBUURBZ1dnTUIwR0ExVWRKUVFXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjRApBVEFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkRGdRV0JCVFdzREZtRHpYZ3JIWVJaNWxWSGoxcHF4aTBPREFmCkJnTlZIU01FR0RBV2dCUWs2Rk5YWFh3MFFJZXA2NVRidXVFV2VQd3BwREJBQmdnckJnRUZCUWNCQVFRME1ESXcKTUFZSUt3WUJCUVVITUFHR0pHaDBkSEE2THk5dlkzTndMbU5zYjNWa1pteGhjbVV1WTI5dEwyOXlhV2RwYmw5agpZVEFoQmdOVkhSRUVHakFZZ2dzcUxtcGxibTVwWlM1cGJZSUphbVZ1Ym1sbExtbHRNRGdHQTFVZEh3UXhNQzh3CkxhQXJvQ21HSjJoMGRIQTZMeTlqY213dVkyeHZkV1JtYkdGeVpTNWpiMjB2YjNKcFoybHVYMk5oTG1OeWJEQU4KQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBU1BxbldQVXFMbFJnbXNpMld6RnFTbnVZR1hpTUJ3Z1hGaGZUL0ovZgo0SkVQa1NLeWYrU0s3TUh6U1pvRzhXYW5WVEoybTB3ZGVKbUlDejFCOGhma29NblBMWisvVlFKMXRqZFFaL0ZxCmFqalBUeXZXNVRWU01sNmRDY1VhaXFsbFhNbXFteDBMUFhKeElnQVp0cGJHdnBHNXJqY21wMzJEWnNFbzJVT1AKcFZlYmZETXVKRnl6MmRLWnlSc213K0t2bmlXTWxqelFJaEtSOHJHT0pnblNYYlVwTDdpb0Mwd2Y0ZW9XOHNWcApCUG4vaFNKU1NuVFROK09LdzgxNTN6ODVubS9pWnFuVUZ5aVhWNDZhaUNORm02NmM1N1ZkZkRCeWFUb2xtRWE0Cmx0U3FwZmdTZmVvaEVkTUtLa2tsQ0NmdlNoM3VSSmZGUlNIdUhPMDRhYWJYSWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t + tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktZd2dnU2lBZ0VBQW9JQkFRQzF2YUdoUjNwbzQ4b0IKbExtRittYWZQeE5Xemw2K3kwUTQ1ZHZ0RHRnNzI0cDRmUVpaY1VXS3lmZXhydlhGb3ltSDdlVU5SMHM5dG40ZwpsQUM0UHN4R3FVeHJCWnplbzVZdUhZWTd5N3lYTjR0L3NzQ2doTE81cTNMZGI2TGFLTnhzd2pSMHFyRjFlbW1lCnFZc0dibTZqUFMxTHdRSC9rNWxLRDNMdU5rNG44ck1Rd2dIQmpic29qV0NuU3ZMSURjZHNFOHhiditnTzE5QkQKREhRNlAxcjBGU21sZHpjbFNQMDhKNC9ZRi9DZlNuNG50QUQ1d21YcWRZS2RGZmlFTFY3S3NxdjE1a0tMcHZGQwpPZXhpMDFIY1lCM2VJOEIrLzhJbUtNeXVkbm13S3kxVmxoRTFxelBIcURkSm0vN0RhZGZCNTlHY1AvTzNtWW5LCk1hK0gvdWVkQWdNQkFBRUNnZ0VBSCtUbDROMGZxeGt3dWdyTTdTbUd5WE1qRkhTV2xZS3NHQlVrdmF0QmdPMjAKRlJXUjMrLzhQWkZZcmY3UHBHM1FLOG53ek40Q1l4UHIraEVuT0M1VElLSjA1Z0kvNTZXTFJWQUtudU5RRnpTWQovMkhTSXNsdkZnb3oyQThQcEJ3UUpPa0hGaU5mamNlY0VndGNlZFkzQmVCR1d2bEYvY0Y4SVE1cGc4c1ZkN1o0CnNPQ21tMVBkZ1JqVHRmK2JmdUl2TmxqdDhqVFNjTUhZcjN4dnQ2WC91VmFXV214cSsrVUJILzB1UlpVTVR4eEwKK0t1dDJkMHFVb0pZaGFJa3FzaUsvQnNVQXVTRWxtRHByRUtITlMxNTdSRjFpeUR2QTNvNjhxSnEvcUlNdS9tUAo0VEEvaG9qY3QrMTB1a1JDZFFWRGt2Tjk5NGlNbzJWSXFYVDkxbWhueVFLQmdRRHRHRzZSUDc5WWVERE5NZlFhCjV1eVZmTG4xaFZWL0phWVNHR0w3V1QrVkNSbHltczFNaXRpNFdnYzYwZ3dGMnZqRENSSkJEZ3NCQ294VzZDcGUKZTB0WkFCMk1FMTJBdEJweFRXU0VCcmNERWFEVHFGeUs3YlJteURNRVQyYk5uNGthYm11SHVhM0o3Z1N1RDZlOQpjMTMzUlVhVzFNamQ0dHpFUjdPRHpZcWx0UUtCZ1FERU8wNGRUNTZjaWhwbEVJTXk3WVNmRlltbnF6dmVvOEN3CkdQUGpoMFBSN2hIOFl6ckpvRUQ3Qmp2Y0tsN3IxbG9RblhaemNnRytoeDQ5WC9URlkrWUtOTklaVmdRV0RiYjYKbTVRTlVBYVV5emVhL3NMbmxrazBmdU9PUTdjNXZybithSlJhd2U4YlZwRG9aM1RNV3VBeXVoNEhiRHVsVlJ2eQpoeFNLMTBkclNRS0JnR2lkTUNRc3dZd1N0RTNGN2RSMDhnemZsTm5OZERUKzhyRG5TNzFsMnRVeXg2UzJ3MEV6CnZuNVJVd0ZVTHZQaWM0THpITGZScjI5TkxURW5qWkpVeXFGQm1NZjJ2M29MZmVOaVo2aU5vZkRidFYvTzJNNkEKSmVwNENYS3Nha3J1U3J0NzN6eHE1RkRHRWhDUFhjOE0rWGdpZkF3UFpYWHFKTWtDYmlZSTZsVkZBb0dBZnVLKwpNdlBONHZqbDhsM0lDRUZQVlRLdkRRMExMSDZFVlJuOWNpMS83Qm5kNVc0Z2tFbWdXdkQvK2ZBbjZxVnpIWFZFCko0Z2JtcUJ5TEV1RTBiSTBDSHQ1TTByTVg1cEVyQzIzZ1JneStUbWlYZ1hINzhuYzBpWU9iR3BhNnVycUI1aUYKL1YyVGlBRGt1SEpWTXVLOFAvRGJBLyszWGNQM3kwNFBPV3ZVMFlrQ2dZQW1nSWdaNzV1SFA1TGx6NThOL3hPbgpRTG9kSEtrRGdYQnlIVldUeUZMUjVVNVJRM3B2dVBHRTJMRENSNzRMTmdwQTAxYmU5dldqd3gxWVMwYjBGVGhGCnZJV0dOaHcwTU1ORmFYUCs5MzJNa3Q1NUdmdXEvMm5lUm16QWpjZHdES0NPMTF4YVRiVktNNk56S1JkSytTbloKbnFhelJoVTl1cXJIOFdFa3VOaFkyQT09Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0= +kind: Secret +metadata: + creationTimestamp: "2025-10-30T08:53:17Z" + labels: + qcloud-app: jennie-im-tls + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: + .: {} + f:tls.crt: {} + f:tls.key: {} + f:metadata: + f:labels: + .: {} + f:qcloud-app: {} + f:type: {} + manager: tke-platform-api + operation: Update + time: "2025-10-30T08:53:17Z" + name: jennie-im-tls + namespace: test-lessie + resourceVersion: "1849356229" + uid: 74b243f9-d82c-426b-9411-81245885164c +type: kubernetes.io/tls \ No newline at end of file diff --git a/k8s_yaml/test/Readme.md b/k8s_yaml/test/Readme.md index 73aeca6..2573f43 100644 --- a/k8s_yaml/test/Readme.md +++ b/k8s_yaml/test/Readme.md @@ -3,7 +3,7 @@ - 集群外部:`http://:38000` ## Go -- 集群内部:`http://test-lessie-sourcing-api-svc.test-lessie.svc.cluster.local:8100` +- 集群内部:`http://test-lessie-go-api-svc.test-lessie.svc.cluster.local:8100` - 集群外部:`http://:30810` ## Java @@ -18,3 +18,10 @@ - 集群外部:`http://:30809` ## 主站前端 + + + + + + + diff --git a/k8s_yaml/test/test-flymoon-agent.yaml b/k8s_yaml/test/test-flymoon-agent.yaml index fabbc75..77d3134 100644 --- a/k8s_yaml/test/test-flymoon-agent.yaml +++ b/k8s_yaml/test/test-flymoon-agent.yaml @@ -38,7 +38,7 @@ spec: type: DirectoryOrCreate containers: - name: test-flymoon-agent # 容器名称 - image: uswccr.ccs.tencentyun.com/lessietest/flymoon-agent:v0.0.1 # 容器镜像 + image: uswccr.ccs.tencentyun.com/lessietest/flymoon-agent:v0.0.2 # 容器镜像 imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉 env: - name: POD_NAME diff --git a/k8s_yaml/test/test-flymoon-payment.yaml b/k8s_yaml/test/test-flymoon-payment.yaml index 227d582..319970d 100644 --- a/k8s_yaml/test/test-flymoon-payment.yaml +++ b/k8s_yaml/test/test-flymoon-payment.yaml @@ -38,7 +38,7 @@ spec: type: DirectoryOrCreate containers: - name: test-flymoon-payment # 容器名称 - image: uswccr.ccs.tencentyun.com/lessietest/flymoon-payment:v0.0.1 # 容器镜像 + image: uswccr.ccs.tencentyun.com/lessietest/flymoon-payment:v0.0.3 # 容器镜像 imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉 env: - name: POD_NAME diff --git a/k8s_yaml/test/test-lessie-agents.yaml b/k8s_yaml/test/test-lessie-agents.yaml index 9070eba..dfffa68 100644 --- a/k8s_yaml/test/test-lessie-agents.yaml +++ b/k8s_yaml/test/test-lessie-agents.yaml @@ -44,7 +44,7 @@ spec: type: DirectoryOrCreate containers: - name: test-lessie-agents # 容器名称 - image: uswccr.ccs.tencentyun.com/lessietest/lessie-sourcing-agents:v24_dxin_9042beec_202510271811 # 容器镜像 + image: uswccr.ccs.tencentyun.com/lessietest/lessie-sourcing-agents:v0.0.2 # 容器镜像 imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉 env: - name: POD_NAME diff --git a/k8s_yaml/test/test-lessie-ai-web.yaml b/k8s_yaml/test/test-lessie-ai-web.yaml new file mode 100644 index 0000000..9034ca1 --- /dev/null +++ b/k8s_yaml/test/test-lessie-ai-web.yaml @@ -0,0 +1,81 @@ +# ---------------------------- +# Deployment +# ---------------------------- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-lessie-ai-web-deployment + namespace: test-lessie + labels: + app: test-lessie-ai-web + environment: test + project: lessie +spec: + replicas: 1 + selector: + matchLabels: + app: test-lessie-ai-web + environment: test + project: lessie + strategy: + type: RollingUpdate # 滚动更新策略 + rollingUpdate: + maxSurge: 1 # 最大新增副本数(先加) + maxUnavailable: 0 # 最大不可用副本数(不减) + template: + metadata: + labels: + app: test-lessie-ai-web + environment: test + project: lessie + spec: + imagePullSecrets: + - name: dxin-image-repository + volumes: + - name: test-default-conf-volume + configMap: + name: test-default-conf + containers: + - name: test-lessie-ai-web + image: uswccr.ccs.tencentyun.com/lessiesit/lessie-ai-web:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + resources: + requests: + cpu: "200m" # 容器请求分配0.2个CPU核心(这不是实际占用,但调度会以这里进行参考) + memory: "256Mi" # 容器请求分配1Gi内存(这会实际预留) + limits: + cpu: "500m" # 最多可以使用0.5个CPU核心 + memory: "512Mi" # 容器最多可以使用8Gi内存 + volumeMounts: + - name: test-default-conf-volume + mountPath: /etc/nginx/conf.d/default.conf + subPath: default.conf + +--- +# ---------------------------- +# Service +# 集群内部:http://test-lessie-ai-web-svc.test-lessie.svc.cluster.local:8000 +# 集群外部:http://:30080 +# ---------------------------- +apiVersion: v1 +kind: Service +metadata: + name: test-lessie-ai-web-svc + namespace: test-lessie + labels: + app: test-lessie-ai-web + environment: test + project: lessie +spec: + type: NodePort + selector: + app: test-lessie-ai-web + environment: test + project: lessie + ports: + - name: http + port: 80 + targetPort: 80 + nodePort: 30080 \ No newline at end of file diff --git a/k8s_yaml/test/test-lessie-go-api.yaml b/k8s_yaml/test/test-lessie-go-api.yaml index e31f637..948e857 100644 --- a/k8s_yaml/test/test-lessie-go-api.yaml +++ b/k8s_yaml/test/test-lessie-go-api.yaml @@ -38,7 +38,7 @@ spec: type: DirectoryOrCreate containers: - name: test-lessie-go-api # 容器名称 - image: uswccr.ccs.tencentyun.com/lessietest/go_lessie-sourcing-api:latest # 容器镜像 + image: uswccr.ccs.tencentyun.com/lessietest/go_lessie-sourcing-api:v0.0.2 # 容器镜像 imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉 env: - name: POD_NAME