From 1c8e59d4f919b63230b1439a5e2dd13c25d319d2 Mon Sep 17 00:00:00 2001
From: Zaid Albirawi <zaid@tyk.io>
Date: Wed, 24 Apr 2024 00:08:52 +0200
Subject: [PATCH] readd workflow

---
 .github/workflows/gke.yml | 110 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 110 insertions(+)
 create mode 100644 .github/workflows/gke.yml

diff --git a/.github/workflows/gke.yml b/.github/workflows/gke.yml
new file mode 100644
index 0000000..4c8cf41
--- /dev/null
+++ b/.github/workflows/gke.yml
@@ -0,0 +1,110 @@
+name: GKE
+on:
+  workflow_dispatch:
+    inputs:
+      analytics_enabled:
+        description: 'Enabled Analytics gathering'
+        required: false
+        default: false
+        type: boolean
+      auth_enabled:
+        description: 'Enabled Authentication'
+        required: false
+        default: false
+        type: boolean
+      quota_enabled:
+        description: 'Enabled Quota'
+        required: false
+        default: false
+        type: boolean
+      rate_limit_enabled:
+        description: 'Enabled Rate Limiting'
+        required: false
+        default: false
+        type: boolean
+      open_telemetry_enabled:
+        description: 'Enabled Open Telemetry'
+        required: false
+        default: false
+        type: boolean
+      open_telemetry_sampling_ratio:
+        description: 'Open Telemetry Sampling Ratio'
+        required: false
+        type: string
+        default: '0.5'
+      tyk_version:
+        description: 'Tyk Gateway version'
+        required: true
+        type: string
+        default: 'v5.3.0'
+      tests_timestamp_enabled:
+        description: 'Enabled Timestamp Test'
+        required: false
+        default: true
+        type: boolean
+      tests_httpbin_enabled:
+        description: 'Enabled Httpbin Test'
+        required: false
+        default: false
+        type: boolean
+jobs:
+  httpbin:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Authenticate into gcloud
+        uses: google-github-actions/auth@v2
+        with:
+          credentials_json: ${{ secrets.GCP_CREDENTIALS }}
+
+      - name: Install gcloud CLI
+        uses: google-github-actions/setup-gcloud@v2.1.0
+
+      - name: Install Terraform
+        uses: hashicorp/setup-terraform@v3
+
+      - name: Checkout Repository
+        uses: actions/checkout@v4
+
+      - name: Copy deployments vars example into main.tfvars
+        run: cp ./deployments/main.tfvars.example ./deployments/main.tfvars
+
+      - name: Copy tests vars example into main.tfvars
+        run: cp ./tests/main.tfvars.example ./tests/main.tfvars
+
+      - name: Stand up GKE cluster
+        run: |
+          cd gke
+          terraform init
+          terraform apply \
+            --var="project=${{ secrets.GCP_PROJECT }}" \
+            --var="cluster_location=${{ vars.GCP_CLUSTER_LOCATION }}" \
+            --var="cluster_machine_type=${{ vars.GCP_CLUSTER_MACHINE_TYPE }}" \
+            --auto-approve
+
+      - name: Deploy testing resources
+        run: |
+          cd deployments
+          terraform init
+          terraform apply \
+            --var="kubernetes_config_path='../.kube/config'" \
+            --var="kubernetes_config_context=gke" \
+            --var="analytics_enabled=${{ inputs.analytics_enabled }}" \
+            --var="auth_enabled=${{ inputs.auth_enabled }}" \
+            --var="quota_enabled=${{ inputs.quota_enabled }}" \
+            --var="rate_limit_enabled=${{ inputs.rate_limit_enabled }}" \
+            --var="open_telemetry_enabled=${{ inputs.open_telemetry_enabled }}" \
+            --var="open_telemetry_sampling_ratio=${{ inputs.open_telemetry_sampling_ratio }}" \
+            --var="tyk_version=${{ inputs.tyk_version }}" \
+            --var="grafana_service_type=LoadBalancer" \
+            --auto-approve
+
+      - name: Run Tests
+        run: |
+          cd deployments
+          terraform init
+          terraform apply \
+            --var="kubernetes_config_path='../.kube/config'" \
+            --var="kubernetes_config_context=gke" \
+            --var="tests_timestamp_enabled=${{ inputs.tests_timestamp_enabled }}" \
+            --var="tests_httpbin_enabled=${{ inputs.tests_httpbin_enabled }}" \
+            --auto-approve