ソースを参照

📦 build(release): 重构Docker构建和发布流程

- 重命名Dockerfile.release为Dockerfile并优化构建流程
- 添加PostgreSQL 17客户端工具支持数据库操作
- 配置国内npm镜像源加速依赖安装
- 优化版本号提取逻辑,支持直接使用v*格式标签
- 修改Docker镜像仓库地址为VPC内网地址
- 添加仓库名处理逻辑,替换斜杠为连字符避免标签错误
- 移除自动SSH部署到服务器的步骤,简化CI流程

👷 ci(workflow): 优化CI发布工作流配置

- 调整标签匹配规则为v*格式
- 更新Docker登录仓库地址为VPC内网地址
- 完善版本号和仓库名提取逻辑
- 优化Docker镜像标签命名规则
yourname 1 ヶ月 前
コミット
a92ab31d2f
3 ファイル変更65 行追加59 行削除
  1. 12 33
      .gitea/workflows/release.yaml
  2. 53 0
      Dockerfile
  3. 0 26
      Dockerfile.release

+ 12 - 33
.gitea/workflows/release.yaml

@@ -2,7 +2,7 @@ name: Docker Build and Push
 on:
   push:
     tags:
-      - 'release/*'  # 匹配所有release开头的标签,如release/v0.1.6
+      - 'v*'
 
 jobs:
   build-and-push:
@@ -23,18 +23,24 @@ jobs:
       - name: 设置 Docker Buildx
         uses: docker/setup-buildx-action@v3
       
-      - name: 从标签名中提取版本号
-        id: extract_version
+      - name: 提取版本号和处理仓库名
+        id: extract_info
         run: |
-          # 从标签名中提取版本号,例如从 release/v0.1.6 中提取 v0.1.6
+          # 从标签名中提取版本号(例如从 release/v0.1.6 中提取 v0.1.6)
           VERSION=$(echo "${{ gitea.ref_name }}" | sed 's|release/||')
           echo "VERSION=$VERSION" >> $GITHUB_ENV
+          
+          # 处理仓库名(替换斜杠为连字符,避免Docker标签错误)
+          REPO_NAME=$(echo "${{ gitea.repository }}" | sed 's|/|-|g')
+          echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV
+          
           echo "提取的版本号:$VERSION"
+          echo "处理后的仓库名:$REPO_NAME"
       
       - name: 登录 Docker 注册表
         uses: docker/login-action@v3
         with:
-          registry: registry.cn-beijing.aliyuncs.com
+          registry: registry-vpc.cn-beijing.aliyuncs.com
           username: ${{ secrets.ALI_DOCKER_REGISTRY_USERNAME }}
           password: ${{ secrets.ALI_DOCKER_REGISTRY_PASSWORD }}
 
@@ -45,31 +51,4 @@ jobs:
           file: ./Dockerfile
           push: true
           tags: |
-            registry.cn-beijing.aliyuncs.com/d8dcloud/d8d-ai-design-prd:release-${{ env.VERSION }}
-      - name: 更新服务器上的 Docker 容器 
-        uses: appleboy/ssh-action@v1.2.2
-        with:
-          host: ${{ secrets.SERVER_HOST }}
-          port: ${{ secrets.SERVER_PORT }}
-          username: ${{ secrets.SERVER_USER }}
-          key: ${{ secrets.SERVER_SSH_KEY }}
-          script: |
-            # 进入项目目录
-            cd /mnt/k8s_home/app/d8d-fun-vite
-
-            
-            # 备份当前的 deployment.yaml 文件
-            cp deployment.yaml deployment.yaml.bak
-            
-            # 更新 deployment.yaml 中的镜像版本
-            sed -i "s|registry.cn-beijing.aliyuncs.com/d8dcloud/d8d-ai-design-prd:.*|registry.cn-beijing.aliyuncs.com/d8dcloud/d8d-ai-design-prd:release-${{ env.VERSION }}|g" deployment.yaml
-            
-            # 检查文件是否成功更新
-            echo "更新后的 deployment.yaml 内容:"
-            cat deployment.yaml
-            
-            # 更新
-            kubectl apply -f deployment.yaml
-            
-            # 显示d8d-fun-vite pod状态
-            kubectl get pods -n default -l app=d8d-fun-vite
+            registry-vpc.cn-beijing.aliyuncs.com/d8dcloud/d8d-user-release:${{ env.REPO_NAME }}-${{ env.VERSION }}

+ 53 - 0
Dockerfile

@@ -0,0 +1,53 @@
+# 使用指定基础镜像
+FROM docker.1ms.run/node:20.19.4
+
+# 设置软件源为清华大学镜像源
+RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main non-free contrib" > /etc/apt/sources.list && \
+    echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main non-free contrib" >> /etc/apt/sources.list && \
+    echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main non-free contrib" >> /etc/apt/sources.list && \
+    echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main non-free contrib" >> /etc/apt/sources.list
+
+RUN apt update  --fix-missing && \
+    apt install -y curl wget
+
+# 安装 pnpm
+RUN npm install -g pnpm
+
+# 配置国内npm镜像
+RUN pnpm config set registry https://registry.npmmirror.com/
+RUN pnpm config set @jsr:registry https://npm.jsr.io
+
+# 添加PostgreSQL 17的官方仓库
+RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
+    echo "deb http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main" > /etc/apt/sources.list.d/pgdg.list
+
+# 更新包列表并安装PostgreSQL 17客户端工具及其他常用工具(已添加jq)
+RUN apt update && \
+    apt install -y \
+    # PostgreSQL 17客户端工具
+    postgresql-client-17
+
+# 确认版本
+RUN pg_dump --version
+
+# 设置工作目录
+WORKDIR /workspace
+
+# 复制根目录配置文件
+COPY package.json pnpm-lock.yaml .npmrc ./
+
+# 安装依赖
+RUN pnpm install --frozen-lockfile
+
+# 复制项目文件
+COPY . .
+
+
+# 构建 web 应用
+RUN pnpm run build
+
+# 暴露端口(根据实际需要调整)
+EXPOSE 8080
+
+# 启动命令
+CMD ["sh", "-c", "pnpm run start"]

+ 0 - 26
Dockerfile.release

@@ -1,26 +0,0 @@
-# 使用指定基础镜像
-FROM node:20.18.3
-
-RUN apt-get update 
-RUN apt-get install -y python3 build-essential
-
-# 设置工作目录
-WORKDIR /app
-
-# 复制package.json .npmrc和package-lock.json
-COPY package.json .npmrc package-lock.json* ./
-
-# 安装依赖
-RUN npm install
-
-# 复制项目文件
-COPY . .
-
-# 构建项目
-RUN npm run build
-
-# 暴露端口(根据实际需要调整)
-EXPOSE 23972
-
-# 启动命令
-CMD ["npm", "run", "start"]