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"          
 |