🏡 index : quine-global-boneyard/electron-builder.git

name: Docker Deployment

on:
  # release:
  #   types: [published]
  push:
    tags:
      - docker*
  workflow_dispatch:

permissions:
  contents: read

env:
  LATEST_IMAGE_NODE_MAJOR_VERSION: 22

jobs:
  run-docker-build-and-test:
    uses: ./.github/workflows/test.yaml
    with:
      rebuild-docker-images-call: true

  deploy:
    name: Build and Push Docker
    needs: run-docker-build-and-test
    runs-on: ubuntu-latest
    strategy:
      fail-fast: true
      matrix:
        nodeMajorVersion: [
          14, 16, 18, 20, 22
        ]
    steps:
      - name: Download images artifact - node${{ matrix.nodeMajorVersion }}
        uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4
        with:
          name: electron-builder-all-${{ matrix.nodeMajorVersion }}
          path: ${{ runner.temp }}

      - name: Load all images
        run: docker image load --input ${{ runner.temp }}/electron-builder-all-${{ matrix.nodeMajorVersion }}.tar

      - name: Tag LTS (${{ env.LATEST_IMAGE_NODE_MAJOR_VERSION }}) images for electron-builder latest/wine/wine-chrome/wine-mono
        if: ${{ matrix.nodeMajorVersion == env.LATEST_IMAGE_NODE_MAJOR_VERSION }}
        run: |
          docker image tag electronuserland/builder:${{ env.LATEST_IMAGE_NODE_MAJOR_VERSION }} electronuserland/builder:latest
          docker image tag electronuserland/builder:${{ env.LATEST_IMAGE_NODE_MAJOR_VERSION }}-wine electronuserland/builder:wine
          docker image tag electronuserland/builder:${{ env.LATEST_IMAGE_NODE_MAJOR_VERSION }}-wine-mono electronuserland/builder:wine-mono
          docker image tag electronuserland/builder:${{ env.LATEST_IMAGE_NODE_MAJOR_VERSION }}-wine-chrome electronuserland/builder:wine-chrome

      - name: List all images and tags
        run: docker image ls -a

      - name: Login to DockerHub
        uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Push all Docker images (workflow_dispatch test)
        if: github.event_name == 'workflow_dispatch'
        run: echo "TESTING step logic. (this would normally trigger docker push)"

      - name: Push all Docker images
        if: github.event_name != 'workflow_dispatch'
        run: docker image push --all-tags electronuserland/builder