# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

# GitHub recommends pinning actions to a commit SHA.
# To get a newer version, you will need to update the SHA.
# You can also reference a tag or branch, but the action may change without warning.

name: Publish Docker image

on:

  push:
    tags:
      - v*

  workflow_dispatch:

env:
  image: hadr0n/scraibe

jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    permissions:
      packages: write
      contents: read
      security-events: write
    steps:
      - name: Check out the repo
        uses: actions/checkout@v4
        with:
          fetch-tags: true
          fetch-depth: 0

      - name: Get Version Tag
        id: version
        run: |
          echo "tag=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT
          
      - name: Overwrite label tag
        run: sed -i 's/LABEL version=".*"/LABEL version="'${{ steps.version.outputs.tag }}'"/' Dockerfile
          
      - name: Test name and tag
        run: | 
          echo "${{ env.image }}:latest,${{ env.image }}:${{ steps.version.outputs.tag }}"
          
      - name: Log in to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push Docker image
        id: push
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./Dockerfile
          push: true
          tags: "${{ env.image }}:latest,${{ env.image }}:${{ steps.version.outputs.tag }}"
      
      - name: SBOM Generation
        uses: anchore/sbom-action@v0
        with:
          image: ${{ env.image }}:latest

      - name: Scan image
        id: scan
        uses: anchore/scan-action@v3
        with:
          image: ${{ env.image }}:latest
          fail-build: false
      
      - name: upload Anchore scan SARIF report
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: ${{ steps.scan.outputs.sarif }}

      # - name: Inspect action SARIF report
      #   run: cat ${{ steps.scan.outputs.sarif }}

      - uses: actions/upload-artifact@v4
        with:
          name: SARIF report
          path: ${{ steps.scan.outputs.sarif }}

      # - name: Generate artifact attestation
      #   uses: actions/attest-build-provenance@v1
      #   with:
      #     subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
      #     subject-digest: ${{ steps.push.outputs.digest }}
      #     push-to-registry: false
