### This workflow setup instance then build and push images ###
name: Multi-arch build stable

on:
  push:
    tags:
      - "v*-stable"

env:
  COMPANY_NAME: "onlyoffice"
  PRODUCT_NAME: "documentserver" 

jobs:
  build:
    name: Build 
    runs-on: ubuntu-latest
    continue-on-error: ${{ matrix.condition }}
    strategy:
      matrix:
        images: ["documentserver-stable"]
        edition: ["", "-ee", "-de"]
        condition: [true]
    steps:
      - name: Checkout code 
        uses: actions/checkout@v3

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

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
     
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

      - name: Get Tag Name
        id: tag_name
        run: |
          echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/}

      - name: Build documentserver-release
        run: |
          TAG=$(echo ${{ steps.tag_name.outputs.SOURCE_TAG }} | sed 's/^.//; s/-stable//')
          SHORTER_TAG=$(echo ${TAG} | grep -o -P '^[\d]+\.[\d]+\.[\d]+')
          SHORTEST_TAG=$(echo ${TAG} | grep -o -P '^[\d]+\.[\d]+')
          IMAGE_STATUS=$(docker manifest inspect ${{ env.COMPANY_NAME }}/4testing-${{ env.PRODUCT_NAME }}${{ matrix.edition }}:$TAG > /dev/null ; echo $?)
             if [[ "$IMAGE_STATUS" = "0" ]]; then
                echo "Image present on docker.hub >> start build stable version"
                echo "FROM ${{ env.COMPANY_NAME }}/4testing-${{ env.PRODUCT_NAME }}${{ matrix.edition }}:$TAG as ${{ env.PRODUCT_NAME }}-stable" >> Dockerfile.stable
                PRODUCT_EDITION=${{ matrix.edition }} PRODUCT_NAME=${{ env.PRODUCT_NAME }} \
                COMPANY_NAME=${{ env.COMPANY_NAME}} DOCKERFILE=Dockerfile.stable \
                   TAG=$TAG \
                   SHORTER_TAG=$SHORTER_TAG \
                   SHORTEST_TAG=$SHORTEST_TAG \
                   docker buildx bake \
                   -f docker-bake.hcl ${{ matrix.images }} \
                   --push 
                echo "DONE: Build success >> exit with 0"
                exit 0
             else
                echo "FAILED: Image with tag $TAG do not presented on docker.hub >> build will not started >> exit with 1"
                exit 1
             fi
        shell: bash