name: Docker

on: [push, pull_request]

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: npm install
      - run: npm test
      - run: ./scripts/build-docker.sh
      - run: ./scripts/test-docker.sh

  publish:
    if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/v'))
    name: Publish
    needs: [build]
    runs-on: ubuntu-latest
    steps:
      - name: Check Branch
        id: check-branch
        run: |
          if [[ ${{ github.ref }} =~ ^refs/heads/(master|v[0-9]+\.[0-9]+.*)$ ]]; then
              echo ::set-output name=match::true
          fi  # See: https://stackoverflow.com/a/58869470/1123955
      - name: Is A Publish Branch
        if: steps.check-branch.outputs.match == 'true'
        run: curl -X POST -d '{"from":"GitHub Action"}' "$DOCKER_REBUILD_URL"
        env:
          DOCKER_REBUILD_URL: ${{ secrets.DOCKER_REBUILD_URL }}
      - name: Is Not A Publish Branch
        if: steps.check-branch.outputs.match != 'true'
        run: echo 'Not A Publish Branch'
