53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
| name: Docker Build and Deploy
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches: [ main ]
 | |
|     paths:
 | |
|       - 'containers/**'
 | |
|       - 'Dockerfile*'
 | |
|       - '.gitea/workflows/docker.yml'
 | |
| 
 | |
| jobs:
 | |
|   build:
 | |
|     runs-on: ubuntu-latest
 | |
|     name: Build Docker Images
 | |
|     steps:
 | |
|       - name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
| 
 | |
|       - name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v3
 | |
| 
 | |
|       - name: Login to Container Registry
 | |
|         uses: docker/login-action@v3
 | |
|         with:
 | |
|           registry: ${{ secrets.REGISTRY_URL }}
 | |
|           username: ${{ secrets.REGISTRY_USERNAME }}
 | |
|           password: ${{ secrets.REGISTRY_PASSWORD }}
 | |
| 
 | |
|       - name: Build and push images
 | |
|         run: |
 | |
|           # 构建应用镜像
 | |
|           for dockerfile in containers/applications/*/Dockerfile; do
 | |
|             if [ -f "$dockerfile" ]; then
 | |
|               app_name=$(basename $(dirname "$dockerfile"))
 | |
|               echo "Building $app_name"
 | |
|               docker build -t "${{ secrets.REGISTRY_URL }}/$app_name:${{ github.sha }}" -f "$dockerfile" .
 | |
|               docker push "${{ secrets.REGISTRY_URL }}/$app_name:${{ github.sha }}"
 | |
|             fi
 | |
|           done          
 | |
| 
 | |
|   deploy-swarm:
 | |
|     runs-on: ubuntu-latest
 | |
|     name: Deploy to Docker Swarm
 | |
|     needs: build
 | |
|     steps:
 | |
|       - name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
| 
 | |
|       - name: Deploy to Swarm
 | |
|         run: |
 | |
|           # 这里可以通过 SSH 连接到 Swarm 管理节点进行部署
 | |
|           echo "Deploy to Swarm placeholder"          
 |