Browse Source

👷 ci(release): add release workflow and scripts

- add Gitea workflow for Docker build and push on release tags
- create release_tag.sh script for version tagging and pushing
- optimize Dockerfile by removing unnecessary podman installation
- implement version extraction from release tags for Docker image tagging
yourname 2 months ago
parent
commit
d73fe8a832
3 changed files with 103 additions and 7 deletions
  1. 48 0
      .gitea/workflows/release-tag.yaml
  2. 0 7
      Dockerfile
  3. 55 0
      scripts/release_tag.sh

+ 48 - 0
.gitea/workflows/release-tag.yaml

@@ -0,0 +1,48 @@
+name: Docker Build and Push
+on:
+  push:
+    tags:
+      - 'release/*'  # 匹配所有release开头的标签,如release/v0.1.6
+
+jobs:
+  build-and-push:
+    runs-on: ubuntu-latest
+    steps:
+      - run: echo "🎉 该作业由 ${{ gitea.event_name }} 事件自动触发。"
+      - run: echo "🐧 此作业当前在 Gitea 托管的 ${{ runner.os }} 服务器上运行!"
+      - run: echo "🔎 您的标签名称是 ${{ gitea.ref_name }},仓库是 ${{ gitea.repository }}。"
+      - name: 检出仓库代码
+        uses: actions/checkout@v4
+      - run: echo "💡 ${{ gitea.repository }} 仓库已克隆到运行器。"
+      - run: echo "🖥️ 工作流现在已准备好在运行器上测试您的代码。"
+      - name: 列出仓库中的文件
+        run: |
+          ls ${{ gitea.workspace }}
+      - run: echo "🍏 此作业的状态是 ${{ job.status }}。"
+
+      - name: 设置 Docker Buildx
+        uses: docker/setup-buildx-action@v3
+      
+      - name: 从标签名中提取版本号
+        id: extract_version
+        run: |
+          # 从标签名中提取版本号,例如从 release/v0.1.6 中提取 v0.1.6
+          VERSION=$(echo "${{ gitea.ref_name }}" | sed 's|release/||')
+          echo "VERSION=$VERSION" >> $GITHUB_ENV
+          echo "提取的版本号:$VERSION"
+      
+      - name: 登录 Docker 注册表
+        uses: docker/login-action@v3
+        with:
+          registry: registry.cn-beijing.aliyuncs.com
+          username: ${{ secrets.ALI_DOCKER_REGISTRY_USERNAME }}
+          password: ${{ secrets.ALI_DOCKER_REGISTRY_PASSWORD }}
+
+      - name: 构建并推送
+        uses: docker/build-push-action@v5
+        with:
+          context: .
+          file: ./Dockerfile
+          push: true
+          tags: |
+            registry.cn-beijing.aliyuncs.com/d8dcloud/d8d-playwright:${{ env.VERSION }}

+ 0 - 7
Dockerfile

@@ -1,9 +1,2 @@
 FROM registry.cn-beijing.aliyuncs.com/d8dcloud/d8d-ai-vscode:playwright-1.55.0-3
 
-# Install podman
-RUN apt-get update && apt-get install -y \
-    podman \
-    && rm -rf /var/lib/apt/lists/*
-
-# Verify podman installation
-RUN podman --version

+ 55 - 0
scripts/release_tag.sh

@@ -0,0 +1,55 @@
+#!/bin/bash
+
+# 版本标签创建与推送脚本
+# 使用方法: ./release_tag.sh v0.0.3
+
+# 检查是否提供了版本号参数
+if [ -z "$1" ]; then
+    echo "错误: 请提供版本号作为参数"
+    echo "用法: $0 <版本号>"
+    echo "示例: $0 v1.2.3"
+    exit 1
+fi
+
+# 获取版本号参数
+VERSION=$1
+
+# 检查是否在 Git 仓库中
+if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
+    echo "错误: 当前目录不是 Git 仓库"
+    exit 1
+fi
+
+# 检查是否有未提交的更改
+if [ -n "$(git status --porcelain)" ]; then
+    echo "警告: 有未提交的更改,建议先提交"
+    read -p "是否继续? (y/n): " response
+    if [[ ! $response =~ ^[Yy]$ ]]; then
+        exit 1
+    fi
+fi
+
+# 检查远程仓库是否存在
+if ! git remote | grep -q "gitea"; then
+    echo "错误: 未找到名为 'gitea' 的远程仓库"
+    exit 1
+fi
+
+# 创建并推送标签
+echo "正在创建标签: $VERSION"
+git tag "$VERSION"
+
+if [ $? -ne 0 ]; then
+    echo "错误: 创建标签失败"
+    exit 1
+fi
+
+echo "正在推送标签到 gitea 远程仓库..."
+git push gitea "$VERSION"
+
+if [ $? -ne 0 ]; then
+    echo "错误: 推送标签失败"
+    exit 1
+fi
+
+echo "成功! 标签 $VERSION 已创建并推送到 gitea 远程仓库"