name: Publish fake backend images for smoke tests

on:
  push:
    paths:
      - 'smoke-tests/images/fake-backend/**'
      - '.github/workflows/publish-smoke-test-fake-backend-images.yml'
    branches:
      - main
  workflow_dispatch:

jobs:
  publishLinux:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set up JDK for running Gradle
        uses: actions/setup-java@v3
        with:
          distribution: temurin
          java-version: 17

      - name: Login to GitHub package registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Set tag
        run: echo "TAG=$(date '+%Y%m%d').$GITHUB_RUN_ID" >> $GITHUB_ENV

      - name: Build Docker image
        uses: gradle/gradle-build-action@v2
        with:
          arguments: ":smoke-tests:images:fake-backend:jib -Djib.httpTimeout=120000 -Djib.console=plain -PextraTag=${{ env.TAG }}"

  publishWindows:
    runs-on: windows-latest
    defaults:
      run:
        shell: bash
    steps:
      - name: Support long paths
        run: git config --system core.longpaths true

      - uses: actions/checkout@v3

      - name: Set up JDK 11 for running Gradle
        uses: actions/setup-java@v3
        with:
          distribution: temurin
          java-version: 11

      - name: Login to GitHub package registry
        uses: azure/docker-login@v1
        with:
          login-server: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Set tag
        run: echo "TAG=$(date '+%Y%m%d').$GITHUB_RUN_ID" >> $GITHUB_ENV

      - name: Build Docker image
        uses: gradle/gradle-build-action@v2
        with:
          arguments: ":smoke-tests:images:fake-backend:dockerPush -PextraTag=${{ env.TAG }}"

  open-issue-on-failure:
    needs:
      - publishLinux
      - publishWindows
    if: failure()
    uses: ./.github/workflows/reusable-open-issue-on-failure.yml
