19 Commits

Author SHA1 Message Date
E M
82630eead6
refactor: remove allow-tests-pods node label from GKE node pools
The `allow-tests-pods` boolean label was used by the test framework to steer pods away from runner nodes via a node affinity exclusion. Pod scheduling now uses the existing `workload-type` label directly as a nodeSelector, making the boolean label redundant.
2026-05-28 15:41:27 +10:00
E M
4f86040c2c
fix: avoid building in parallel
Avoids "file in use" errors while building in CI
2026-05-28 15:41:27 +10:00
E M
db5eada055
remove unneeded priority request 2026-05-28 15:41:27 +10:00
E M
fd5c29db31
set cluster creation timeout to 20mins
temporary timeout so we can see if the latest commits work without waiting too long between tries
2026-05-28 15:41:27 +10:00
E M
5616b50bfb
change monitoring to default service
Cluster deployment seems to be stalling because the metrics service is not started. So returning it to default to see if that fixes the issue.
2026-05-28 15:41:27 +10:00
E M
7d6701d444
inline node pools so they can be created in parallel
speeds up cluster creation
2026-05-28 15:41:27 +10:00
E M
bbc4b1caf3
remove unneeded setup 2026-05-28 15:41:27 +10:00
E M
bc7a277d9b
chore: reduce GKE release test cluster provisioning time and cost
- Configure runners-ci node pool inline in the cluster resource instead
  of using remove_default_node_pool=true, eliminating the
  provision-then-delete cycle that added ~5 min to terraform apply
- Remove the separate infra pool; runners-ci is now the only pool on
  the critical path of cluster creation
- Set tests-pods pool min_node_count=0 so no node is provisioned at
  apply time — nodes scale up only when test pods are scheduled
- Enable spot instances on the tests-pods pool for ~60-91% cost saving
- Add 60 min job timeout to release-tests to bound hung cluster cost
- Add Terraform plugin cache keyed on the lock file to skip provider
  re-downloads on subsequent runs (~30-60s saved)
- Install gke-gcloud-auth-plugin via setup-gcloud to fix kubectl auth

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 15:41:25 +10:00
E M
cf6d93f52c
chore: use zonal GKE cluster to reduce provisioning time
Switch cluster and all node pools from regional to zonal (`europe-west4-b`) to avoid the 40+ minute provisioning time of a regional (multi-zone) cluster. Adds a `zone` variable to the GKE module and cluster config, and updates the workflow's `gcloud get-credentials` call to use `--zone` instead of `--region`.
2026-05-28 15:41:25 +10:00
E M
2e82a4a15c
rename cluster to match previous change 2026-05-28 15:41:25 +10:00
E M
ae72954b4d
reduce length of cluster name 2026-05-28 15:41:25 +10:00
E M
7c74437bb7
Port terraform cluster creation/destruction from digital ocean to gcp 2026-05-28 15:41:24 +10:00
E M
1a376d80db
chore: rename Codex references to Logos Storage in release tests
Replace all "Codex" branding in the release test workflow and supporting
files: rename the K8s cluster, Terraform state key, secret, log paths,
env var (CODEXDOCKERIMAGE → STORAGEDOCKERIMAGE), and test runner image
(cs-codex-dist-tests → logos-storage-dist-tests) to align with the
already-updated logos-storage-nim-cs-dist-tests repo in https://github.com/logos-storage/logos-storage-nim-cs-dist-tests/pull/124. Also fix the
dotnet test path to the correct Tests/LogosStorageReleaseTests directory.
2026-05-28 15:41:24 +10:00
E M
3e1a92c7ab
Create static kubeconfig with bearer token
Replace the use of doctl as a credential manager for executing k8s calls with a freshly created bearer token (expires after 2h). Avoids passing a DO personal access token to the cs-dist-tests runner pod.
2026-05-28 15:41:24 +10:00
E M
5cb8730c92
restore using latest cs-dist-tests image 2026-05-28 15:41:24 +10:00
E M
e99be09107
WIP update cs-dist-tests docker image tag
The change to the cs-dist-tests image name was to test if installing doctl to the image would fix the release tests not being able to authenticate into the cluster. This is mainly due to the kubeconfig being generated and stored in a DO secret, as opposed to a static kubeconfig for a permanent cluster as before.

IMPORTANT:
The image tag should be changed back to 'latest'!
2026-05-28 15:41:24 +10:00
E M
ef1e7df82b
update workflow inputs, k8s namespace
- remove RUNNER_IMAGE because the cs-dist-tests image is dumb -- it clones the cs-dist-tests repo, checkouts the branch in BRANCH and then runs the release tests. So instead, always use the :latest image (which is built when there are commits to master)
- add the BRANCH workflow input so you can test cs-dist-test changes in the runner if needed
- remove COMMAND arg, it's always going to be 'dotnet test Tests/CodexReleaseTests'
- remove NAMESPACE env variable and just use 'default'. The cluster is ephermal and so all resources deployed are for the release tests, no namespaces needed.
2026-05-28 15:41:24 +10:00
E M
7070134678
Add workflow input for cs-dist-tests docker image
By default, the logosstorage/logos-storage-nim-cs-dist-tests:latest image will be used for the test runner in the release tests. However, if developers want to run the release tests and test changes to the runner (eg changes in the logos-storage-nim-cs-dist-tests repo), they can push their changes to a branch and manually run the `docker-runner` workflow in the logos-storage-nim-cs-dist-tests repo. This will create an image like logosstorage/logos-storage-nim-cs-dist-tests:sha-c0465a5. This image can then be used as a release tests workflow input for 'cs-dist-tests runner image'
2026-05-28 15:41:23 +10:00
E M
451356e0fe
Add release tests workflow
Adds a workflow for release tests:
- builds a docker image for launching nodes in the tests (basically has additional nimflags set)
- creates a K8s cluster in Digital Ocean
- one pod in the cluster is dedicated as the test runner (uses the logos-storage-nim-cs-dist-tests:latest image)
- the release will fail if the docker image build or the release tests fail
- the K8s cluster is torn down after the tests finish (failure or not)
2026-05-28 15:41:23 +10:00