name: keylime-container-images

on:
  push:
    branches:
      - master
    tags:
      - "v*"
  workflow_dispatch:
    branches:
      - master

env:
  REGISTRY: quay.io
  IMAGE_BASE: quay.io/keylime

jobs:
  build-images:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Log in to the Container registry
        uses: docker/login-action@v1
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ secrets.QUAY_USER }}
          password: ${{ secrets.QUAY_TOKEN }}

      - name: Generate docker metadata for keylime_base
        id: meta_base
        uses: docker/metadata-action@v3
        with:
          images: |
            ${{ env.IMAGE_BASE }}/keylime_base
          tags: |
            type=ref,enable=true,priority=600,prefix=,suffix=,event=branch
            type=ref,enable=true,priority=600,prefix=,suffix=,event=tag
            type=sha,prefix=sha-

      - name: Generate docker metadata for keylime_verifier
        id: meta_verifier
        uses: docker/metadata-action@v3
        with:
          images: |
            ${{ env.IMAGE_BASE }}/keylime_verifier
          tags: |
            type=ref,enable=true,priority=600,prefix=,suffix=,event=branch
            type=ref,enable=true,priority=600,prefix=,suffix=,event=tag
            type=sha,prefix=sha-

      - name: Generate docker metadata for keylime_registrar
        id: meta_registrar
        uses: docker/metadata-action@v3
        with:
          images: |
            ${{ env.IMAGE_BASE }}/keylime_registrar
          tags: |
            type=ref,enable=true,priority=600,prefix=,suffix=,event=branch
            type=ref,enable=true,priority=600,prefix=,suffix=,event=tag
            type=sha,prefix=sha-

      - name: Generate docker metadata for keylime_tenant
        id: meta_tenant
        uses: docker/metadata-action@v3
        with:
          images: |
            ${{ env.IMAGE_BASE }}/keylime_tenant
          tags: |
            type=ref,enable=true,priority=600,prefix=,suffix=,event=branch
            type=ref,enable=true,priority=600,prefix=,suffix=,event=tag
            type=sha,prefix=sha-

      - name: Prepare dockerfiles
        run: |
          cd docker/release && ./generate-files.sh "${{ steps.meta_base.outputs.version }}" "${{ env.IMAGE_BASE }}/"

      - name: Build and push base
        id: build_base
        uses: docker/build-push-action@v2
        with:
          context: .
          file: docker/release/base/Dockerfile
          push: true
          tags: ${{ steps.meta_base.outputs.tags }}
          labels: ${{ steps.meta_base.outputs.labels }}

      - name: Build and push registrar
        id: build_registrar
        uses: docker/build-push-action@v2
        with:
          context: .
          file: docker/release/registrar/Dockerfile
          push: true
          tags: ${{ steps.meta_registrar.outputs.tags }}
          labels: ${{ steps.meta_registrar.outputs.labels }}

      - name: Build and push verifier
        id: build_verifier
        uses: docker/build-push-action@v2
        with:
          context: .
          file: docker/release/verifier/Dockerfile
          push: true
          tags: ${{ steps.meta_verifier.outputs.tags }}
          labels: ${{ steps.meta_verifier.outputs.labels }}

      - name: Build and push tenant
        id: build_tenant
        uses: docker/build-push-action@v2
        with:
          context: .
          file: docker/release/tenant/Dockerfile
          push: true
          tags: ${{ steps.meta_tenant.outputs.tags }}
          labels: ${{ steps.meta_tenant.outputs.labels }}
