name: Docker Hub Release # Trigger the workflow when a release is published on: release: types: [published] jobs: # Build and publish Docker image build-and-push: name: Build and Push Docker Image runs-on: ubuntu-latest timeout-minutes: 120 # Aumentado a 2 horas para dar más tiempo a la compilación steps: - name: Checkout code uses: actions/checkout@v4 # Set up Docker Buildx for efficient builds - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 # Login to Docker Hub - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} # Extract metadata (tags, labels) for Docker - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: ${{ secrets.DOCKERHUB_USERNAME }}/oxicloud # Generate Docker tags based on release tag, commit SHA, and latest tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=ref,event=branch type=sha type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/') }} # Build and push Docker image - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # Caché eliminado para evitar problemas de expiración de token platforms: linux/amd64,linux/arm64 # Build args if needed build-args: | VERSION=${{ github.ref_name }} # Post successful build notification - name: Post Success Notification if: success() run: | echo "🚢 Docker image for version ${{ github.ref_name }} has been successfully pushed to Docker Hub!"