common-workflows/docs/build-images.md
2025-12-19 05:31:18 +00:00

3.7 KiB
Raw Permalink Blame History

WorkFlows —— Build-images.yaml调用示例

示例 1: 根目录 Dockerfilebroccoli-api

# .gitea/workflows/build.yml
name: Build Docker Images

on:
  push:
    branches:
      - offline
    paths:
      - 'Dockerfile*'
      - 'requirements.txt'
      - '.gitea/workflows/build.yml'
  workflow_dispatch:

jobs:
  build-api:
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'Dockerfile.api'
      context: '.'
      image_name: 'broccoli-api'
      image_tag: 'v3.2.1'
      checkout_ref: 'offline'

示例 2: 子目录 Dockerfilebroccoli-frontend

# .gitea/workflows/build.yml
name: Build Frontend Docker Image

on:
  push:
    branches:
      - main
    paths:
      - 'Frontend/**'
      - '.gitea/workflows/build.yml'
  workflow_dispatch:

jobs:
  build-frontend:
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'Frontend/Dockerfile'
      context: 'Frontend/'
      image_name: 'broccoli-frontend'
      image_tag: 'v3.2.0'

示例 3: 带构建参数

# .gitea/workflows/build.yml
name: Build Docker Image

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'Dockerfile'
      context: '.'
      image_name: 'my-app'
      image_tag: 'v1.0.0'
      build_args: |
        NODE_ENV=production
        APP_VERSION=v1.0.0
        BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')        

示例 4: 多镜像构建

# .gitea/workflows/build-all.yml
name: Build All Docker Images

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build-api:
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'Dockerfile.api'
      context: '.'
      image_name: 'broccoli-api'
      image_tag: 'v3.2.1'

  build-frontend:
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'Frontend/Dockerfile'
      context: 'Frontend/'
      image_name: 'broccoli-frontend'
      image_tag: 'v3.2.0'

  build-worker:
    needs: [build-api]  # 可以设置依赖关系
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'services/worker/Dockerfile'
      context: 'services/worker'
      image_name: 'broccoli-worker'
      image_tag: 'v1.0.0'

示例 5: 禁用缓存

# .gitea/workflows/build.yml
name: Build Docker Image (No Cache)

on:
  workflow_dispatch:

jobs:
  build:
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'Dockerfile'
      context: '.'
      image_name: 'my-app'
      image_tag: 'latest'
      enable_cache: false

示例 6: 动态版本号

# .gitea/workflows/build.yml
name: Build Docker Image

on:
  push:
    tags:
      - 'v*'

jobs:
  build:
    uses: your-org/common-workflows/.gitea/workflows/reusable-docker-build.yml@main
    with:
      dockerfile: 'Dockerfile'
      context: '.'
      image_name: 'my-app'
      image_tag: ${{ github.ref_name }}  # 使用 tag 名称作为版本

核心特性

简洁专注 - 只做镜像构建,没有额外复杂功能
灵活路径 - 支持任意 Dockerfile 位置和构建上下文
缓存优化 - 可选的 Docker 层缓存加速构建
参数支持 - 支持传递构建参数
完整验证 - 自动验证镜像构建成功
详细日志 - 清晰的构建过程和结果展示
自动清理 - 构建后自动清理悬空镜像

这个简化版本更聚焦,更易维护!