From 5553b97c9d5b3e58d2de126cffb21423f1ff32e1 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Thu, 9 Jun 2022 12:01:17 +0000 Subject: [PATCH 1/2] Allow preview env creation --- .werft/installer-tests.ts | 9 +++++--- .werft/k3s-installer-tests.yaml | 33 ++++++++++++++++++++++++++++- install/infra/terraform/k3s/main.tf | 2 +- install/tests/Makefile | 8 +++---- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/.werft/installer-tests.ts b/.werft/installer-tests.ts index ba66df6bef78ff..2edc59bf6df77c 100644 --- a/.werft/installer-tests.ts +++ b/.werft/installer-tests.ts @@ -4,8 +4,11 @@ import { Werft } from "./util/werft"; const testConfig: string = process.argv.length > 2 ? process.argv[2] : "STANDARD_K3S_TEST"; // we can provide the version of the gitpod to install (eg: 2022.4.2) +// "-" is the default value which will install the latest version const version: string = process.argv.length > 3 ? process.argv[3] : ""; +const channel: string = process.argv.length > 4 ? process.argv[4] : ""; + const makefilePath: string = join("install/tests"); const werft = new Werft("installer-nightly-tests"); @@ -43,12 +46,12 @@ const INFRA_PHASES: { [name: string]: InfraConfig } = { }, INSTALL_GITPOD_IGNORE_PREFLIGHTS: { phase: "install-gitpod-without-preflights", - makeTarget: `kots-install channel=unstable version=${version} preflights=false`, // this is a bit of a hack, for now we pass params like this + makeTarget: `kots-install channel=${channel} version=${version} preflights=false`, // this is a bit of a hack, for now we pass params like this description: "Install gitpod using kots community edition without preflights", }, INSTALL_GITPOD: { phase: "install-gitpod", - makeTarget: `kots-install channel=unstable version=${version} preflights=true`, + makeTarget: `kots-install channel=${channel} version=${version} preflights=true`, description: "Install gitpod using kots community edition", }, CHECK_INSTALLATION: { @@ -113,7 +116,7 @@ const TEST_CONFIGURATIONS: { [name: string]: TestConfig } = { DESCRIPTION: "Create a SH Gitpod preview environment on a K3s cluster, created on a GCP instance", PHASES: [ "STANDARD_K3S_CLUSTER_ON_GCP", - "GCP_MANAGED_DNS", + "CERT_MANAGER", "INSTALL_GITPOD_IGNORE_PREFLIGHTS", "CHECK_INSTALLATION", "RESULTS", diff --git a/.werft/k3s-installer-tests.yaml b/.werft/k3s-installer-tests.yaml index e275daa4448291..19b5bdfe601847 100644 --- a/.werft/k3s-installer-tests.yaml +++ b/.werft/k3s-installer-tests.yaml @@ -1,4 +1,17 @@ # debug using `werft run github -f -s .werft/installer-tests.ts -j .werft/k3s-installer-tests.yaml -a debug=true` +args: +- name: destroy + desc: "Should the setup be destroyed or not" + required: false + default: true +- name: channel + desc: "Replicated channel to use" + required: false + default: "" +- name: version + desc: "Version of gitpod to install initially" + required: false + default: "" pod: serviceAccount: werft affinity: @@ -63,7 +76,25 @@ pod: (cd .werft && yarn install && mv node_modules ..) | werft log slice prep printf '{{ toJson . }}' > context.json - npx ts-node .werft/installer-tests.ts "STANDARD_K3S_TEST" + export DESTROY="{{ .Annotations.destroy }}" + + if [ $DESTROY == "false" ]; then + export STAGE=STANDARD_K3S_PREVIEW + else + export STAGE=STANDARD_K3S_TEST + fi + + export VERSION="{{ .Annotations.version }}" + if [[ "$VERSION" == "" ]]; then + VERSION="" + fi + + export CHANNEL="{{ .Annotations.channel }}" + if [[ "$CHANNEL" == "" ]]; then + CHANNEL="" + fi + + npx ts-node .werft/installer-tests.ts ${STAGE} ${VERSION} ${CHANNEL} # The bit below makes this a cron job plugins: cron: "15 3 * * *" diff --git a/install/infra/terraform/k3s/main.tf b/install/infra/terraform/k3s/main.tf index bc6790a0b0c2ec..784be84a8eb2ed 100644 --- a/install/infra/terraform/k3s/main.tf +++ b/install/infra/terraform/k3s/main.tf @@ -27,7 +27,7 @@ provider "google" { } resource "google_service_account" "gcp_instance" { - account_id = "gcp-k3s-compute" + account_id = "sa-${var.name}" display_name = "Service Account" } diff --git a/install/tests/Makefile b/install/tests/Makefile index 931afcbf6181c4..67d840a57d901e 100644 --- a/install/tests/Makefile +++ b/install/tests/Makefile @@ -59,6 +59,7 @@ KOTS_KONFIG := "./manifests/kots-config.yaml" license_community_beta := "../licenses/Community (Beta).yaml" license_community_stable := "../licenses/Community.yaml" license_community_unstable := "../licenses/Community (Unstable).yaml" +license_community_$(channel) := "../licenses/$(channel).yaml" install-kots-cli: curl https://kots.io/install | bash @@ -68,7 +69,7 @@ channel ?= unstable version ?= - kots-install: version-flag = $(if $(version:-=),--app-version-label=$(version),) kots-install: preflight-flag = $(if $(preflights:true=),--skip-preflights,) -kots-install: license-file = $(license_community_$(channel)) +kots-install: license-file = $(license_community_$(channel)) kots-install: install-kots-cli envsubst < ${KOTS_KONFIG} > tmp_config.yml kubectl kots install gitpod/${channel} \ @@ -101,11 +102,8 @@ cleanup: get-results: @echo "If you have gotten this far, it means your setup succeeded" - @echo - @echo "URL of your setup is: "https://$(TF_VAR_TEST_ID).gitpod-self-hosted.com"" - @echo + @echo "The IP address of you setup is "$(TF_VAR_TEST_ID).gitpod-self-hosted.com"" @echo "Following is the KUBECONFIG you can use to connect to the cluster:" - @echo @cat ${KUBECONFIG} list-state: From 290ad46a6868f9e2608e8df5a0f5982fb8ac5986 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Thu, 9 Jun 2022 12:05:43 +0000 Subject: [PATCH 2/2] add tmp license --- .werft/installer-tests.ts | 8 +++++++- .werft/k3s-installer-tests.yaml | 2 +- install/licenses/dev-nan.yaml | 36 +++++++++++++++++++++++++++++++++ install/tests/Makefile | 3 +++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 install/licenses/dev-nan.yaml diff --git a/.werft/installer-tests.ts b/.werft/installer-tests.ts index 2edc59bf6df77c..3d6fffdad13fa6 100644 --- a/.werft/installer-tests.ts +++ b/.werft/installer-tests.ts @@ -5,7 +5,7 @@ import { Werft } from "./util/werft"; const testConfig: string = process.argv.length > 2 ? process.argv[2] : "STANDARD_K3S_TEST"; // we can provide the version of the gitpod to install (eg: 2022.4.2) // "-" is the default value which will install the latest version -const version: string = process.argv.length > 3 ? process.argv[3] : ""; +const version: string = process.argv.length > 3 ? process.argv[3] : "-"; const channel: string = process.argv.length > 4 ? process.argv[4] : ""; @@ -75,6 +75,11 @@ const INFRA_PHASES: { [name: string]: InfraConfig } = { makeTarget: "get-results", description: "Get the result of the setup", }, + DONE: { + phase: "done-msg", + makeTarget: "done-msg", + description: "The operation has terminated", + }, }; interface TestConfig { @@ -120,6 +125,7 @@ const TEST_CONFIGURATIONS: { [name: string]: TestConfig } = { "INSTALL_GITPOD_IGNORE_PREFLIGHTS", "CHECK_INSTALLATION", "RESULTS", + "DONE", // this is a temporary hack to print clean msg ], }, }; diff --git a/.werft/k3s-installer-tests.yaml b/.werft/k3s-installer-tests.yaml index 19b5bdfe601847..f8cf87b2fcf1c1 100644 --- a/.werft/k3s-installer-tests.yaml +++ b/.werft/k3s-installer-tests.yaml @@ -86,7 +86,7 @@ pod: export VERSION="{{ .Annotations.version }}" if [[ "$VERSION" == "" ]]; then - VERSION="" + VERSION="-" fi export CHANNEL="{{ .Annotations.channel }}" diff --git a/install/licenses/dev-nan.yaml b/install/licenses/dev-nan.yaml new file mode 100644 index 00000000000000..0f70ac92b40543 --- /dev/null +++ b/install/licenses/dev-nan.yaml @@ -0,0 +1,36 @@ +apiVersion: kots.io/v1beta1 +kind: License +metadata: + name: nan-test +spec: + appSlug: gitpod + channelID: 29hLY1hDM4RI3Tbb3hqaZcsCCAz + channelName: dev-nan + customerName: nan-test + endpoint: https://replicated.app + entitlements: + domain: + title: Domain + value: "" + valueType: String + expires_at: + description: License Expiration + title: Expiration + value: "" + valueType: String + levelId: + isHidden: true + title: License level + value: 1 + valueType: Integer + seats: + title: User seats + value: 0 + valueType: Integer + isGitOpsSupported: true + isNewKotsUiEnabled: true + isSnapshotSupported: true + licenseID: 28hucw4HRxj8bBKUJXxV2INBnZz + licenseSequence: 12 + licenseType: prod + signature: eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pYm1GdUxYUmxjM1FpZlN3aWMzQmxZeUk2ZXlKc2FXTmxibk5sU1VRaU9pSXlPR2gxWTNjMFNGSjRhamhpUWt0VlNsaDRWakpKVGtKdVdub2lMQ0pzYVdObGJuTmxWSGx3WlNJNkluQnliMlFpTENKamRYTjBiMjFsY2s1aGJXVWlPaUp1WVc0dGRHVnpkQ0lzSW1Gd2NGTnNkV2NpT2lKbmFYUndiMlFpTENKamFHRnVibVZzU1VRaU9pSXlPV2hNV1RGb1JFMDBVa2t6VkdKaU0yaHhZVnBqYzBORFFYb2lMQ0pqYUdGdWJtVnNUbUZ0WlNJNkltUmxkaTF1WVc0aUxDSnNhV05sYm5ObFUyVnhkV1Z1WTJVaU9qRXlMQ0psYm1Sd2IybHVkQ0k2SW1oMGRIQnpPaTh2Y21Wd2JHbGpZWFJsWkM1aGNIQWlMQ0psYm5ScGRHeGxiV1Z1ZEhNaU9uc2laRzl0WVdsdUlqcDdJblJwZEd4bElqb2lSRzl0WVdsdUlpd2lkbUZzZFdVaU9pSWlMQ0oyWVd4MVpWUjVjR1VpT2lKVGRISnBibWNpZlN3aVpYaHdhWEpsYzE5aGRDSTZleUowYVhSc1pTSTZJa1Y0Y0dseVlYUnBiMjRpTENKa1pYTmpjbWx3ZEdsdmJpSTZJa3hwWTJWdWMyVWdSWGh3YVhKaGRHbHZiaUlzSW5aaGJIVmxJam9pSWl3aWRtRnNkV1ZVZVhCbElqb2lVM1J5YVc1bkluMHNJbXhsZG1Wc1NXUWlPbnNpZEdsMGJHVWlPaUpNYVdObGJuTmxJR3hsZG1Wc0lpd2lkbUZzZFdVaU9qRXNJblpoYkhWbFZIbHdaU0k2SWtsdWRHVm5aWElpTENKcGMwaHBaR1JsYmlJNmRISjFaWDBzSW5ObFlYUnpJanA3SW5ScGRHeGxJam9pVlhObGNpQnpaV0YwY3lJc0luWmhiSFZsSWpvd0xDSjJZV3gxWlZSNWNHVWlPaUpKYm5SbFoyVnlJbjE5TENKcGMwZHBkRTl3YzFOMWNIQnZjblJsWkNJNmRISjFaU3dpYVhOVGJtRndjMmh2ZEZOMWNIQnZjblJsWkNJNmRISjFaU3dpYVhOT1pYZExiM1J6VldsRmJtRmliR1ZrSWpwMGNuVmxmWDA9IiwiaW5uZXJTaWduYXR1cmUiOiJleUpzYVdObGJuTmxVMmxuYm1GMGRYSmxJam9pUTNwR1dYWTVNemg2UkdFdk1UTTViSFJTZGpCa09WcHZNMWh1VkZoeWF6SXZhekpCT0V0V1ZTczVjVGxQTkhSSk5rVnlWM2cyVFhCVmFGTllkVkkyTlRadFJsTXlUV0U0TVhCdFIxUnJPVzlCT0RRMVFUUlBiMFZOUjNsTGIyVXlNbEJpUm0xQllVeE5UWFpIUWtwVVprOXdMMk53VERSNVdITmpSVlZTZVd0ck4yRk9TRFpLWW5GeWVtWTBhbXAwVkU1cWVHRjJZa3BPUTB0dWVqRkRkSEp3YkRReFJUZzNWMFEwVFM5WGVFZERRMHhvVlhacGVURlRibGhFV1RCbFVrOTBPVzV5VlhRMlJFVllTbVJWWjJ4UmIyMDNVMEpzWnpSVE5HWmhSVWdyY0VRM2VEVnVhekZzZUdGdlNVZHJSelE1TlVSQ2MzTlJObkZ6Y0RZeU9VRXdWRmM1Y2xGWk9EWk9hMDVVTVRoeFNETkxaRk5LY1dKYWIyOXVVRFYzVUhBck9VSXhOMFpOVUhGeFlqTlhSMEZqYkdOTmNFWTJlR3d3WmpCcU5FUktPWFpPY25KTVVqa3dWSGROTm5VNFJESXhRVTVSUFQwaUxDSndkV0pzYVdOTFpYa2lPaUl0TFMwdExVSkZSMGxPSUZCVlFreEpReUJMUlZrdExTMHRMVnh1VFVsSlFrbHFRVTVDWjJ0eGFHdHBSemwzTUVKQlVVVkdRVUZQUTBGUk9FRk5TVWxDUTJkTFEwRlJSVUZ2Tlc1Nk9WbEVTMU5SUm1Wd2IySmFWakE1ZDF4dVdFdGxOM1JzVEZWVlZXNVRaVGd3TUVkRFMxUkRWRnB6Ym05cWRVSmhlV3BwUzJSM1drUXpWVlJLY1RCRWFXOUJjbGhWYTJoRU5HdG1kRE50UkZRM1JseHVZa0Z5ZUZkRVZYUnJOMWR6VmpGbWJFaHZjR3RpV0ZwSWNFaHlUM2QyV0daVFFraGlPVkZCYVVrMGQxcERkbWxDWmpkT01IVmxUV2xvVURKa2EzQnNiVnh1Tm1aSUx6RlRiR3BrWlZWU01XVkpjbVZXTjJSRFFYQmlhVzV5Tms5VVNERmpVMDQxVm1OWmVITjJVamhVT1RnclVVbEhMMFpXYW1NM2EzTnJTbUp5TTF4dWQwSlRkR2hqVWxoS2JrdHRaa296ZVdWeGQyZGxOa0ZCUTJkblYxWlFURFJHYW5ab05DOVJNblJ4V2tkQ2NXeFBXWFY0THpSSVYzWlRVMlZZUzFoMmNseHVZVVJhY2tOblNYRk9NWEJSUlZrd2FtMHlaa3hIWkU5RFJXaEZkbFJ4WkU0MGRXOW5iRTAxY2lzeWRVbFliblZFYUVvdlEzWkxkR2RUUldaSU0zQmtkVnh1Y2xGSlJFRlJRVUpjYmkwdExTMHRSVTVFSUZCVlFreEpReUJMUlZrdExTMHRMVnh1SWl3aWEyVjVVMmxuYm1GMGRYSmxJam9pWlhsS2VtRlhaSFZaV0ZJeFkyMVZhVTlwU25Kak1rNVZaR3hHUzJSVlZuaGphM2d5VXpGU01GSnJOSGxQVm1SVVkxZEtUVlZYV2toYWJGWk1UVEIwYTJKdVFUVldXR2d4VkZVNVMxSklUbFZWYW1nelpHcE9SVk5ZYUhoYU1qaDNUV3hzZEdKNlZUSk9NRTR6VGtoT1NFNUlWa1JrUlZwelZsaEdWRlpyT1hkWFJsWkpWbnBhWVZOcGRGRmtiR013VVRGSmNtSkRkRmhaZWtaMVkyNUNSbFZWY0RGaWVrSkxUVmhhYUZSSVdYcGpVemgyVEhsMGNscElhekpYVjFFelZqTkNVVlZGT1VKTmExWlZWbTB4YW1KV1NrUk9hemxOV21wa1VscHVRbFZrYm1oVVkzcG9iMU5xWjNwTU0wSk5UVzE0UjFkWGVFNWtSemxPV210R2RGSnVaM1pSYTJ4cFlsZG5NRkV6Y0hwa2ExSTBUREZDY0ZOSGFGRlhWa1pwV1c1c1ZsSXliRlpOUmtvMFZVVkdjV1J0ZHpSU01XUmFWa1V4VUZWRVJrdGlSMUpKV20xS1YxTnNUakZoYlhSRFpVVmpkbG96V25SaVJuQnpWMFJHYVU5V1duUlZSR3hYWVVWV1RsUllUa1JQVkVaR1VsWlNORmxYUm5SbFdHOXlZV3BrYTFwRmFETlpXR1JTWVcxa1IxWXpXbEZUYlhSVlZGZHdXVnBGTlhWT2JVWTFWMjVXY0ZKVGMzZFRWR3hYVlZkV1JWTXpSVEZQVjNodFlqRndjbFZxVW05YWJFSkZZMVpzVGsxclZqVlVSVnBHWkVab1NHTklZemxRVTBselNXMWtjMkl5U21oaVJYUnNaVlZzYTBscWIybFpiVkpzV2xSVk1rNVVXWGRaTWxwcFRrUk9hazlYU1hsUFIwcHRUMVJvYkZsWFRtaGFiVVV5VGtSWmFXWlJQVDBpZlE9PSJ9 diff --git a/install/tests/Makefile b/install/tests/Makefile index 67d840a57d901e..dc0b6fe3bb3912 100644 --- a/install/tests/Makefile +++ b/install/tests/Makefile @@ -106,6 +106,9 @@ get-results: @echo "Following is the KUBECONFIG you can use to connect to the cluster:" @cat ${KUBECONFIG} +done-msg: + @echo "Your operation has completed" + list-state: terraform state list # end