# This is a docker build check and publish job:
# 1. PR Triggered docker image build check
#   - is for image build check
#   - Enable on main/*-dev branch
#   - push: ${{ github.event_name != 'pull_request' }} ==> false
# 2. branches push trigger image publish
#   - is for branch/dev/nightly image
#   - commits are merge into main/*-dev  ==> vllm-ascend:main / vllm-ascend:*-dev
# 3. tags push trigger image publish
#   - is for final release image
#   - Publish when tag with v* (pep440 version)  ===>  vllm-ascend:v1.2.3 / vllm-ascend:v1.2.3rc1
name: Image Build and Push
on:
  schedule:
    # UTC+8: 8am, 12pm, 16pm, 22pm
    - cron: '0 0,4,8,14 * * *'
  push:
    tags:
      - 'v*'
  workflow_dispatch:
    inputs:
      tag:
        description: 'Docker tag for build results'
        type: string
        default: main
        required: true

jobs:
  image_build:
    name: Image Build and Push
    strategy:
      matrix:
        build_meta:
          - name: A2 Ubuntu
            dockerfile: Dockerfile
            suffix: ''
          - name: A2 openeuler
            dockerfile: Dockerfile.openEuler
            suffix: 'openeuler'
          - name: A3 Ubuntu
            dockerfile: Dockerfile.a3
            suffix: 'a3'
          - name: A3 openEuler
            dockerfile: Dockerfile.a3.openEuler
            suffix: 'a3-openeuler'
          # - name: 310P Ubuntu
          #   dockerfile: Dockerfile.310p
          # - name: 310P openEuler
          #   dockerfile: Dockerfile.310p.openEuler
    uses: ./.github/workflows/_schedule_image_build.yaml
    with:
      dockerfile: ${{ matrix.build_meta.dockerfile }}
      suffix: ${{ matrix.build_meta.suffix }}
      quay_username: ${{ vars.QUAY_USERNAME }}
      should_push: ${{ github.repository_owner == 'vllm-project' }}
      workflow_dispatch_tag: ${{ inputs.tag }}
    secrets:
      QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }}
