# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: TM Integration Tests

env:
  # alpine:3.13
  ALPINE_VERSION: sha256:08d6ca16c60fe7490c03d10dc339d9fd8ea67c6466dea8d558526b1330a85930

on:
  push:
    paths:
      - .github/actions/tm-integration-tests/**
      - .github/workflows/tm.integration.tests.yml
      - GO_VERSION
      - traffic_monitor/**
      - lib/**
  create:
  pull_request:
    paths:
      - .github/actions/tm-integration-tests/**
      - .github/workflows/tm.integration.tests.yml
      - GO_VERSION
      - traffic_monitor/**
      - lib/**
    types: [ opened, reopened, ready_for_review, synchronize ]

jobs:
  TM_Integration_tests:
    if: github.event.pull_request.draft == false
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master
        with:
            fetch-depth: 1
      - name: Check Go Version
        run: echo "::set-output name=value::$(cat GO_VERSION)"
        id: go-version
      - name: Install Go
        uses: actions/setup-go@v2
        with:
          go-version: ${{ steps.go-version.outputs.value }}
      - name: Run integration tests
        uses: ./.github/actions/tm-integration-tests
        env:
          GOPATH: /github/workspace
