logo
0
0
WeChat Login

私有化构建与部署使用说明

私有化部署主要包含:镜像打包构建、私有化部署以及CNB配置私有化工作流。

私有化服务构建流程

构建镜像包

1、镜像包环境变量配置

在代码仓库根目录创建环境变量文件./private/.env,应用在构建的服务镜像中。

示例:

SPRING_CLOUD_NACOS_CONFIG_USERNAME=shulian SPRING_CLOUD_NACOS_CONFIG_PASSWORD=Qwdy@2025** SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=192.168.0.23:8848 SPRING_CLOUD_NACOS_CONFIG_NAMESPACE=shulian

2、依赖镜像配置

在代码仓库根目录创建依赖镜像文件./private/.depend_images.txt,记录不在本代码仓库,且私有化需要部署的服务镜像。

示例:

# xx-jib服务 docker.cnb.cool/clife/farm/server/server-farm-xxl-job-2.4.0/clife-farm-xxl-job-admin:master-20251211194614 # 用户服务 docker.cnb.cool/clife/clife-agriculture/server-agriculture-platform/clife-boot-agriculture-api-web-agronomist:dayun2-20251209173340 docker.cnb.cool/clife/clife-agriculture/server-agriculture-platform/clife-boot-agriculture-api-web-pest:dayun2-20251209173340

3、CNB构建镜像包

  • 配置代码仓根目录.cnb.yml(详见:⚙️CNB配置私有化工作流)
  • 点击 构建私有化部署镜像 按钮后弹出,填写一下信息:
    • 镜像环境变量:默认./private/.env
    • 添加其他镜像:默认./private/.depend_images.txt
    • 日志保存路径:默认/data/www/logs
    • 镜像内容:默认10241024MB,不用带MB

私有化服务部署流程

构建完私有化镜像后,会创建仓库Release,请到Release附件中下载部署脚本:install.sh

1、创建 访问令牌

⚠️注意:一定要确认在CNB创建的令牌有权限访问所有镜像

2、部署流程:

  • 下载 install.sh 脚本文件,并上传到服务器

  • 运行脚本部署

    # 1、赋予运行权限 chmod +x install.sh # 2、运行脚本 ./install.sh
  • 根据运行菜单,选择一键部署

配置私有化工作流说明

配置CNB私有化工作流程,主要修改两个文件:.cnb/web_tigger.yml.cnb.yml

手动触发流水线配置

.cnb/web_tigger.yml文件内容增加一下内容

注意:inputs 需要继承原构建镜像输入参数

# 私有化部署参数 .priva_inputs: &priva_inputs CLIFE_PRIVATE_ENV_FILE: name: 镜像环境变量 description: 配置镜像服务环境变量,默认读取仓库:./private/.env,请配置好该文件,主要配置nacos环境变量,每个一行。如下示例:<br>SPRING_CLOUD_NACOS_CONFIG_USERNAME=shulian<br>SPRING_CLOUD_NACOS_CONFIG_PASSWORD=Qwdy@2025** default: ./private/.env type: input CLIFE_PRIVATE_DEPEND_IMAGES_FILE: name: 添加其他镜像 description: 添加其他已经构建好的镜像清单,默认读取仓库:./private/depend_images.txt,请配置好该文件,每个一行。如下示例:<br>docker.cnb.cool/clife/xxx/websocket:v0.0.1<br>docker.cnb.cool/clife/xxx/test-api:v0.0.2 default: ./private/depend_images.txt type: input CLIFE_PRIVATE_LOG_ROOT: name: 日志保存路径 description: 服务程序在物理机上的日志路径 type: input default: /data/www/logs branch: - reg: - buttons: # 手动出发构建私有化镜像按钮 - name: 构建私有化部署镜像 description: 专为私有化构建镜像,自动生成部署脚本 event: web_trigger_build_privatization inputs: # TODO 此处需添加构建所需输入参数 <<: *priva_inputs

流水线配置文件配置

1、在.cnb.yml文件内容新增任务

.stage_privatization: &stage_privatization - name: 构建私有化脚本 script: | # 读取CNB_TAG变量 if [ -f "/workspace/cnb_tag.env" ]; then . /workspace/cnb_tag.env echo "使用导出的CNB_TAG: ${CNB_TAG}" else echo "警告: 未找到cnb_tag.env文件,使用默认CNB_TAG" fi RELEASE_VERSION=$CNB_TAG IMAGES_FILE="/workspace/images.txt" echo "参数说明:" echo "参数1:服务清单文件 ($IMAGES_FILE)" echo "参数2:版本号 ($RELEASE_VERSION)" echo "执行:./private.sh $IMAGES_FILE $RELEASE_VERSION" PRIVATE_URL="${SHELL_HOST:-https://cnb.cool/clife/golang/cp/-/git/raw/main}/private/private.sh" curl $PRIVATE_URL > private.sh chmod +x private.sh ./private.sh "$IMAGES_FILE" "$RELEASE_VERSION" echo "##[set-output RELEASE_VERSION=$RELEASE_VERSION]" exports: RELEASE_VERSION: RELEASE_VERSION - name: 创建release type: git:release options: title: $RELEASE_VERSION tag: $RELEASE_VERSION descriptionFromFile: ./privatization/RELEASE.md latest: true - name: 查看编译文件 script: | echo "PLATFORMS:${PLATFORMS}" ls -lh ./privatization rm -rf ./privatization/RELEASE.md - name: 上传附件 image: cnbcool/attachments:latest settings: tag: $RELEASE_VERSION attachments: - ./privatization/*

2、配置工作流触发事件

⚠️注意:此处配置在原有构建镜像工作中,只需新增web_trigger_build_privatizationstage_privatization,以下配置仅供参考

# 适配所有分支 "**": web_trigger_build_privatization: - <<: *runner_build variables: SELECTED_SERVICES: ${SELECTED_SERVICES} BASE_IMAGE_REGISTRY: ${BASE_IMAGE_REGISTRY} JAVA_OPTS: ${JAVA_OPTS} DISCONF_OPTS: ${DISCONF_OPTS} namespace: ${namespace} stages: - *stage_ensure_cnb_tag - *stage_parse_services - *stage_mvn_package - *stage_docker_build - *stage_privatization