Record lastCheckpointBytes from the Worker where the image lives. #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright 2026 The Actordock Authors. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| name: e2e-kind | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| unit: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.24.x" | |
| - name: Test | |
| run: go test ./... | |
| e2e-functional: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.24.x" | |
| - name: Install kind | |
| run: | | |
| curl -fsSL -o ./kind "https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64" | |
| chmod +x ./kind | |
| sudo mv ./kind /usr/local/bin/kind | |
| - name: Create cluster and deploy | |
| env: | |
| KIND_CLUSTER_NAME: actordock-functional | |
| POLICY: fifo | |
| run: | | |
| chmod +x hack/*.sh | |
| ./hack/kind-up.sh | |
| - name: Functional e2e (all four policies via SetPolicy) | |
| env: | |
| KIND_CLUSTER_NAME: actordock-functional | |
| E2E_SUITE: functional | |
| SANDBOX_COUNT: "5" | |
| MAX_RUNNING: "4" | |
| MIN_WORKERS: "2" | |
| run: ./hack/verify-local.sh | |
| - name: Dump on failure | |
| if: failure() | |
| run: | | |
| kubectl --context kind-actordock-functional -n actordock get pods -o wide || true | |
| kubectl --context kind-actordock-functional -n actordock describe pods || true | |
| kubectl --context kind-actordock-functional -n actordock logs deploy/controlplane --all-containers=true || true | |
| kubectl --context kind-actordock-functional -n actordock logs statefulset/worker --all-containers=true || true | |
| - name: Teardown | |
| if: always() | |
| env: | |
| KIND_CLUSTER_NAME: actordock-functional | |
| run: ./hack/kind-down.sh || true | |
| e2e-eval: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| policy: [fifo, random, lru-idle, resource-evict] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.24.x" | |
| - name: Install kind | |
| run: | | |
| curl -fsSL -o ./kind "https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64" | |
| chmod +x ./kind | |
| sudo mv ./kind /usr/local/bin/kind | |
| - name: Create cluster and deploy | |
| env: | |
| KIND_CLUSTER_NAME: actordock-eval-${{ matrix.policy }} | |
| POLICY: ${{ matrix.policy }} | |
| run: | | |
| chmod +x hack/*.sh | |
| ./hack/kind-up.sh | |
| - name: Eval e2e (S1–S5 for ${{ matrix.policy }}) | |
| env: | |
| KIND_CLUSTER_NAME: actordock-eval-${{ matrix.policy }} | |
| E2E_SUITE: eval | |
| E2E_TIMEOUT: 30m | |
| MIN_WORKERS: "4" | |
| EVAL_POLICY: ${{ matrix.policy }} | |
| EVAL_OUT_DIR: docs/eval/results | |
| run: | | |
| mkdir -p docs/eval/results | |
| ./hack/verify-local.sh | |
| test -f "docs/eval/results/policy_report_${{ matrix.policy }}.json" | |
| ls -la docs/eval/results/ | |
| - name: Upload policy report | |
| if: success() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: policy-compare-${{ matrix.policy }} | |
| path: docs/eval/results/policy_report_${{ matrix.policy }}.json | |
| if-no-files-found: error | |
| - name: Dump on failure | |
| if: failure() | |
| run: | | |
| kubectl --context kind-actordock-eval-${{ matrix.policy }} -n actordock get pods -o wide || true | |
| kubectl --context kind-actordock-eval-${{ matrix.policy }} -n actordock describe pods || true | |
| kubectl --context kind-actordock-eval-${{ matrix.policy }} -n actordock logs deploy/controlplane --all-containers=true || true | |
| kubectl --context kind-actordock-eval-${{ matrix.policy }} -n actordock logs statefulset/worker --all-containers=true || true | |
| - name: Teardown | |
| if: always() | |
| env: | |
| KIND_CLUSTER_NAME: actordock-eval-${{ matrix.policy }} | |
| run: ./hack/kind-down.sh || true | |
| e2e-eval-summary: | |
| runs-on: ubuntu-latest | |
| needs: e2e-eval | |
| if: always() && needs.e2e-eval.result != 'cancelled' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.24.x" | |
| - name: Download per-policy eval artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: policy-compare-* | |
| path: docs/eval/results/parts | |
| merge-multiple: true | |
| - name: Merge policy comparison table | |
| run: | | |
| mkdir -p docs/eval/results | |
| echo "==> downloaded reports:" | |
| find docs/eval/results/parts -type f -name 'policy_report_*.json' -print | |
| go run ./hack/merge-eval-results docs/eval/results/parts docs/eval/results/policy_compare.md | |
| cat docs/eval/results/policy_compare.md | |
| - name: Upload merged comparison | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: policy-compare-all | |
| path: docs/eval/results/policy_compare.md | |
| if-no-files-found: error |