From 4420011b6bb4c101a160834cea0410e407e4f846 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Thu, 5 Feb 2026 14:58:44 +0100 Subject: [PATCH 01/18] feat(ci): add integration tests for AutoTLS in Beekeeper workflow --- .github/workflows/beekeeper.yml | 67 ++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 43ac9b18c37..123bc200853 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -13,8 +13,8 @@ env: RUN_TYPE: "PR RUN" SETUP_CONTRACT_IMAGE: "ethersphere/bee-localchain" SETUP_CONTRACT_IMAGE_TAG: "0.9.4" - BEELOCAL_BRANCH: "main" - BEEKEEPER_BRANCH: "master" + BEELOCAL_BRANCH: "akrem/p2p-wss-support-v2" # TODO: change to main (temporary testing branch) + BEEKEEPER_BRANCH: "feat/autotls-cluster" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 @@ -215,6 +215,69 @@ jobs: with: name: debug-dump path: dump/ + beekeeper-autotls: + name: Integration tests (autotls) + runs-on: ubuntu-latest + needs: [init, beekeeper] + env: + BEEKEEPER_CLUSTER: local-dns-autotls + P2P_WSS_ENABLE: true + steps: + - name: Cache + uses: actions/cache@v4 + with: + path: | + /tmp/k3s-${{ env.K3S_VERSION }} + key: k3s-${{ env.K3S_VERSION }} + - name: "Download Artifact" + uses: actions/download-artifact@v4 + with: + name: temp-artifacts + - name: Unpack artifacts + run: | + chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh + mv .beekeeper.yaml ~/.beekeeper.yaml + mkdir ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml + mv bee-1 bee + sudo mv beekeeper /usr/local/bin/beekeeper + - name: Prepare local cluster + run: | + timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare + - name: Set kube config + run: | + mkdir -p ~/.kube + cp /etc/rancher/k3s/k3s.yaml ~/.kube/config + - name: Set local cluster + run: | + timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns-autotls + - name: Test pingpong + id: pingpong + run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns-autotls --checks ci-pingpong; do echo "waiting for pingpong..."; sleep .3; done' + - name: Test fullconnectivity + id: fullconnectivity + run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns-autotls --checks=ci-full-connectivity; do echo "waiting for full connectivity..."; sleep .3; done' + - name: Test retrieval + id: retrieval + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns-autotls --checks=ci-retrieval + - name: Test autotls + id: autotls + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns-autotls --checks=ci-autotls + - name: Collect debug artifacts + if: failure() + run: | + bash .github/bin/beekeeper_artifacts.sh local-dns-autotls + export FAILED='no-test' + if ${{ steps.pingpong.outcome=='failure' }}; then FAILED=pingpong; fi + if ${{ steps.fullconnectivity.outcome=='failure' }}; then FAILED=fullconnectivity; fi + if ${{ steps.retrieval.outcome=='failure' }}; then FAILED=retrieval; fi + if ${{ steps.autotls.outcome=='failure' }}; then FAILED=autotls; fi + curl -sSf -X POST -H "Content-Type: application/json" -d "{\"text\": \"**${RUN_TYPE}** Beekeeper Autotls Error\nBranch: \`${{ github.head_ref }}\`\nUser: @${{ github.event.pull_request.user.login }}\nDebugging artifacts: [click](https://$BUCKET_NAME.$AWS_ENDPOINT/artifacts_$VERTAG.tar.gz)\nStep failed: \`${FAILED}\`\"}" https://beehive.ethswarm.org/hooks/${{ secrets.TUNSHELL_KEY }} + echo "Failed test: ${FAILED}" + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: debug-dump-autotls + path: dump/ retag: name: Retag and Trigger ArgoCD env: From 00c4ec72035d3b1fc8537e2b2686cb8644caa8c7 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Thu, 5 Feb 2026 19:17:53 +0100 Subject: [PATCH 02/18] feat(ci): enable P2P WebSocket support in Beekeeper workflow --- .github/workflows/beekeeper.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 123bc200853..5ab8852dbcf 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -25,6 +25,7 @@ env: AWS_EC2_METADATA_DISABLED: true AWS_ENDPOINT: fra1.digitaloceanspaces.com VERTAG: ${GITHUB_RUN_ID} + P2P_WSS_ENABLE: true jobs: init: name: Init From 23279ad4d33ad06feee4eedf7b66ec4e25240049 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Thu, 5 Feb 2026 22:02:04 +0100 Subject: [PATCH 03/18] fix(ci): update dependencies for ArgoCD trigger in Beekeeper workflow --- .github/workflows/beekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 5ab8852dbcf..4e086531d21 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -283,7 +283,7 @@ jobs: name: Retag and Trigger ArgoCD env: TIMEOUT: 10m - needs: [beekeeper] + needs: [beekeeper, beekeeper-autotls] runs-on: ubuntu-latest steps: - name: "Download Artifact" From 2b2b6531d8112519f2b4f4a2e0abc6605bd541df Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Thu, 5 Feb 2026 22:53:45 +0100 Subject: [PATCH 04/18] refactor(ci): add setup action for Beekeeper cluster deployment --- .../setup-beekeeper-cluster/action.yml | 28 +++++++++++++ .github/workflows/beekeeper.yml | 42 ++++--------------- 2 files changed, 36 insertions(+), 34 deletions(-) create mode 100644 .github/actions/setup-beekeeper-cluster/action.yml diff --git a/.github/actions/setup-beekeeper-cluster/action.yml b/.github/actions/setup-beekeeper-cluster/action.yml new file mode 100644 index 00000000000..72a809a7004 --- /dev/null +++ b/.github/actions/setup-beekeeper-cluster/action.yml @@ -0,0 +1,28 @@ +name: Setup beekeeper cluster +description: Unpack artifacts, prepare k3s, set kubeconfig and deploy local beekeeper cluster. +inputs: + cluster_name: + description: Beekeeper cluster name (e.g. local-dns, local-dns-autotls) + required: true +runs: + using: composite + steps: + - name: Unpack artifacts + shell: bash + run: | + chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh + mv .beekeeper.yaml ~/.beekeeper.yaml + mkdir -p ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml + mv bee-1 bee + sudo mv beekeeper /usr/local/bin/beekeeper + - name: Prepare local cluster + shell: bash + run: timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare + - name: Set kube config + shell: bash + run: | + mkdir -p ~/.kube + cp /etc/rancher/k3s/k3s.yaml ~/.kube/config + - name: Set local cluster + shell: bash + run: timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=${{ inputs.cluster_name }} diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 4e086531d21..eef5e90bf26 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -110,23 +110,10 @@ jobs: uses: actions/download-artifact@v4 with: name: temp-artifacts - - name: Unpack artifacts - run: | - chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh - mv .beekeeper.yaml ~/.beekeeper.yaml - mkdir ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml - mv bee-1 bee - sudo mv beekeeper /usr/local/bin/beekeeper - - name: Prepare local cluster - run: | - timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare - - name: Set kube config - run: | - mkdir -p ~/.kube - cp /etc/rancher/k3s/k3s.yaml ~/.kube/config - - name: Set local cluster - run: | - timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns + - name: Setup beekeeper cluster + uses: ./.github/actions/setup-beekeeper-cluster + with: + cluster_name: local-dns - name: Test pingpong id: pingpong run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks ci-pingpong; do echo "waiting for pingpong..."; sleep .3; done' @@ -234,23 +221,10 @@ jobs: uses: actions/download-artifact@v4 with: name: temp-artifacts - - name: Unpack artifacts - run: | - chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh - mv .beekeeper.yaml ~/.beekeeper.yaml - mkdir ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml - mv bee-1 bee - sudo mv beekeeper /usr/local/bin/beekeeper - - name: Prepare local cluster - run: | - timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare - - name: Set kube config - run: | - mkdir -p ~/.kube - cp /etc/rancher/k3s/k3s.yaml ~/.kube/config - - name: Set local cluster - run: | - timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns-autotls + - name: Setup beekeeper cluster + uses: ./.github/actions/setup-beekeeper-cluster + with: + cluster_name: local-dns-autotls - name: Test pingpong id: pingpong run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns-autotls --checks ci-pingpong; do echo "waiting for pingpong..."; sleep .3; done' From 9ccf744cf1b682a835a20ca897ccfe659ea7c7a6 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Thu, 5 Feb 2026 23:07:35 +0100 Subject: [PATCH 05/18] chore(ci): add checkout step to Beekeeper workflow for improved ref handling --- .github/workflows/beekeeper.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index eef5e90bf26..f5b9b1aee83 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -100,6 +100,11 @@ jobs: runs-on: ubuntu-latest needs: [init] steps: + - name: Checkout + uses: actions/checkout@v5 + with: + fetch-depth: 0 + ref: ${{ github.event.action == 'beekeeper' && github.event.client_payload.ref || github.sha }} - name: Cache uses: actions/cache@v4 with: @@ -211,6 +216,11 @@ jobs: BEEKEEPER_CLUSTER: local-dns-autotls P2P_WSS_ENABLE: true steps: + - name: Checkout + uses: actions/checkout@v5 + with: + fetch-depth: 0 + ref: ${{ github.event.action == 'beekeeper' && github.event.client_payload.ref || github.sha }} - name: Cache uses: actions/cache@v4 with: From 8ca3b1e78149c399f7be3efe904a93a27ee903f8 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Fri, 6 Feb 2026 00:09:23 +0100 Subject: [PATCH 06/18] refactor(ci): remove setup action for Beekeeper cluster and inline steps in workflow --- .../setup-beekeeper-cluster/action.yml | 28 ----------- .github/workflows/beekeeper.yml | 46 +++++++++++++------ 2 files changed, 31 insertions(+), 43 deletions(-) delete mode 100644 .github/actions/setup-beekeeper-cluster/action.yml diff --git a/.github/actions/setup-beekeeper-cluster/action.yml b/.github/actions/setup-beekeeper-cluster/action.yml deleted file mode 100644 index 72a809a7004..00000000000 --- a/.github/actions/setup-beekeeper-cluster/action.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Setup beekeeper cluster -description: Unpack artifacts, prepare k3s, set kubeconfig and deploy local beekeeper cluster. -inputs: - cluster_name: - description: Beekeeper cluster name (e.g. local-dns, local-dns-autotls) - required: true -runs: - using: composite - steps: - - name: Unpack artifacts - shell: bash - run: | - chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh - mv .beekeeper.yaml ~/.beekeeper.yaml - mkdir -p ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml - mv bee-1 bee - sudo mv beekeeper /usr/local/bin/beekeeper - - name: Prepare local cluster - shell: bash - run: timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare - - name: Set kube config - shell: bash - run: | - mkdir -p ~/.kube - cp /etc/rancher/k3s/k3s.yaml ~/.kube/config - - name: Set local cluster - shell: bash - run: timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=${{ inputs.cluster_name }} diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index f5b9b1aee83..04ff6bb6744 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -35,15 +35,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - if: github.event.action != 'beekeeper' with: fetch-depth: 0 - - name: Checkout - uses: actions/checkout@v5 - if: github.event.action == 'beekeeper' - with: - fetch-depth: 0 - ref: ${{ github.event.client_payload.ref }} + ref: ${{ github.event.action == 'beekeeper' && github.event.client_payload.ref || github.sha }} - name: Setup Go uses: actions/setup-go@v6 with: @@ -115,10 +109,21 @@ jobs: uses: actions/download-artifact@v4 with: name: temp-artifacts - - name: Setup beekeeper cluster - uses: ./.github/actions/setup-beekeeper-cluster - with: - cluster_name: local-dns + - name: Unpack artifacts + run: | + chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh + mv .beekeeper.yaml ~/.beekeeper.yaml + mkdir -p ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml + mv bee-1 bee + sudo mv beekeeper /usr/local/bin/beekeeper + - name: Prepare local cluster + run: timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare + - name: Set kube config + run: | + mkdir -p ~/.kube + cp /etc/rancher/k3s/k3s.yaml ~/.kube/config + - name: Set local cluster + run: timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns - name: Test pingpong id: pingpong run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks ci-pingpong; do echo "waiting for pingpong..."; sleep .3; done' @@ -231,10 +236,21 @@ jobs: uses: actions/download-artifact@v4 with: name: temp-artifacts - - name: Setup beekeeper cluster - uses: ./.github/actions/setup-beekeeper-cluster - with: - cluster_name: local-dns-autotls + - name: Unpack artifacts + run: | + chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh + mv .beekeeper.yaml ~/.beekeeper.yaml + mkdir -p ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml + mv bee-1 bee + sudo mv beekeeper /usr/local/bin/beekeeper + - name: Prepare local cluster + run: timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare + - name: Set kube config + run: | + mkdir -p ~/.kube + cp /etc/rancher/k3s/k3s.yaml ~/.kube/config + - name: Set local cluster + run: timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns-autotls - name: Test pingpong id: pingpong run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns-autotls --checks ci-pingpong; do echo "waiting for pingpong..."; sleep .3; done' From 282665c5a1c3297fa1c4ab2f21c9e3313700447e Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Mon, 9 Feb 2026 15:07:29 +0100 Subject: [PATCH 07/18] refactor(ci): merge beekeeper and beekeeper-autotls --- .github/workflows/beekeeper.yml | 70 ++++++++------------------------- 1 file changed, 17 insertions(+), 53 deletions(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 04ff6bb6744..66369482f51 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -180,8 +180,8 @@ jobs: - name: Test feeds id: feeds run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-feed - - name: Collect debug artifacts - if: failure() + - name: Collect debug artifacts (local-dns) + if: failure() && (steps.pingpong.outcome == 'failure' || steps.fullconnectivity.outcome == 'failure' || steps.settlements.outcome == 'failure' || steps.pss.outcome == 'failure' || steps.soc.outcome == 'failure' || steps.gsoc.outcome == 'failure' || steps.pushsync-chunks-1.outcome == 'failure' || steps.pushsync-chunks-2.outcome == 'failure' || steps.retrieval.outcome == 'failure' || steps.manifest.outcome == 'failure' || steps.manifest-v1.outcome == 'failure' || steps.postage-stamps.outcome == 'failure' || steps.stake.outcome == 'failure' || steps.withdraw.outcome == 'failure' || steps.redundancy.outcome == 'failure' || steps.act.outcome == 'failure' || steps.feeds.outcome == 'failure' || steps.feeds-v1.outcome == 'failure') run: | bash .github/bin/beekeeper_artifacts.sh local-dns export FAILED='no-test' @@ -209,73 +209,37 @@ jobs: echo "sh <(curl -sSf https://lets.tunshell.com/init.sh) L $(echo $KEYS | jq -r .peer2_key) \${TUNSHELL_SECRET} eu.relay.tunshell.com" curl -sSf https://lets.tunshell.com/init.sh | sh /dev/stdin T $(echo $KEYS | jq -r .peer1_key) ${{ secrets.TUNSHELL_SECRET }} eu.relay.tunshell.com - uses: actions/upload-artifact@v4 - if: failure() + if: failure() && (steps.pingpong.outcome == 'failure' || steps.fullconnectivity.outcome == 'failure' || steps.settlements.outcome == 'failure' || steps.pss.outcome == 'failure' || steps.soc.outcome == 'failure' || steps.gsoc.outcome == 'failure' || steps.pushsync-chunks-1.outcome == 'failure' || steps.pushsync-chunks-2.outcome == 'failure' || steps.retrieval.outcome == 'failure' || steps.manifest.outcome == 'failure' || steps.manifest-v1.outcome == 'failure' || steps.postage-stamps.outcome == 'failure' || steps.stake.outcome == 'failure' || steps.withdraw.outcome == 'failure' || steps.redundancy.outcome == 'failure' || steps.act.outcome == 'failure' || steps.feeds.outcome == 'failure' || steps.feeds-v1.outcome == 'failure') with: name: debug-dump path: dump/ - beekeeper-autotls: - name: Integration tests (autotls) - runs-on: ubuntu-latest - needs: [init, beekeeper] - env: - BEEKEEPER_CLUSTER: local-dns-autotls - P2P_WSS_ENABLE: true - steps: - - name: Checkout - uses: actions/checkout@v5 - with: - fetch-depth: 0 - ref: ${{ github.event.action == 'beekeeper' && github.event.client_payload.ref || github.sha }} - - name: Cache - uses: actions/cache@v4 - with: - path: | - /tmp/k3s-${{ env.K3S_VERSION }} - key: k3s-${{ env.K3S_VERSION }} - - name: "Download Artifact" - uses: actions/download-artifact@v4 - with: - name: temp-artifacts - - name: Unpack artifacts - run: | - chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh - mv .beekeeper.yaml ~/.beekeeper.yaml - mkdir -p ~/.beekeeper && mv local.yaml ~/.beekeeper/local.yaml - mv bee-1 bee - sudo mv beekeeper /usr/local/bin/beekeeper - - name: Prepare local cluster - run: timeout ${TIMEOUT} make beelocal OPTS='ci skip-vet' ACTION=prepare - - name: Set kube config - run: | - mkdir -p ~/.kube - cp /etc/rancher/k3s/k3s.yaml ~/.kube/config - - name: Set local cluster + - name: Set local cluster (local-dns-autotls) run: timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns-autotls - - name: Test pingpong - id: pingpong + - name: Test pingpong (autotls) + id: pingpong-autotls run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns-autotls --checks ci-pingpong; do echo "waiting for pingpong..."; sleep .3; done' - - name: Test fullconnectivity - id: fullconnectivity + - name: Test fullconnectivity (autotls) + id: fullconnectivity-autotls run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns-autotls --checks=ci-full-connectivity; do echo "waiting for full connectivity..."; sleep .3; done' - - name: Test retrieval - id: retrieval + - name: Test retrieval (autotls) + id: retrieval-autotls run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns-autotls --checks=ci-retrieval - name: Test autotls id: autotls run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns-autotls --checks=ci-autotls - - name: Collect debug artifacts - if: failure() + - name: Collect debug artifacts (autotls) + if: failure() && (steps.pingpong-autotls.outcome == 'failure' || steps.fullconnectivity-autotls.outcome == 'failure' || steps.retrieval-autotls.outcome == 'failure' || steps.autotls.outcome == 'failure') run: | bash .github/bin/beekeeper_artifacts.sh local-dns-autotls export FAILED='no-test' - if ${{ steps.pingpong.outcome=='failure' }}; then FAILED=pingpong; fi - if ${{ steps.fullconnectivity.outcome=='failure' }}; then FAILED=fullconnectivity; fi - if ${{ steps.retrieval.outcome=='failure' }}; then FAILED=retrieval; fi + if ${{ steps.pingpong-autotls.outcome=='failure' }}; then FAILED=pingpong; fi + if ${{ steps.fullconnectivity-autotls.outcome=='failure' }}; then FAILED=fullconnectivity; fi + if ${{ steps.retrieval-autotls.outcome=='failure' }}; then FAILED=retrieval; fi if ${{ steps.autotls.outcome=='failure' }}; then FAILED=autotls; fi curl -sSf -X POST -H "Content-Type: application/json" -d "{\"text\": \"**${RUN_TYPE}** Beekeeper Autotls Error\nBranch: \`${{ github.head_ref }}\`\nUser: @${{ github.event.pull_request.user.login }}\nDebugging artifacts: [click](https://$BUCKET_NAME.$AWS_ENDPOINT/artifacts_$VERTAG.tar.gz)\nStep failed: \`${FAILED}\`\"}" https://beehive.ethswarm.org/hooks/${{ secrets.TUNSHELL_KEY }} echo "Failed test: ${FAILED}" - uses: actions/upload-artifact@v4 - if: failure() + if: failure() && (steps.pingpong-autotls.outcome == 'failure' || steps.fullconnectivity-autotls.outcome == 'failure' || steps.retrieval-autotls.outcome == 'failure' || steps.autotls.outcome == 'failure') with: name: debug-dump-autotls path: dump/ @@ -283,7 +247,7 @@ jobs: name: Retag and Trigger ArgoCD env: TIMEOUT: 10m - needs: [beekeeper, beekeeper-autotls] + needs: [beekeeper] runs-on: ubuntu-latest steps: - name: "Download Artifact" From 31a1d0dc55680d14004103ec7586109265d984c8 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Mon, 16 Feb 2026 12:47:36 +0100 Subject: [PATCH 08/18] chore(ci): update Beekeeper workflow to use new branch and image tags --- .github/workflows/beekeeper.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 66369482f51..e47e5605f35 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -13,7 +13,7 @@ env: RUN_TYPE: "PR RUN" SETUP_CONTRACT_IMAGE: "ethersphere/bee-localchain" SETUP_CONTRACT_IMAGE_TAG: "0.9.4" - BEELOCAL_BRANCH: "akrem/p2p-wss-support-v2" # TODO: change to main (temporary testing branch) + BEELOCAL_BRANCH: "feat/pebble-forge-configurable-image-tags" # TODO: change to main (temporary testing branch) BEEKEEPER_BRANCH: "feat/autotls-cluster" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true @@ -26,6 +26,8 @@ env: AWS_ENDPOINT: fra1.digitaloceanspaces.com VERTAG: ${GITHUB_RUN_ID} P2P_WSS_ENABLE: true + PEBBLE_IMAGE_TAG: "v2.3.0" # TODO: change to v2.4.0 + P2P_FORGE_IMAGE_TAG: "v0.6.0" # TODO: change to v0.7.0 jobs: init: name: Init From a81b30f5c2dd7c6e797079a67293b38e953ccdbe Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Mon, 16 Feb 2026 12:57:03 +0100 Subject: [PATCH 09/18] chore(ci): update Beekeeper workflow to reference new autotls-check branch --- .github/workflows/beekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index e47e5605f35..50253ba6824 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -14,7 +14,7 @@ env: SETUP_CONTRACT_IMAGE: "ethersphere/bee-localchain" SETUP_CONTRACT_IMAGE_TAG: "0.9.4" BEELOCAL_BRANCH: "feat/pebble-forge-configurable-image-tags" # TODO: change to main (temporary testing branch) - BEEKEEPER_BRANCH: "feat/autotls-cluster" # TODO: change to master (temporary testing branch) + BEEKEEPER_BRANCH: "feat/autotls-check" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 From b25030af0a9d247de9e1d8e0534f7e6f01fdc310 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Mon, 16 Feb 2026 14:04:21 +0100 Subject: [PATCH 10/18] chore(ci): update PEBBLE_IMAGE_TAG in Beekeeper workflow to v2.9.0 (todo) --- .github/workflows/beekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 50253ba6824..215b9778c3d 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -26,7 +26,7 @@ env: AWS_ENDPOINT: fra1.digitaloceanspaces.com VERTAG: ${GITHUB_RUN_ID} P2P_WSS_ENABLE: true - PEBBLE_IMAGE_TAG: "v2.3.0" # TODO: change to v2.4.0 + PEBBLE_IMAGE_TAG: "v2.3.0" # TODO: change to v2.9.0 P2P_FORGE_IMAGE_TAG: "v0.6.0" # TODO: change to v0.7.0 jobs: init: From 3f5929635d1643f937c0a1e4add236137f4063e9 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:18:11 +0100 Subject: [PATCH 11/18] chore: update beekeeper branch --- .github/workflows/beekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 215b9778c3d..32af32c98aa 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -14,7 +14,7 @@ env: SETUP_CONTRACT_IMAGE: "ethersphere/bee-localchain" SETUP_CONTRACT_IMAGE_TAG: "0.9.4" BEELOCAL_BRANCH: "feat/pebble-forge-configurable-image-tags" # TODO: change to main (temporary testing branch) - BEEKEEPER_BRANCH: "feat/autotls-check" # TODO: change to master (temporary testing branch) + BEEKEEPER_BRANCH: "fix/sleeps" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 From 11028281f51af59ffb1bf90dec9e088a8b83ae63 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:40:21 +0100 Subject: [PATCH 12/18] chore: update beelocal and beekeeper branch --- .github/workflows/beekeeper.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 32af32c98aa..40e8cd639c7 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -13,8 +13,8 @@ env: RUN_TYPE: "PR RUN" SETUP_CONTRACT_IMAGE: "ethersphere/bee-localchain" SETUP_CONTRACT_IMAGE_TAG: "0.9.4" - BEELOCAL_BRANCH: "feat/pebble-forge-configurable-image-tags" # TODO: change to main (temporary testing branch) - BEEKEEPER_BRANCH: "fix/sleeps" # TODO: change to master (temporary testing branch) + BEELOCAL_BRANCH: "feat/p2p-wss-support-v2" # TODO: change to main (temporary testing branch) + BEEKEEPER_BRANCH: "feat/p2p-wss-support" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 From 00c7a113539b867ee1eb03d3a5586fa6d79b7cdf Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 17 Feb 2026 18:08:01 +0100 Subject: [PATCH 13/18] chore: update beekeeper branch to fix/pebble-timout --- .github/workflows/beekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 40e8cd639c7..5120cc6c17b 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -13,7 +13,7 @@ env: RUN_TYPE: "PR RUN" SETUP_CONTRACT_IMAGE: "ethersphere/bee-localchain" SETUP_CONTRACT_IMAGE_TAG: "0.9.4" - BEELOCAL_BRANCH: "feat/p2p-wss-support-v2" # TODO: change to main (temporary testing branch) + BEELOCAL_BRANCH: "fix/pebble-timout" # TODO: change to main (temporary testing branch) BEEKEEPER_BRANCH: "feat/p2p-wss-support" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true From 13c104e3417d662e93e3791d30b9fc9768f43e66 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 17 Feb 2026 18:14:11 +0100 Subject: [PATCH 14/18] fix: update pebble img tag to v2.9.0 --- .github/workflows/beekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 5120cc6c17b..8d57f330132 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -26,7 +26,7 @@ env: AWS_ENDPOINT: fra1.digitaloceanspaces.com VERTAG: ${GITHUB_RUN_ID} P2P_WSS_ENABLE: true - PEBBLE_IMAGE_TAG: "v2.3.0" # TODO: change to v2.9.0 + PEBBLE_IMAGE_TAG: "v2.9.0" # TODO: change to v2.9.0 P2P_FORGE_IMAGE_TAG: "v0.6.0" # TODO: change to v0.7.0 jobs: init: From 32c3a154c4cd461bb8cfce7460803c1a873acb0a Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 17 Feb 2026 18:28:25 +0100 Subject: [PATCH 15/18] chore: update pebble and p2p-forge img tags --- .github/workflows/beekeeper.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 8d57f330132..9a7b0a2792e 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -26,8 +26,8 @@ env: AWS_ENDPOINT: fra1.digitaloceanspaces.com VERTAG: ${GITHUB_RUN_ID} P2P_WSS_ENABLE: true - PEBBLE_IMAGE_TAG: "v2.9.0" # TODO: change to v2.9.0 - P2P_FORGE_IMAGE_TAG: "v0.6.0" # TODO: change to v0.7.0 + PEBBLE_IMAGE_TAG: "2.9.0" + P2P_FORGE_IMAGE_TAG: "v0.7.0" jobs: init: name: Init From 19df6a0186a51f6624f2d753727ddba405d1c364 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 17 Feb 2026 19:11:53 +0100 Subject: [PATCH 16/18] chore: update beekeeper branch --- .github/workflows/beekeeper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 9a7b0a2792e..ca587998452 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -13,7 +13,7 @@ env: RUN_TYPE: "PR RUN" SETUP_CONTRACT_IMAGE: "ethersphere/bee-localchain" SETUP_CONTRACT_IMAGE_TAG: "0.9.4" - BEELOCAL_BRANCH: "fix/pebble-timout" # TODO: change to main (temporary testing branch) + BEELOCAL_BRANCH: "feat/p2p-wss-support-v2" # TODO: change to main (temporary testing branch) BEEKEEPER_BRANCH: "feat/p2p-wss-support" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true From d09d15c8a22422615577f151bff710a393c1e1ac Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Fri, 20 Feb 2026 13:58:41 +0100 Subject: [PATCH 17/18] chore: add pebble cert validity period --- .github/workflows/beekeeper.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index c6b06a4b5a6..3c10eebf60d 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -28,6 +28,7 @@ env: P2P_WSS_ENABLE: true PEBBLE_IMAGE_TAG: "2.9.0" P2P_FORGE_IMAGE_TAG: "v0.7.0" + PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "60" jobs: init: name: Init From a8da2047164eddfc64e483dd963b7a6f9623e5bd Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Fri, 20 Feb 2026 14:49:22 +0100 Subject: [PATCH 18/18] fix: simplify failure conditions in beekeeper workflow for artifact collection --- .github/workflows/beekeeper.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 3c10eebf60d..cd48d82aed8 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -184,7 +184,7 @@ jobs: id: feeds run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-feed - name: Collect debug artifacts (local-dns) - if: failure() && (steps.pingpong.outcome == 'failure' || steps.fullconnectivity.outcome == 'failure' || steps.settlements.outcome == 'failure' || steps.pss.outcome == 'failure' || steps.soc.outcome == 'failure' || steps.gsoc.outcome == 'failure' || steps.pushsync-chunks-1.outcome == 'failure' || steps.pushsync-chunks-2.outcome == 'failure' || steps.retrieval.outcome == 'failure' || steps.manifest.outcome == 'failure' || steps.manifest-v1.outcome == 'failure' || steps.postage-stamps.outcome == 'failure' || steps.stake.outcome == 'failure' || steps.withdraw.outcome == 'failure' || steps.redundancy.outcome == 'failure' || steps.act.outcome == 'failure' || steps.feeds.outcome == 'failure' || steps.feeds-v1.outcome == 'failure') + if: failure() run: | bash .github/bin/beekeeper_artifacts.sh local-dns export FAILED='no-test' @@ -217,7 +217,7 @@ jobs: echo "sh <(curl -sSf https://lets.tunshell.com/init.sh) L $(echo $KEYS | jq -r .peer2_key) \${TUNSHELL_SECRET} eu.relay.tunshell.com" curl -sSf https://lets.tunshell.com/init.sh | sh /dev/stdin T $(echo $KEYS | jq -r .peer1_key) ${{ secrets.TUNSHELL_SECRET }} eu.relay.tunshell.com - uses: actions/upload-artifact@v4 - if: failure() && (steps.pingpong.outcome == 'failure' || steps.fullconnectivity.outcome == 'failure' || steps.settlements.outcome == 'failure' || steps.pss.outcome == 'failure' || steps.soc.outcome == 'failure' || steps.gsoc.outcome == 'failure' || steps.pushsync-chunks-1.outcome == 'failure' || steps.pushsync-chunks-2.outcome == 'failure' || steps.retrieval.outcome == 'failure' || steps.manifest.outcome == 'failure' || steps.manifest-v1.outcome == 'failure' || steps.postage-stamps.outcome == 'failure' || steps.stake.outcome == 'failure' || steps.withdraw.outcome == 'failure' || steps.redundancy.outcome == 'failure' || steps.act.outcome == 'failure' || steps.feeds.outcome == 'failure' || steps.feeds-v1.outcome == 'failure') + if: failure() with: name: debug-dump path: dump/ @@ -236,7 +236,7 @@ jobs: id: autotls run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns-autotls --checks=ci-autotls - name: Collect debug artifacts (autotls) - if: failure() && (steps.pingpong-autotls.outcome == 'failure' || steps.fullconnectivity-autotls.outcome == 'failure' || steps.retrieval-autotls.outcome == 'failure' || steps.autotls.outcome == 'failure') + if: failure() run: | bash .github/bin/beekeeper_artifacts.sh local-dns-autotls export FAILED='no-test' @@ -247,7 +247,7 @@ jobs: curl -sSf -X POST -H "Content-Type: application/json" -d "{\"text\": \"**${RUN_TYPE}** Beekeeper Autotls Error\nBranch: \`${{ github.head_ref }}\`\nUser: @${{ github.event.pull_request.user.login }}\nDebugging artifacts: [click](https://$BUCKET_NAME.$AWS_ENDPOINT/artifacts_$VERTAG.tar.gz)\nStep failed: \`${FAILED}\`\"}" https://beehive.ethswarm.org/hooks/${{ secrets.TUNSHELL_KEY }} echo "Failed test: ${FAILED}" - uses: actions/upload-artifact@v4 - if: failure() && (steps.pingpong-autotls.outcome == 'failure' || steps.fullconnectivity-autotls.outcome == 'failure' || steps.retrieval-autotls.outcome == 'failure' || steps.autotls.outcome == 'failure') + if: failure() with: name: debug-dump-autotls path: dump/