on:
  workflow_dispatch:
    branches:
      - 'master'
  repository_dispatch:
    types: [prerelease]

jobs:
  setup-packet:
    if: github.repository == 'hashicorp/vagrant-blackbox'
    runs-on: self-hosted
    name: Build Packet Instance
    steps:
      - name: Code Checkout
        uses: actions/checkout@v1
      - name: Create packet instance
        run: ./.ci/spec/create-packet.sh
        working-directory: ${{github.workspace}}

  setup-hosts:
    if: github.repository == 'hashicorp/vagrant-blackbox'
    runs-on: self-hosted
    name: Vagrant-Spec Start Hosts
    needs: setup-packet
    strategy:
      matrix:
        host_os: ['hashicorp/bionic64']
        guest_os: ['hashicorp-vagrant/ubuntu-16.04']
        providers: ['docker', 'virtualbox']
    steps:
      - name: Code Checkout
        uses: actions/checkout@v1
      - name: Create packet host for tests (provider ${{ matrix.providers }})
        run: ./.ci/spec/create-hosts.sh
        working-directory: ${{github.workspace}}
        env:
          VAGRANT_HOST_BOXES: ${{matrix.host_os}}
          VAGRANT_GUEST_BOXES: ${{matrix.guest_os}}
          VAGRANT_PRERELEASE_VERSION: ${{ github.event.client_payload.prerelease_version }}
          VAGRANT_SPEC_PROVIDERS: ${{matrix.providers}}

  spec-tests:
    if: github.repository == 'hashicorp/vagrant-blackbox'
    runs-on: self-hosted
    name: Vagrant-Spec Tests
    needs: setup-hosts
    strategy:
      matrix:
        host_os: ['hashicorp/bionic64']
        guest_os: ['hashicorp-vagrant/ubuntu-16.04']
        docker_images: ['nginx']
        providers: ['docker', 'virtualbox']
    steps:
      - name: Run Tests with host ${{ matrix.host_os }} using provider ${{ matrix.providers }}
        run: ./.ci/spec/run-test.sh
        working-directory: ${{github.workspace}}
        env:
          VAGRANT_HOST_BOXES: ${{matrix.host_os}}
          VAGRANT_GUEST_BOXES: ${{matrix.guest_os}}
          VAGRANT_SPEC_PROVIDERS: ${{matrix.providers}}
          VAGRANT_DOCKER_IMAGES: ${{matrix.docker_images}}

  cleanup:
    if: github.repository == 'hashicorp/vagrant-blackbox'
    runs-on: self-hosted
    name: Cleanup Post Vagrant-Spec Tests
    needs: spec-tests
    steps:
      - name: Clean Packet
        if: always()
        run: ./.ci/spec/clean-packet.sh
      - name: Clean Workspace
        if: always()
        run: rm -rf ${{ github.workspace }}
