# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: "Publish SNAPSHOTs"

on:
  schedule:
    - cron: '0 0 * * *' # Deploy every day
  workflow_dispatch:

env:
  REGISTRY:    ghcr.io
  OWNER:       apache
  IMAGE_REPO:  flink-docker

jobs:
  snapshot:
    # Do not run for forks.
    if: github.repository_owner == 'apache'
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    strategy:
      max-parallel: 1
      matrix:
        java_version: [8, 11]
        build:
          - flink_version: 1.18-SNAPSHOT
            branch: dev-master
          - flink_version: 1.17-SNAPSHOT
            branch: dev-1.17
          - flink_version: 1.16-SNAPSHOT
            branch: dev-1.16
          - flink_version: 1.15-SNAPSHOT
            branch: dev-1.15
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ matrix.build.branch }}

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
        with:
          image: tonistiigi/binfmt:latest
          platforms: all

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Log in to the Container registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Prepare Dockerfiles and set env
        run: |
          IMAGE_NAME=${{ matrix.build.flink_version }}-scala_2.12-java${{ matrix.java_version }}
          echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
          echo "TAG=${REGISTRY}/${OWNER}/${IMAGE_REPO}:${IMAGE_NAME}-debian" >> $GITHUB_ENV
          ./add-custom.sh -u "https://s3.amazonaws.com/flink-nightly/flink-${{ matrix.build.flink_version }}-bin-scala_2.12.tgz" -j ${{ matrix.java_version }} -n ${IMAGE_NAME}
          echo "DOCKER_FILE=$(ls ./*/*${{ matrix.build.flink_version }}*${{ matrix.java_version }}*/Dockerfile)" >> $GITHUB_ENV

      - name: Environment
        run: env

      - name: Build and push Docker images (supported platforms)
        uses: docker/bake-action@v1.7.0
        with:
          files: |
            .github/workflows/docker-bake.hcl
            ${{ steps.meta.outputs.bake-file }}
          targets: bake-platform
          push: ${{ github.event_name != 'pull_request' }}
