name: 'Common Docker Build'

description: 'Reusable action for building and pushing Docker images'

inputs:
  build_tags:
    description: 'Tags for the Docker build'
    required: true
  manifest_tags:
    description: 'Tags for the Docker manifest'
    required: true
  flavor:
    description: 'Flavor for the Docker manifest'
    required: true
  docker_username:
    description: 'DockerHub username'
    required: true
  docker_password:
    description: 'DockerHub password'
    required: true

runs:
  using: 'composite'
  steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up QEMU
      uses: docker/setup-qemu-action@v1

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

    - name: Login to DockerHub
      uses: docker/login-action@v1
      with:
        username: ${{ inputs.docker_username }}
        password: ${{ inputs.docker_password }}

    - name: Build and push
      uses: docker/build-push-action@v2
      with:
        context: .
        file: ./Dockerfile
        push: true
        tags: ${{ inputs.build_tags }}
        platforms: linux/amd64, linux/arm64/v8, linux/arm/v7

    - name: Create and push manifest
      uses: docker/metadata-action@v3
      with:
        images: csmith1865/obscreen
        tags: ${{ inputs.manifest_tags }}
        flavor: ${{ inputs.flavor }}
