name: basket-api

on:
  push:
    branches:
    - master
    - dev
    - feature/github-actions
    paths:
    - src/BuildingBlocks/*
    - src/Services/Basket/*
    - .github/workflows/basket-api.yml
  
  pull_request:
    branches:
    - master
    - dev
env:
  REGISTRY_ENDPOINT: borjasanes
  REGISTRY_HOST: docker.io
  SERVICE: basket-api
  IMAGE: basket.api

jobs:

  BuildContainersForPR_Linux:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'pull_request' }}
    steps:
    - name: 'Checkout Github Action'
      uses: actions/checkout@master
      
    - name: Compose build ${{ env.SERVICE }}
      run: sudo -E docker-compose build ${{ env.SERVICE }}
      working-directory: ./src
      shell: bash
      env:
        TAG: ${{ env.BRANCH }}
        REGISTRY: ${{ env.REGISTRY_ENDPOINT }}

  BuildContainersForPR_Windows:
    runs-on: windows-2019
    if:  ${{ false }}
    # if: ${{ github.event_name == 'pull_request' }}
    steps:
    - name: 'Checkout Github Action'
      uses: actions/checkout@master

    - name: Compose build ${{ env.SERVICE  }}
      run: docker-compose build ${{ env.SERVICE }}
      working-directory: ./src
      shell: pwsh
      env:
        TAG: ${{ env.branch }}
        REGISTRY: ${{ env.REGISTRY_ENDPOINT }}
        PLATFORM: win
        NODE_IMAGE: stefanscherer/node-windows:10
  BuildLinux:
    runs-on: ubuntu-latest
    if: ${{ github.event_name != 'pull_request' }}
    steps:
    - name: 'Checkout Github Action'
      uses: actions/checkout@master

    - name: Login to Container Registry
      uses: docker/login-action@v1
      with:
        registry: ${{ env.REGISTRY_HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}

    - name: Set branch name as env variable
      run: |
        currentbranch=$(echo ${GITHUB_REF##*/})
        echo "running on $currentbranch"
        echo "BRANCH=$currentbranch" >> $GITHUB_ENV
      shell: bash

    # - name: Compose build ${{ env.SERVICE }}
    #   run: sudo -E docker-compose build ${{ env.SERVICE }}
    #   working-directory: ./src
    #   shell: bash
    #   env:
    #     TAG: ${{ env.BRANCH }}
    #     REGISTRY: ${{ env.REGISTRY_ENDPOINT }}

    # - name: Compose push ${{ env.SERVICE }}
    #   run: sudo -E docker-compose push ${{ env.SERVICE }}
    #   working-directory: ./src
    #   shell: bash
    #   env:
    #     TAG: ${{ env.BRANCH }}
    #     REGISTRY: ${{ env.REGISTRY_ENDPOINT }}

    - name: Create multiarch manifest
      run: |
        mkdir -p ~/.docker
        echo $HOME/.docker/config.json > ~/.docker/config.json
        cat ~/.docker/config.json
        sed '$ s/.$//' ~/.docker/config.json
        echo ', "experimental": "enabled" }' >> ~/.docker/config.json
        cat ~/.docker/config.json
        docker --config ~/.docker manifest create ${{ env.REGISTRY_ENDPOINT  }}/${{ env.IMAGE  }}:${{ env.BRANCH  }} ${{ env.REGISTRY_ENDPOINT  }}/${{ env.IMAGE  }}:linux-${{ env.BRANCH  }}
        docker --config ~/.docker manifest create ${{ env.REGISTRY_ENDPOINT  }}/${{ env.IMAGE  }}:latest ${{ env.REGISTRY_ENDPOINT  }}/${{ env.IMAGE  }}:linux-latest
        docker --config ~/.docker manifest push ${{ env.REGISTRY_ENDPOINT  }}/${{ env.IMAGE  }}:${{ env.BRANCH  }}
        docker --config ~/.docker manifest push ${{ env.REGISTRY_ENDPOINT  }}/${{ env.IMAGE  }}:latest
      shell: bash

  BuildWindows:
    runs-on: windows-2019
    if:  ${{ false }}
    # if: ${{ github.event_name != 'pull_request' }}
    steps:
    - name: 'Checkout Github Action'
      uses: actions/checkout@master

    - name: Login to Container Registry
      uses: azure/docker-login@v1
      with:
        login-server: ${{ env.REGISTRY_HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        
    - name: Set branch name as env variable
      shell: pwsh
      run: echo "BRANCH=$($env:GITHUB_REF.replace('refs/heads/', ''))" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

    - name: Compose build ${{ env.SERVICE }}
      run: docker-compose build ${{ env.SERVICE }}
      working-directory: ./src
      shell: pwsh
      env:
        TAG: ${{ env.BRANCH }}
        REGISTRY: ${{ env.REGISTRY_ENDPOINT }}

    - name: Compose push ${{ env.SERVICE }}
      run: docker-compose push ${{ env.SERVICE }}'
      working-directory: ./src
      shell: pwsh
      env:
        TAG: ${{ env.BRANCH }}
        REGISTRY: ${{ env.REGISTRY_ENDPOINT }}