#
# 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@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd
    - name: Build and Load to docker
      uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294
      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@d08e5c354a6adb9ed34480a06d141179aa583294
      with:
        context: ${{ env.working-directory }}
        push: true
        tags: |
          ${{env.docker_registry}}/${{env.docker_repo}}:latest
          ${{env.docker_registry}}/${{env.docker_repo}}:${{ github.sha }}
