name: e2e Test GCP Weekly
# This workflow only runs once per week. It executes the full e2e tests on the latest-1 and latest-2 versions. Currently 1.23 and 1.22.
# It is executed every sunday at 00:00.

on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * 0"
jobs:
  test-other-versions:
    strategy:
      matrix:
        version: ["1.22", "1.24", "1.25"]
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
        with:
          fetch-depth: 0

      - name: Setup Go environment
        uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f
        with:
          go-version: "1.19.1"

      - name: Run GCP E2E test
        uses: ./.github/actions/e2e_test
        with:
          workerNodesCount: "2"
          controlNodesCount: "1"
          autoscale: "false"
          cloudProvider: "gcp"
          gcp_service_account_json: ${{ secrets.GCP_SERVICE_ACCOUNT }}
          gcpClusterServiceAccountKey: ${{ secrets.GCP_CLUSTER_SERVICE_ACCOUNT }}
          sonobuoyTestSuiteCmd: '--plugin e2e --plugin-env e2e.E2E_FOCUS="\[Conformance\]" --plugin-env e2e.E2E_SKIP="for service with type clusterIP|HostPort validates that there is no conflict between pods with same hostPort but different hostIP and protocol" --plugin https://raw.githubusercontent.com/vmware-tanzu/sonobuoy-plugins/master/cis-benchmarks/kube-bench-plugin.yaml --plugin https://raw.githubusercontent.com/vmware-tanzu/sonobuoy-plugins/master/cis-benchmarks/kube-bench-master-plugin.yaml'
          kubernetesVersion: ${{ matrix.version }}

      - name: Always terminate cluster
        if: always()
        continue-on-error: true
        uses: ./.github/actions/constellation_destroy

      - name: Notify teams channel
        if: ${{ failure() && github.ref == 'refs/heads/main' }}
        continue-on-error: true
        run: |
          sudo apt-get install gettext-base -y
          export TEAMS_JOB_NAME=gcp
          export TEAMS_RUN_ID=${{ github.run_id }}
          envsubst < teams-payload.json > to-be-send.json
          curl                                          \
            -H "Content-Type: application/json"         \
            -d @to-be-send.json                         \
            "${{ secrets.MS_TEAMS_WEBHOOK_URI }}"
        shell: bash
        working-directory: .github/actions/e2e_test