171 lines
3.7 KiB
Markdown
171 lines
3.7 KiB
Markdown
# WorkFlows —— Build-images.yaml调用示例
|
||
|
||
### 示例 1: 根目录 Dockerfile(broccoli-api)
|
||
|
||
```yaml
|
||
# .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: 子目录 Dockerfile(broccoli-frontend)
|
||
|
||
```yaml
|
||
# .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: 带构建参数
|
||
|
||
```yaml
|
||
# .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: 多镜像构建
|
||
|
||
```yaml
|
||
# .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: 禁用缓存
|
||
|
||
```yaml
|
||
# .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: 动态版本号
|
||
|
||
```yaml
|
||
# .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 层缓存加速构建
|
||
✅ **参数支持** - 支持传递构建参数
|
||
✅ **完整验证** - 自动验证镜像构建成功
|
||
✅ **详细日志** - 清晰的构建过程和结果展示
|
||
✅ **自动清理** - 构建后自动清理悬空镜像
|
||
|
||
这个简化版本更聚焦,更易维护! |