#
# 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: Build and Version Runner Docker Image

on:
  push:
    branches: ['master']
    paths: ['.github/gh-actions-self-hosted-runners/arc/images/**','.github/workflows/build_runner_image.yml']
  pull_request:
    branches: ['master']
    paths: ['.github/gh-actions-self-hosted-runners/arc/images/**']
  workflow_dispatch:
env:
  docker_registry: us-central1-docker.pkg.dev
  docker_repo: apache-beam-testing/beam-github-actions/beam-arc-runner
jobs:
  build-and-version-runner:
    if: github.repository == 'apache/beam'
    env:
        working-directory: .github/gh-actions-self-hosted-runners/arc/images/
    runs-on: [self-hosted, ubuntu-20.04]

    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        ref: ${{ github.event.pull_request.head.sha }}
    - name: GCloud Docker credential helper
      run: |
        gcloud auth configure-docker ${{env.docker_registry}}
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3
    - name: Build and Load to docker
      uses: docker/build-push-action@v6
      with:
        context: ${{ env.working-directory }}
        load: true
        tags: |
          ${{env.docker_registry}}/${{env.docker_repo}}:latest
          ${{env.docker_registry}}/${{env.docker_repo}}:${{ github.sha }}
    - name: Push Docker image
      if: github.ref == 'refs/heads/master'
      id: docker_build
      uses: docker/build-push-action@v6
      with:
        context: ${{ env.working-directory }}
        push: true
        tags: |
          ${{env.docker_registry}}/${{env.docker_repo}}:latest
          ${{env.docker_registry}}/${{env.docker_repo}}:${{ github.sha }}
