# 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: E2E

on:
  pull_request:
  push:
    branches:
      - main

concurrency:
  group: e2e-istio-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  als:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    strategy:
      fail-fast: true
      matrix:
        analyzer: [k8s-mesh, mx-mesh]
        istio_version: [1.7.1, 1.8.2, 1.9.1]
    name: Istio(${{ matrix.istio_version }})+ALS(${{ matrix.analyzer }})
    env:
      ISTIO_VERSION: ${{ matrix.istio_version }}
      ALS_ANALYZER: ${{ matrix.analyzer }}
    steps:
      - name: Set up Go 1.17
        uses: actions/setup-go@v2
        with:
          go-version: 1.17
        id: go
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Build Docker Image
        shell: bash
        run: make docker
      - uses: apache/skywalking-infra-e2e@ebdfc93c9a1def23df14edd408e98654a1fe60cb
        with:
          e2e-file: test/e2e/case/istio/als/e2e.yaml

  metrics-service:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    name: Istio(${{ matrix.istio_version }})+MetricsService
    strategy:
      fail-fast: true
      matrix:
        istio_version: [1.8.2, 1.9.1]
    env:
      ISTIO_VERSION: ${{ matrix.istio_version }}
    steps:
      - name: Set up Go 1.17
        uses: actions/setup-go@v2
        with:
          go-version: 1.17
        id: go
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Build Docker Image
        shell: bash
        run: make docker
      - uses: apache/skywalking-infra-e2e@45584853d6f660102c523b1e9cb5815d12ae55d3
        with:
          e2e-file: test/e2e/case/istio/metrics/e2e.yaml
      - uses: actions/upload-artifact@v2
        if: ${{ failure() }}
        name: Upload Logs
        with:
          name: logs
          path: "${{ env.SW_INFRA_E2E_LOG_DIR }}"