# 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.17-SNAPSHOT
            branch: dev-master
          - 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' }}
