diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 11cfdceb..28b2efae 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -94,34 +94,43 @@ jobs:
- uses: actions/checkout@v2
with:
lfs: true
- - uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
+ - name: Provision K8s Cluster
+ id: provision
+ uses: frostebite/Provision-GKE-Cluster@1.0
with:
- version: '288.0.0'
- service_account_email: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_EMAIL }}
- service_account_key: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }}
- - run: ./ApplyClusterAndAcquireLock.sh ${{ env.GKE_PROJECT }} ${{ env.GKE_CLUSTER }} ${{ env.GKE_ZONE }}
- - uses: frostebite/File-To-Base64@master
- id: read-base64
- with:
- filePath: ~/.kube/config
+ GOOGLE_SERVICE_ACCOUNT_EMAIL: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_EMAIL }}
+ GOOGLE_SERVICE_ACCOUNT_KEY: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }}
+ project: ${{ env.GKE_PROJECT }}
+ cluster: ${{ env.GKE_CLUSTER }}
+ zone: ${{ env.GKE_ZONE }}
- uses: ./
id: k8s-unity-build
env:
UNITY_LICENSE: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nbpzWx3PZ0lqWDo1m9aLQuZ4cweo=QcDm4/qAXZuUMQbUVk63vO6u66Bp8PnqqWQcZZOcym/rGUZLj1sr66EquF3X3w1L7aqiwMGtbY2b\nkPttcalFeaBkc5NsJMrexWjuBCxQvhbmVFQnTjvC6vNS+k1wrkz7If1oPkz/XaDtCfUs8oxc9iPe\nPzzUJIVYLZoDtpPq2XbgVn9/TiVb3Zu6ldKgvtNRYUjrB3KywtvL9OcIFll3htRcBZPG43kxryJc\nDD2TL5Nw1JuX6MejBBuYTZsZNpGX9Pjop9+uFUZ4GI9h8a5g6wJUfXzsGw7j4gkvDkC9MvyWiksi\n2hNXw1QNeB6JfQsd4sAuhYh/CqTm2gCz9i9ZpA=="
with:
targetPlatform: ${{ matrix.targetPlatform }}
- kubeConfig: ${{ steps.read-base64.outputs.base64 }}
+ kubeConfig: ${{ steps.provision.outputs.kubeConfig }}
githubToken: ${{ secrets.GITHUB_TOKEN }}
projectPath: test-project
unityVersion: 2019.3.15f1
- uses: frostebite/K8s-Download-Volume@master
with:
- kubeConfig: ${{ steps.read-base64.outputs.base64 }}
+ kubeConfig: ${{ steps.provision.outputs.kubeConfig }}
volume: ${{ steps.k8s-unity-build.outputs.volume }}
sourcePath: repo/build/
- uses: actions/upload-artifact@v1
with:
name: Kubernetes Build (${{ matrix.targetPlatform }})
path: k8s-volume-download
- - run: ./ReleaseLockAndAttemptShutdown.sh ${{ env.GKE_PROJECT }} ${{ env.GKE_CLUSTER }} ${{ env.GKE_ZONE }}
+ - name: Dispose K8s Cluster
if: ${{ always() }}
+ id: dispose
+ uses: frostebite/Provision-GKE-Cluster@1.0
+ with:
+ GOOGLE_SERVICE_ACCOUNT_EMAIL: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_EMAIL }}
+ GOOGLE_SERVICE_ACCOUNT_KEY: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }}
+ project: ${{ env.GKE_PROJECT }}
+ cluster: ${{ env.GKE_CLUSTER }}
+ zone: ${{ env.GKE_ZONE }}
+ lock: ${{ steps.provision.outputs.lock }}
+ dispose: true
diff --git a/ApplyClusterAndAcquireLock.sh b/ApplyClusterAndAcquireLock.sh
deleted file mode 100755
index 8f0c0db9..00000000
--- a/ApplyClusterAndAcquireLock.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-
-# This creates a GKE Cluster
-# - Will wait for any deletion to complete on a cluster with the same name before creating
-# - Will wait for completion before continuing
-# - If the script is run concurrently multiple times, only one cluster will be created, all instances will wait for availability
-# Requires GCP Cloud SDK
-# Installs retry https://github.com/kadwanev/retry
-
-GKE_PROJECT=$1
-GKE_CLUSTER=$2
-GKE_ZONE=$3
-
-# may update this to avoid repeated install, drop me a comment if needed
-sudo sh -c "curl https://raw.githubusercontent.com/kadwanev/retry/master/retry -o /usr/local/bin/retry && chmod +x /usr/local/bin/retry"
-
-attempts=0
-while [ $attempts -le 1 ]
-do
-retry -s 15 -t 20 -v '
- STATUS=$(gcloud container clusters list --format="json" --project $GKE_PROJECT |
- jq "
- .[] |
- {name: .name, status: .status} |
- select(.name == \"$GKE_CLUSTER\")
- " |
- jq ".status")
- if [ "$STATUS" == "\"STOPPING\"" ]; then echo "Cluster stopping waiting for completion" && exit 1; fi
- exit 0
- '
-cluster=$(gcloud container clusters list --project $GKE_PROJECT --format="json" | jq '.[] | select(.name == "${GKE_CLUSTER}")')
-
-if [ -z "$cluster" ];
-then
- echo "No clusters found for \"$GKE_CLUSTER\" in project \"$GKE_CLUSTER\" in zone \"$GKE_ZONE\""
- # you may not need this, it installs GCP beta for additional command line options
- gcloud components install beta -q
- # replace this line with whatever type of cluster you want to create
- gcloud beta container --project $GKE_PROJECT clusters create $GKE_CLUSTER --zone $GKE_ZONE --no-enable-basic-auth --cluster-version "1.15.12-gke.2" --machine-type "custom-1-3072" --image-type "COS" --disk-type "pd-standard" --disk-size "15" --metadata disable-legacy-endpoints=true --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "1" --enable-stackdriver-kubernetes --enable-ip-alias --default-max-pods-per-node "110" --enable-autoscaling --min-nodes "0" --max-nodes "3" --no-enable-master-authorized-networks --addons HorizontalPodAutoscaling,HttpLoadBalancing --enable-autoupgrade --enable-autorepair --max-surge-upgrade 1 --max-unavailable-upgrade 0
-fi;
-retry -s 15 -t 20 -v '
- STATUS=$(gcloud container clusters list --format="json" --project $GKE_PROJECT |
- jq "
- .[] |
- {name: .name, status: .status} |
- select(.name == \"$GKE_CLUSTER\")
- " |
- jq ".status")
- if [ "$STATUS" == "\"PROVISIONING\"" ]; then echo "Cluster provisioning waiting for available" && exit 1; fi
- exit 0
-'
-echo "Cluster is available"
-gcloud container clusters get-credentials $GKE_CLUSTER --zone $GKE_ZONE --project $GKE_PROJECT
-kubectl version
-NSID=$(cat /proc/sys/kernel/random/uuid)
-echo "::set-env name=NSID::"$NSID
-{
-cat <