Skip to content
Draft
Show file tree
Hide file tree
Changes from 74 commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
df15f9f
ci(e2e): add DVP-over-DVP matrix testing with parallel execution
asyachmenevflant Oct 15, 2025
7c7689c
ci: drop artifacts/binaries from VCS; update .gitignore
asyachmenevflant Oct 15, 2025
395d32e
ci(e2e): restore workflow, Taskfiles, charts, scripts and docs
asyachmenevflant Oct 15, 2025
09542e3
dvcr: make templates nil-safe; remove temporary root values.yaml
asyachmenevflant Oct 15, 2025
3e056d0
ci: format YAML to satisfy prettier; drop temporary values.yaml
asyachmenevflant Oct 15, 2025
8d97988
revert(templates/dvcr): drop E2E-related edits; keep tests via Module…
asyachmenevflant Oct 15, 2025
46d40ec
ci(e2e): remove secrets usage in if; check webhook in step script
asyachmenevflant Oct 15, 2025
8dc2a87
ci(e2e): write kubeconfig via printf to avoid heredoc EOF issues
asyachmenevflant Oct 15, 2025
873905d
ci(e2e): resolve merge with main; keep full E2E workflow
asyachmenevflant Oct 15, 2025
bfa9e9e
ci(e2e): fix duplicate workflow_dispatch; prettier passes
asyachmenevflant Oct 15, 2025
24a2a0e
ci(e2e): use env.E2E_K8S_URL in kubeconfig steps; drop report kubecon…
asyachmenevflant Oct 15, 2025
12a1a5c
ci(e2e): build e2e-runner wrapper via Taskfile (tests/e2e task run:ci)
asyachmenevflant Oct 15, 2025
739c81e
ci(e2e): run tests via tests/e2e Taskfile (run:ci) with TIMEOUT
asyachmenevflant Oct 15, 2025
39d19e5
ci(e2e): pass TEST_TIMEOUT and E2E_PREFIX to tests/e2e Taskfile run
asyachmenevflant Oct 15, 2025
bfe5d25
ci(e2e): pass TIMEOUT (not TEST_TIMEOUT) to tests/e2e Taskfile
asyachmenevflant Oct 15, 2025
007c90e
ci(e2e): write kubeconfig token without base64 decoding to avoid UTF-…
asyachmenevflant Oct 15, 2025
71d6e8c
ci(e2e): quote token in kubeconfig; set LABELS/FOCUS_JSON defaults fo…
asyachmenevflant Oct 15, 2025
348c7cd
ci(e2e): read JWT from secrets.K8S_CLUSTER_SECRET index 8 (kubeconfig)
asyachmenevflant Oct 15, 2025
1591401
ci(e2e): use azure/k8s-set-context@v4 for kubeconfig setup
asyachmenevflant Oct 15, 2025
bd2543e
ci(e2e): remove KUBECONFIG env var to use default ~/.kube/config
asyachmenevflant Oct 15, 2025
c7f3c59
ci(e2e): implement complete artifact collection and Loop reporting pi…
asyachmenevflant Oct 16, 2025
5a3733a
feat(ci): replace simple E2E tests with full DVP-over-DVP bootstrap
asyachmenevflant Oct 16, 2025
66f2bad
fix(ci): enable cancel-in-progress for concurrency
asyachmenevflant Oct 16, 2025
7a3aa6f
ci(e2e): restore ci/dvp-e2e/Taskfile.vm.yaml (VM helper tasks)
asyachmenevflant Oct 16, 2025
ca1d101
ci(e2e): use existing kubeconfig from GA; skip ingress/RBAC during en…
asyachmenevflant Oct 16, 2025
f4baf76
ci(e2e): simplify kubeconfig provisioning; use E2E_NESTED_SA_SECRET o…
asyachmenevflant Oct 16, 2025
c2a95ba
ci(e2e): tidy headings and finalize simplified flow (no validate, doc…
asyachmenevflant Oct 16, 2025
07460c0
ci(e2e): pass registryDockerCfg via YAML overlay and use it in nested…
asyachmenevflant Oct 16, 2025
02afa95
ci(e2e): ensure REGISTRY_DOCKER_CFG overlay is present and non-empty
asyachmenevflant Oct 16, 2025
20a104e
ci(e2e): merge REGISTRY_DOCKER_CFG into base values via yq; pass as V…
asyachmenevflant Oct 16, 2025
06066eb
ci(e2e): inject REGISTRY_DOCKER_CFG into generated values for InitCon…
asyachmenevflant Oct 16, 2025
8b5a2ae
ci(e2e): map SCs per profile (sds→linstor-thin-r2; cephrbd→ceph) for …
asyachmenevflant Oct 16, 2025
f282f21
ci(e2e): fix registry auth and SC mapping in matrix workflow
asyachmenevflant Oct 16, 2025
5de0213
ci(e2e): configure registry auth via REGISTRY_DOCKER_CFG in matrix
asyachmenevflant Oct 16, 2025
fca74e0
ci(e2e): wait for base VirtualImage Ready to prevent bootstrap hangs
asyachmenevflant Oct 16, 2025
3ee8367
ci(e2e): propagate TARGET_STORAGE_CLASS to infra; wait VirtualImage R…
asyachmenevflant Oct 16, 2025
ebf44aa
revert: rollback recent infra SC and bootstrap waits to previous state
asyachmenevflant Oct 16, 2025
f83ee78
ci(e2e): ensure default StorageClass per profile before E2E run
asyachmenevflant Oct 16, 2025
de7a65b
ci(e2e): set infra storageClass from TARGET_STORAGE_CLASS to avoid pa…
asyachmenevflant Oct 16, 2025
581f6f6
ci(e2e): remove parent default SC step; rely on explicit infra storag…
asyachmenevflant Oct 16, 2025
27f61a4
ci(e2e): cleanup uses privileged SA context; remove kubeconfig copy a…
asyachmenevflant Oct 16, 2025
2d7d250
ci(e2e): correct SDS image/snapshot SC mapping (IMG_SC=linstor-thin-r…
asyachmenevflant Oct 16, 2025
e95f9e2
ci(e2e): add -vv --github-output to ginkgo; use dvp-e2e- prefix for R…
asyachmenevflant Oct 16, 2025
89648d5
ci(e2e): fix doubled namespace issue; cleanup filters dvp-e2e-; rever…
asyachmenevflant Oct 16, 2025
78265c6
ci(e2e): prune debug/local tasks; keep only CI-needed targets; purge …
asyachmenevflant Oct 16, 2025
29ceeec
ci(e2e): add JUnit failure summary step and cleanup filter dvp-e2e-ni…
asyachmenevflant Oct 16, 2025
37e7038
ci(e2e): fix YAML inline python indentation for JUnit summary step
asyachmenevflant Oct 16, 2025
10c35e2
ci(e2e): switch JUnit summary to python -c to fix YAML parser error
asyachmenevflant Oct 16, 2025
18694a3
ci(e2e): switch to 'go tool ginkgo' (was go run) for test runner
asyachmenevflant Oct 16, 2025
18aec45
ci(e2e): avoid YAML parse issues by removing emojis from echo lines
asyachmenevflant Oct 16, 2025
417d85d
ci(e2e): wait for validating-webhook-handler and retry ModuleConfig a…
asyachmenevflant Oct 16, 2025
a1ecbb3
ci(e2e): set defaultClusterStorageClass in nested before running tests
asyachmenevflant Oct 16, 2025
ef22b40
ci(e2e): align SDS IMAGE_STORAGE_CLASS to linstor-thin-r2; use ginkgo…
asyachmenevflant Oct 16, 2025
790a2db
ci(e2e): align with reference - ModuleConfig version 1, SDS StorageCl…
asyachmenevflant Oct 17, 2025
071edec
ci(e2e): fix kubeconfig logic - remove SKIP_INGRESS_CHECK, simplify S…
asyachmenevflant Oct 17, 2025
66c3929
ci(e2e): ensure tools install on cache-hit; bump cache key to v3
asyachmenevflant Oct 17, 2025
1fcdf72
ci(e2e): force kubectl into ~/.local/bin, ensure d8 in PATH; add deta…
asyachmenevflant Oct 17, 2025
1e95914
ci(e2e): align nested API warm-up with reference (20s readyz, 10x nod…
asyachmenevflant Oct 17, 2025
1118285
ci(e2e): align Ceph SC to ceph-pool-r2-csi-rbd-immediate and provisio…
asyachmenevflant Oct 17, 2025
c159079
refactor(ci): remove unused setup-e2e-tools action and improve E2E wo…
Oct 19, 2025
b130f45
fix(ci): remove extra profiles from profiles.json
Oct 19, 2025
2eea9c4
refactor(ci): simplify cleanup and fix env variable issues
Oct 19, 2025
4ab5c67
fix(ci): improve profile config parsing to avoid env errors
Oct 19, 2025
7c76c8f
fix(ci): use correct ServiceAccount and improve cleanup error handling
Oct 19, 2025
057d72f
ci(e2e): build kubeconfig from E2E_NESTED_SA_SECRET without TOK var; …
Oct 20, 2025
7b3c1ab
ci(e2e): call correct cleanup task (cleanup:cleanup:namespaces)
Oct 20, 2025
8a8b10b
ci(e2e): drop NFS server from infra and tasks; gate NFS config by flag
Oct 20, 2025
e984693
ci(e2e): docker login dev-registry before pulling install image
Oct 20, 2025
e96aada
ci(e2e): use REGISTRY_DOCKER_CFG for registry auth; drop explicit doc…
Oct 20, 2025
854186c
ci(e2e): use deckhouse/modules-actions/setup for registry auth only
Oct 20, 2025
4782c25
ci(e2e): auth via modules-actions; add GHCR login; setup-task with token
Oct 20, 2025
90d4d4e
ci(e2e): add explicit registry pull check before bootstrap
Oct 20, 2025
54d79dc
ci(e2e): replace Taskfile with minimal GH-oriented version; drop unus…
Oct 20, 2025
c93dc39
ci(e2e): fix cleanup task; docker login to DEV_REGISTRY; setup-task i…
Oct 20, 2025
5670ca4
ci(e2e): remove GHCR login, move registry verification after docker l…
Oct 21, 2025
664ba44
ci(e2e): use direct docker login instead of docker/login-action
Oct 21, 2025
53fe4d3
ci(e2e): use CE installer image instead of dev-registry for verification
Oct 21, 2025
f9c6d01
ci(e2e): use CE installer image in dhctl-bootstrap task
Oct 21, 2025
ec69256
ci(e2e): fix cleanup namespaces array init and reorder workflow steps…
Oct 21, 2025
9fbe00a
ci(e2e): fix workflow architecture - add proper SSH key generation an…
Oct 21, 2025
9ebf9a1
ci(e2e): rely on render-infra ssh-gen dependency; remove explicit ssh…
Oct 21, 2025
80468bd
ci(e2e): run values prepare before infra; remove intermediate base va…
Oct 21, 2025
1854ba5
fix(ci): align Taskfile dependencies with backup branch logic
Oct 21, 2025
4568632
fix(ci): add sshPublicKey to cluster-config generation
Oct 21, 2025
059c944
fix(ci): ensure deckhouse.registryDockerCfg is always a string in clu…
Oct 21, 2025
3538e38
fix(ci): remove quote from registryDockerCfg in cluster-config template
Oct 21, 2025
a687aa9
fix(ci): remove registryDockerCfg field from cluster-config template
Oct 21, 2025
b5fb01e
fix(ci): restore registryDockerCfg config and fix cleanup namespaces
Oct 21, 2025
0b41113
fix(ci): use VALUES_TEMPLATE_FILE instead of explicit VALUES_FILE in …
Oct 21, 2025
a83ac96
fix(ci): use run:values:prepare to create proper values.yaml with dyn…
Oct 21, 2025
f68f775
fix(ci): use VALUES_TEMPLATE_FILE consistently and remove undeploy-fi…
Oct 21, 2025
0314920
debug(ci): add debugging info for REGISTRY_DOCKER_CFG secret
Oct 21, 2025
f0d0baf
fix(ci): properly pass REGISTRY_DOCKER_CFG secret to workflow
Oct 21, 2025
2f57b48
fix(ci): pass VALUES_FILE to dhctl-bootstrap task
Oct 21, 2025
5466145
fix(ci): use dynamic namespace consistently across all steps
Oct 21, 2025
d655d1f
cleanup: remove accidentally added submodules and docs
Oct 21, 2025
bd4c386
fix(ci): synchronize registry for CE and fix submodule error
Oct 21, 2025
1c00bcd
fix(ci): remove registryDockerCfg for CE registry
Oct 21, 2025
896ccb1
fix(ci): correct registry configuration for OSS cluster with CE dhctl
Oct 21, 2025
87080e8
fix(ci): disable upmeter module and fix virtualization tag
Oct 21, 2025
7422358
fix(ci): remove duplicate upmeter ModuleConfig
Oct 21, 2025
380542e
fix(ci): consolidate disabled modules and remove submodule
Oct 21, 2025
7b23775
fix(ci): completely remove virtualization-rnd directory
Oct 21, 2025
d4ccaa1
fix(ci): disable checkout caching in GitHub Actions
Oct 21, 2025
39dc7f3
fix(ci): skip checksum verification in Deckhouse CLI installation
Oct 21, 2025
5f49224
fix(ci): restore disabled-modules.yaml and fix duplication
Oct 21, 2025
9398651
fix(ci): restore configuration to match reference version
Oct 21, 2025
6f184bf
fix(ci): switch from CE to OSS registry with new credentials
Oct 22, 2025
d23dc1b
fix(ci): restore token creation logic for nested kubeconfig
Oct 22, 2025
d108102
feat(ci): add SDS module configuration for nested cluster
Oct 22, 2025
40bc0d5
feat(ci): add disk debugging and Ceph cluster configuration
Oct 22, 2025
dc5d511
refactor(ci): remove old Ceph bootstrap approach
Oct 22, 2025
bf39163
fix(ci): optimize Git checkout to resolve cache issues
Oct 22, 2025
16ddbef
fix(ci): install d8 via direct tarball to avoid checksum mismatch
Oct 22, 2025
57857fe
fix(ci): install d8 via installer with checksum disabled
Oct 22, 2025
1ab3a4d
feat(ci): conditionally render Ceph/SDS by storageProfile
Oct 22, 2025
018310a
refactor(ci): move storage CRs post-bootstrap and remove empty templates
Oct 22, 2025
3b86437
fix(ci): move disk debug before storage apply; add retries and --vali…
Oct 22, 2025
bf9d9fa
fix(ci): move disk debug step before storage configuration
Oct 22, 2025
b080244
fix(ci): use d8 v ssh for reliable VM disk debugging with retries
Oct 22, 2025
775e7aa
fix(ci): correct Ceph deviceFilter and add proper operator readiness …
Oct 22, 2025
9239193
fix(ci): make GA YAML valid; move operator-ceph ModuleConfig to file\…
Oct 22, 2025
42783ad
chore(ci): include Loop report scripts; add run link in profile cell\…
Oct 22, 2025
5685940
chore(ci): pass GitHub run URL to Loop matrix summary and link profil…
Oct 22, 2025
7aa9af0
fix(storage): enable SDS modules and wait for CRDs before applying re…
Oct 22, 2025
3fa0a23
fix(ci): resolve YAML syntax error in workflow SDS module config\n\n-…
Oct 22, 2025
54bfd79
fix(storage): use kubectl patch mc global for default StorageClass\n\…
Oct 22, 2025
b72888b
fix(sds): add retry logic and remove version from ModuleConfig\n\n- A…
Oct 22, 2025
7a02184
feat(ci): improve SDS CRD waiting and Ceph operator readiness checks\…
Oct 22, 2025
c2d36c0
fix(storage): correct disk devices and simplify SDS logic
Oct 23, 2025
04c9d13
fix(scripts): fix jq syntax error in get_profile_config.sh
Oct 23, 2025
012f203
fix(taskfile): fix heredoc syntax in infra:attach-worker-disks task
Oct 23, 2025
5db0383
fix(taskfile): avoid 'workers: unbound variable' by safe array build
Oct 23, 2025
57782b6
fix(taskfile): add quotes around SDS_SC_NAME in storageclass check
Oct 23, 2025
47d06b7
fix(ci): enable JUnit XML generation and reporting in E2E matrix work…
Oct 23, 2025
2ab725a
fix(taskfile): correct worker VM selector in infra:attach-worker-disks
Oct 23, 2025
9d6bacb
fix: apply critical storage and disk attachment fixes
Oct 23, 2025
ec262ad
hotfix: fix Taskfile YAML syntax and VirtualDisk API structure
Oct 23, 2025
da72af0
feat: move disk attachment before bootstrap and use base SC
Oct 23, 2025
d0730a0
fix: use VM name selector instead of node-group label for worker dete…
Oct 23, 2025
a9a4403
fix: move disk attachment after bootstrap to ensure VMs exist
Oct 23, 2025
8ed622e
fix(ci): resolve SDS and Ceph storage configuration issues
Oct 23, 2025
2fbd995
fix(ci): add SCSI bus rescan to activate hotplugged storage disks
Oct 23, 2025
9a1b99c
fix(ci): add sudo to SCSI rescan commands to fix permission denied er…
Oct 23, 2025
0e05f87
feat(ci): implement blockDeviceRefs approach for VM disk attachment
Oct 23, 2025
17a74a6
fix(ci): improve blockDeviceRefs task reliability
Oct 23, 2025
58f8e2d
fix(ci): use correct VM selector for worker nodes
Oct 23, 2025
a2fc6e8
fix(ci): add debug info and validation for blockDeviceRefs patch
Oct 23, 2025
a8cbe11
fix(ci): use inline patch instead of file-based patch for blockDevice…
Oct 23, 2025
70280b3
fix(ci): restore correct namespace naming for cleanup
Oct 24, 2025
a964de5
fix(ci): add VM startup verification after blockDeviceRefs modification
Oct 24, 2025
0290deb
revert(ci): switch back to hotplug for disk attachment
Oct 24, 2025
c3b7089
fix(ci): fix E2E test issues with bootstrap and disk attachment
Oct 24, 2025
8860294
fix(ci): remove forbidden dataDisk property from DVPClusterConfiguration
Oct 24, 2025
a8528df
fix: remove nodeGroups from DVPClusterConfiguration
Oct 24, 2025
0941430
docs: add comment to cluster-config template
Oct 24, 2025
8ce81c1
fix(ci): add push trigger to E2E Matrix Tests workflow
Oct 24, 2025
b1278d3
fix(ci): limit push trigger to feat/ci-e2e-matrix branch only
Oct 24, 2025
1cce800
refactor(ci): simplify storage configuration logic
Oct 25, 2025
eac5e61
fix(ci): update storage configuration to use Ceph as default
Oct 25, 2025
7efb344
debug(ci): improve disk attachment debugging and reduce retry time
Oct 25, 2025
39df983
debug(ci): improve PVC waiting logic and add debug environment variable
Oct 26, 2025
85b750a
debug(ci): optimize logging and add fallback for disk attachment
Oct 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/actions/setup-e2e-tools/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Setup E2E Tools
description: Install kubectl, helm, d8, task, yq with caching
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to create your own action to setup kubectl, helm and so on. It already exists. Find it, please


runs:
using: composite
steps:
- name: Cache binaries
uses: actions/cache@v4
id: cache
with:
path: ~/.local/bin
key: e2e-tools-${{ runner.os }}-v3

- name: Ensure tools installed (install if missing or cache empty)
shell: bash
run: |
set -euo pipefail
mkdir -p ~/.local/bin

need_install=false
for bin in helm yq task; do
if ! command -v "$bin" >/dev/null 2>&1; then
echo "missing: $bin"; need_install=true
fi
done
# Always (re)install kubectl into ~/.local/bin to shadow system kubectl
need_install=true
if [ "${need_install}" != "true" ] && [ "${{ steps.cache.outputs.cache-hit }}" = "true" ]; then
echo "All tools present from cache, skipping install."
exit 0
fi

# Install system dependencies
sudo apt-get update
sudo apt-get install -y jq apache2-utils curl bash ca-certificates

# Install kubectl (always to ~/.local/bin)
KUBECTL_VERSION=$(curl -Ls https://dl.k8s.io/release/stable.txt)
curl -fsSL -o kubectl "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
chmod +x kubectl && mv kubectl ~/.local/bin/kubectl

# Install helm
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
if [ -x /usr/local/bin/helm ]; then mv /usr/local/bin/helm ~/.local/bin/; fi

# Install d8
curl -fsSL -o d8-install.sh https://raw.githubusercontent.com/deckhouse/deckhouse-cli/main/d8-install.sh
bash d8-install.sh || true
if [ -x /usr/local/bin/d8 ]; then cp -f /usr/local/bin/d8 ~/.local/bin/d8; fi

# Install yq
curl -L -o ~/.local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.44.1/yq_linux_amd64
chmod +x ~/.local/bin/yq

# Install task
sh -c "$(curl -fsSL https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin

# Cleanup
rm -f d8-install.sh

- name: Add to PATH
shell: bash
run: |
echo "$HOME/.local/bin" >> $GITHUB_PATH
echo "/usr/local/bin" >> $GITHUB_PATH

- name: Verify installation
shell: bash
run: |
echo "✅ Installed tools:"
which kubectl || true
kubectl version --client=true --output=yaml || kubectl version || true
which helm || true
helm version --short || true
which d8 || true
d8 version || true
which yq || true
yq --version || true
which task || true
task --version || true
Loading
Loading