name: CI to Docker Hub

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ "*" ]
    tags: [ "*" ]
  pull_request:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:

      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Install uv
        uses: astral-sh/setup-uv@v5

      - name: UV sync
        run:  uv auth login gitea.linter-home.com --username jonas --password ${{ secrets.CI_TOKEN }} && uv lock

      
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Login to Gitea Docker Registry
        uses: docker/login-action@v2
        with:
          registry: ${{ vars.REGISTRY }}
          username: ${{ vars.USER_NAME }}
          password: ${{ secrets.CI_TOKEN }}

      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v5
        with:
         images: ${{ vars.REGISTRY }}/${{ vars.USER_NAME }}/asa_api
         # generate Docker tags based on the following events/attributes
         tags: |
           type=schedule
           type=ref,event=branch
           type=ref,event=pr
           type=ref,event=tag
           type=semver,pattern={{version}}
           type=semver,pattern={{major}}.{{minor}}
           type=semver,pattern={{major}}
           type=sha

      # - name: Debug DNS Resolution
      #   run: sudo apt-get update && sudo apt-get install -y dnsutils &&
      #     nslookup https://${{ vars.REGISTRY }}



      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          registry: ${{ vars.REGISTRY }}
          username: ${{ vars.USER_NAME }}
          password: ${{ secrets.CI_TOKEN }}

      - name: Build and push
        id: docker_build
        uses: docker/build-push-action@v6
        with:
          context: .
          build-args: |
            CI_TOKEN=${{ secrets.CI_TOKEN }}
          push: ${{ github.event_name != 'pull_request'  }}
          tags: ${{ steps.meta.outputs.tags  }}
          labels: ${{ steps.meta.outputs.labels  }}

      - name: Image digest
        run: echo ${{ steps.docker_build.outputs.digest }}