update
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
# 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 层缓存加速构建
|
||||
✅ **参数支持** - 支持传递构建参数
|
||||
✅ **完整验证** - 自动验证镜像构建成功
|
||||
✅ **详细日志** - 清晰的构建过程和结果展示
|
||||
✅ **自动清理** - 构建后自动清理悬空镜像
|
||||
|
||||
这个简化版本更聚焦,更易维护!
|
||||
@@ -0,0 +1,216 @@
|
||||
# WorkFlows —— Deploy-docker.yaml调用示例
|
||||
|
||||
### 示例 1: 基本部署(broccoli-api offline 分支)
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/deploy-offline.yml
|
||||
name: Deploy Offline Branch
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- offline
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'docker-compose-offline.yml'
|
||||
checkout_ref: 'offline'
|
||||
enable_sparse_checkout: true
|
||||
sparse_checkout: |
|
||||
.gitea/
|
||||
config/
|
||||
docker-compose-offline.yml
|
||||
cleanup_containers: true
|
||||
```
|
||||
|
||||
### 示例 2: 完整部署(包含数据导入)
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/deploy.yml
|
||||
name: Deploy Services
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'docker-compose.yml'
|
||||
startup_wait: 30
|
||||
run_importer: true
|
||||
importer_service: 'importer'
|
||||
cleanup_containers: true
|
||||
cleanup_volumes: false
|
||||
```
|
||||
|
||||
### 示例 3: 带环境变量的部署
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/deploy-prod.yml
|
||||
name: Deploy Production
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'docker-compose.prod.yml'
|
||||
checkout_ref: 'main'
|
||||
env_vars: |
|
||||
ENVIRONMENT=production
|
||||
LOG_LEVEL=info
|
||||
ENABLE_METRICS=true
|
||||
startup_wait: 60
|
||||
```
|
||||
|
||||
### 示例 4: 子目录 Compose 文件
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/deploy-services.yml
|
||||
name: Deploy Microservices
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'services/docker-compose.yml'
|
||||
compose_dir: 'services'
|
||||
enable_sparse_checkout: true
|
||||
sparse_checkout: |
|
||||
services/
|
||||
cleanup_containers: true
|
||||
```
|
||||
|
||||
### 示例 5: 多环境部署
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/deploy-multi-env.yml
|
||||
name: Deploy Multiple Environments
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
environment:
|
||||
description: 'Target environment'
|
||||
required: true
|
||||
type: choice
|
||||
options:
|
||||
- dev
|
||||
- staging
|
||||
- prod
|
||||
|
||||
jobs:
|
||||
deploy-dev:
|
||||
if: ${{ github.event.inputs.environment == 'dev' }}
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'docker-compose.dev.yml'
|
||||
checkout_ref: 'develop'
|
||||
cleanup_containers: true
|
||||
|
||||
deploy-staging:
|
||||
if: ${{ github.event.inputs.environment == 'staging' }}
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'docker-compose.staging.yml'
|
||||
checkout_ref: 'staging'
|
||||
startup_wait: 30
|
||||
cleanup_containers: true
|
||||
|
||||
deploy-prod:
|
||||
if: ${{ github.event.inputs.environment == 'prod' }}
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'docker-compose.prod.yml'
|
||||
checkout_ref: 'main'
|
||||
startup_wait: 60
|
||||
run_importer: true
|
||||
cleanup_containers: true
|
||||
```
|
||||
|
||||
### 示例 6: 完整的构建+部署流程
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/ci-cd.yml
|
||||
name: Build and Deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- offline
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
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'
|
||||
|
||||
deploy:
|
||||
needs: build
|
||||
uses: your-org/common-workflows/.gitea/workflows/reusable-docker-deploy.yml@main
|
||||
with:
|
||||
compose_file: 'docker-compose-offline.yml'
|
||||
checkout_ref: 'offline'
|
||||
enable_sparse_checkout: true
|
||||
sparse_checkout: |
|
||||
.gitea/
|
||||
config/
|
||||
docker-compose-offline.yml
|
||||
startup_wait: 30
|
||||
run_importer: true
|
||||
cleanup_containers: true
|
||||
```
|
||||
|
||||
### 示例 7: 仅部署特定服务
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/deploy-api-only.yml
|
||||
name: Deploy API Service Only
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Deploy API
|
||||
run: |
|
||||
docker compose -f docker-compose.yml up -d api
|
||||
|
||||
# 或者调用可复用工作流处理完整流程
|
||||
```
|
||||
|
||||
## 核心特性
|
||||
|
||||
✅ **灵活配置** - 支持任意 Compose 文件路径和工作目录
|
||||
✅ **稀疏检出** - 可选的稀疏检出节省空间和时间
|
||||
✅ **资源清理** - 可控的容器和卷清理
|
||||
✅ **数据导入** - 支持一次性导入任务
|
||||
✅ **环境变量** - 支持传递部署时环境变量
|
||||
✅ **服务验证** - 自动检查服务状态并显示失败日志
|
||||
✅ **超时控制** - 可配置停止和启动等待时间
|
||||
✅ **详细日志** - 完整的部署过程和服务日志
|
||||
|
||||
这样你就有了两个专注、可复用的工作流:
|
||||
1. `reusable-docker-build.yml` - 专注于镜像构建
|
||||
2. `reusable-docker-deploy.yml` - 专注于容器编排部署
|
||||
|
||||
两者可以独立使用,也可以组合成完整的 CI/CD 流程!
|
||||
Reference in New Issue
Block a user