From 4420011b6bb4c101a160834cea0410e407e4f846 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Thu, 5 Feb 2026 14:58:44 +0100 Subject: [PATCH 01/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/ From 1323006a0462d899f35374c8a23750817ef13412 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Mon, 2 Mar 2026 18:17:20 +0100 Subject: [PATCH 19/33] 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 cd48d82aed8..95dd1c9dda1 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/p2p-wss-support-v2" # TODO: change to main (temporary testing branch) - BEEKEEPER_BRANCH: "feat/p2p-wss-support" # TODO: change to master (temporary testing branch) + BEELOCAL_BRANCH: "feat/forge-peeble-dns" # TODO: change to main (temporary testing branch) + BEEKEEPER_BRANCH: "dns-resolver" # TODO: change to master (temporary testing branch) BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 From 7249ec718593ebde8a89a79d54390f3d1dcda4de Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Thu, 5 Mar 2026 16:35:27 +0100 Subject: [PATCH 20/33] chore: increase pebble cert period to 300 --- .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 95dd1c9dda1..1a1fca158c4 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -28,7 +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" + PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "300" jobs: init: name: Init From daa489ecb8070686a0346854b8faf550650a642e Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Thu, 5 Mar 2026 23:37:15 +0100 Subject: [PATCH 21/33] chore: temp remove redundant test steps from beekeeper Removed multiple test steps from the Beekeeper workflow to streamline checks. --- .github/workflows/beekeeper.yml | 62 --------------------------------- 1 file changed, 62 deletions(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 1a1fca158c4..1224fc9d924 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -133,56 +133,9 @@ jobs: - name: Test fullconnectivity id: fullconnectivity run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks=ci-full-connectivity; do echo "waiting for full connectivity..."; sleep .3; done' - - name: Test settlements - id: settlements - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-settlements - - name: Sleep for time allowance to replenish - run: sleep 2 - - name: Test pss - id: pss - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-pss - - name: Test soc - id: soc - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-soc - - name: Test gsoc - id: gsoc - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-gsoc - - name: Test pushsync (chunks) - id: pushsync-chunks-1 - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-pushsync-chunks - - name: Test pushsync (light mode chunks) - id: pushsync-chunks-2 - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-pushsync-light-chunks - name: Test retrieval id: retrieval run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-retrieval - - name: Test manifest - id: manifest - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-manifest - - name: Test manifest v1 - id: manifest-v1 - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-manifest-v1 - - name: Test postage stamps - id: postage-stamps - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks ci-postage - - name: Test staking - id: stake - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks ci-stake - - name: Test withdraw - id: withdraw - run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks ci-withdraw; do echo "waiting for withdraw..."; sleep .3; done' - - name: Test redundancy - id: redundancy - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks ci-redundancy - - name: Test act - id: act - run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks ci-act; do echo "waiting for act..."; sleep .3; done' - - name: Test feeds v1 - id: feeds-v1 - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-feed-v1 - - name: Test feeds - id: feeds - run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-feed - name: Collect debug artifacts (local-dns) if: failure() run: | @@ -190,22 +143,7 @@ jobs: export FAILED='no-test' if ${{ steps.pingpong.outcome=='failure' }}; then FAILED=pingpong; fi if ${{ steps.fullconnectivity.outcome=='failure' }}; then FAILED=fullconnectivity; fi - if ${{ steps.settlements.outcome=='failure' }}; then FAILED=settlements; fi - if ${{ steps.pss.outcome=='failure' }}; then FAILED=pss; fi - if ${{ steps.soc.outcome=='failure' }}; then FAILED=soc; fi - if ${{ steps.gsoc.outcome=='failure' }}; then FAILED=gsoc; fi - if ${{ steps.pushsync-chunks-1.outcome=='failure' }}; then FAILED=pushsync-chunks-1; fi - if ${{ steps.pushsync-chunks-2.outcome=='failure' }}; then FAILED=pushsync-chunks-2; fi if ${{ steps.retrieval.outcome=='failure' }}; then FAILED=retrieval; fi - if ${{ steps.manifest.outcome=='failure' }}; then FAILED=manifest; fi - if ${{ steps.manifest-v1.outcome=='failure' }}; then FAILED=manifest-v1; fi - if ${{ steps.postage-stamps.outcome=='failure' }}; then FAILED=postage-stamps; fi - if ${{ steps.stake.outcome=='failure' }}; then FAILED=stake; fi - if ${{ steps.withdraw.outcome=='failure' }}; then FAILED=withdraw; fi - if ${{ steps.redundancy.outcome=='failure' }}; then FAILED=redundancy; fi - if ${{ steps.feeds.outcome=='failure' }}; then FAILED=feeds; fi - if ${{ steps.feeds-v1.outcome=='failure' }}; then FAILED=feeds-v1; fi - if ${{ steps.act.outcome=='failure' }}; then FAILED=act; fi curl -sSf -X POST -H "Content-Type: application/json" -d "{\"text\": \"**${RUN_TYPE}** Beekeeper 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}" - name: Create tunshell session for debug From e31b93b94e41089ed66ceac68813d91d3ae4fc35 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:11:15 +0100 Subject: [PATCH 22/33] chore: update pebble cert validity period Increased the Pebble certificate validity period from 300 to 600. --- .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 1224fc9d924..78c13b0a4ba 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -28,7 +28,7 @@ env: P2P_WSS_ENABLE: true PEBBLE_IMAGE_TAG: "2.9.0" P2P_FORGE_IMAGE_TAG: "v0.7.0" - PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "300" + PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "600" jobs: init: name: Init From 839e9697d5d3925e8394912b04f36da804344bba Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 7 Apr 2026 10:41:09 +0200 Subject: [PATCH 23/33] chore: update beekeeper and beelocal branches --- .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 78c13b0a4ba..b3e83c0365a 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/forge-peeble-dns" # TODO: change to main (temporary testing branch) - BEEKEEPER_BRANCH: "dns-resolver" # TODO: change to master (temporary testing branch) + BEELOCAL_BRANCH: "feat/p2p-wss-support-v2" # TODO: change to main (temporary testing branch) + BEEKEEPER_BRANCH: "master" BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 From e27b650974e180b6d1b8c6febef576767cc79499 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 7 Apr 2026 11:53:42 +0200 Subject: [PATCH 24/33] chore: update beelocal 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 b3e83c0365a..7014f2d8ff8 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: "main" # TODO: change to main (temporary testing branch) BEEKEEPER_BRANCH: "master" BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true From 37aa8701fce59bf5ca00930fbb55ab8dee5b492d Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Tue, 7 Apr 2026 11:54:29 +0200 Subject: [PATCH 25/33] chore: update beelocal 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 7014f2d8ff8..e5241d91921 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: "main" # TODO: change to main (temporary testing branch) + BEELOCAL_BRANCH: "main" BEEKEEPER_BRANCH: "master" BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true From 62962dc9a02c94f11d53896ab5310d996266160b Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Fri, 17 Apr 2026 15:32:17 +0200 Subject: [PATCH 26/33] chore: revert old chekcs --- .github/workflows/beekeeper.yml | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index e5241d91921..521ee9dbc6b 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -133,9 +133,56 @@ jobs: - name: Test fullconnectivity id: fullconnectivity run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks=ci-full-connectivity; do echo "waiting for full connectivity..."; sleep .3; done' + - name: Test settlements + id: settlements + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-settlements + - name: Sleep for time allowance to replenish + run: sleep 2 + - name: Test pss + id: pss + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-pss + - name: Test soc + id: soc + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-soc + - name: Test gsoc + id: gsoc + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-gsoc + - name: Test pushsync (chunks) + id: pushsync-chunks-1 + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-pushsync-chunks + - name: Test pushsync (light mode chunks) + id: pushsync-chunks-2 + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-pushsync-light-chunks - name: Test retrieval id: retrieval run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-retrieval + - name: Test manifest + id: manifest + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-manifest + - name: Test manifest v1 + id: manifest-v1 + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-manifest-v1 + - name: Test postage stamps + id: postage-stamps + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks ci-postage + - name: Test staking + id: stake + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks ci-stake + - name: Test withdraw + id: withdraw + run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks ci-withdraw; do echo "waiting for withdraw..."; sleep .3; done' + - name: Test redundancy + id: redundancy + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks ci-redundancy + - name: Test act + id: act + run: timeout ${TIMEOUT} bash -c 'until beekeeper check --cluster-name local-dns --checks ci-act; do echo "waiting for act..."; sleep .3; done' + - name: Test feeds v1 + id: feeds-v1 + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-feed-v1 + - name: Test feeds + id: feeds + run: timeout ${TIMEOUT} beekeeper check --cluster-name local-dns --checks=ci-feed - name: Collect debug artifacts (local-dns) if: failure() run: | From 621b5715adc2e7548d14e3294b4d4a76f3bc57b0 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Fri, 17 Apr 2026 17:38:20 +0200 Subject: [PATCH 27/33] chore: update beekeeper branch to refactor/autotls --- .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 521ee9dbc6b..2e1dae601c2 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: "main" - BEEKEEPER_BRANCH: "master" + BEEKEEPER_BRANCH: "refactor/autotls" BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 From 19d9846b3c637b6b9500cb3f3a7cf7fadac14805 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Fri, 17 Apr 2026 19:52:29 +0200 Subject: [PATCH 28/33] 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 2e1dae601c2..521ee9dbc6b 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: "main" - BEEKEEPER_BRANCH: "refactor/autotls" + BEEKEEPER_BRANCH: "master" BEEKEEPER_METRICS_ENABLED: false REACHABILITY_OVERRIDE_PUBLIC: true BATCHFACTOR_OVERRIDE_PUBLIC: 2 From d1d7ec74d3d013c37b6245945435a5f4387ef035 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Thu, 30 Apr 2026 09:34:24 +0200 Subject: [PATCH 29/33] chore: enhance tests for autotls and update pebble validity period --- .github/workflows/beekeeper.yml | 37 +++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 521ee9dbc6b..ba4d74427a3 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -28,7 +28,7 @@ env: P2P_WSS_ENABLE: true PEBBLE_IMAGE_TAG: "2.9.0" P2P_FORGE_IMAGE_TAG: "v0.7.0" - PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "600" + PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "120" jobs: init: name: Init @@ -206,6 +206,39 @@ jobs: with: name: debug-dump path: dump/ + beekeeper-autotls: + name: Integration tests (autotls) + 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: + 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 (local-dns-autotls) run: timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns-autotls - name: Test pingpong (autotls) @@ -240,7 +273,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 c8bcdb09e73c57d40a62a5fc9039600219a82308 Mon Sep 17 00:00:00 2001 From: Akrem Chabchoub <121046693+akrem-chabchoub@users.noreply.github.com> Date: Thu, 30 Apr 2026 10:08:45 +0200 Subject: [PATCH 30/33] chore: update cert validity to 500 --- .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 ba4d74427a3..c4ff643b102 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -28,7 +28,7 @@ env: P2P_WSS_ENABLE: true PEBBLE_IMAGE_TAG: "2.9.0" P2P_FORGE_IMAGE_TAG: "v0.7.0" - PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "120" + PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "500" jobs: init: name: Init From e30e29ec36b1504961f4a92e9f31b6d4ffdf9c4d Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Fri, 1 May 2026 12:44:05 +0200 Subject: [PATCH 31/33] chore: enhance beekeeper workflow with push event and P2P change detection --- .github/workflows/beekeeper.yml | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index c4ff643b102..2c92b1e1a10 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -6,6 +6,9 @@ on: pull_request: branches: - "**" + push: + branches: + - master env: K3S_VERSION: "v1.31.10+k3s1" @@ -35,6 +38,7 @@ jobs: runs-on: ubuntu-latest outputs: msg: ${{ steps.commit.outputs.msg }} + p2p_changed: ${{ steps.p2p.outputs.changed }} steps: - name: Checkout uses: actions/checkout@v5 @@ -58,8 +62,27 @@ jobs: - name: Get Commit Message id: commit run: | - MSG=$(git log --format=%s -n 1 ${{github.event.after}}) + MSG=$(git log --format=%s -n 1 ${{ github.event.after || github.sha }}) echo "msg=${MSG}" >> $GITHUB_OUTPUT + - name: Detect P2P connectivity-related changes (pull_request only) + id: p2p + run: | + if [ "${{ github.event_name }}" != "pull_request" ]; then + echo "changed=skip" >> $GITHUB_OUTPUT + exit 0 + fi + git fetch origin "${{ github.base_ref }}" --depth=1 + # Paths that can affect ci-autotls behavior: + # - /addresses, /connect, /peers API surface + # - p2p/libp2p WSS/AutoTLS transport and handshake + # - node wiring + topology/hive/addressbook integration + # - swarm address identity types and p2p deps + if git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep -qE \ + '^(pkg/(p2p|topology|hive|addressbook|bzz|node|swarm)/|pkg/api/(api|router|p2p|peer)\.go|cmd/bee/cmd/(cmd|start)\.go|go\.mod|go\.sum)'; then + echo "changed=true" >> $GITHUB_OUTPUT + else + echo "changed=false" >> $GITHUB_OUTPUT + fi - name: Build - 0 run: | make binary @@ -208,6 +231,10 @@ jobs: path: dump/ beekeeper-autotls: name: Integration tests (autotls) + if: | + github.event_name == 'repository_dispatch' || + (github.event_name == 'push' && github.ref == 'refs/heads/master') || + (github.event_name == 'pull_request' && needs.init.outputs.p2p_changed == 'true') runs-on: ubuntu-latest needs: [init] steps: @@ -274,6 +301,10 @@ jobs: env: TIMEOUT: 10m needs: [beekeeper, beekeeper-autotls] + if: | + always() && + needs.beekeeper.result == 'success' && + (needs.beekeeper-autotls.result == 'success' || needs.beekeeper-autotls.result == 'skipped') runs-on: ubuntu-latest steps: - name: "Download Artifact" From 05ef83486387978c3667f510b8d60aa6bb95f890 Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Fri, 1 May 2026 13:25:55 +0200 Subject: [PATCH 32/33] chore: update beekeeper workflow to include itself in change detection --- .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 2c92b1e1a10..70d98818006 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -78,7 +78,7 @@ jobs: # - node wiring + topology/hive/addressbook integration # - swarm address identity types and p2p deps if git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep -qE \ - '^(pkg/(p2p|topology|hive|addressbook|bzz|node|swarm)/|pkg/api/(api|router|p2p|peer)\.go|cmd/bee/cmd/(cmd|start)\.go|go\.mod|go\.sum)'; then + '^(pkg/(p2p|topology|hive|addressbook|bzz|node|swarm)/|pkg/api/(api|router|p2p|peer)\.go|cmd/bee/cmd/(cmd|start)\.go|\.github/workflows/beekeeper\.yml|go\.mod|go\.sum)'; then echo "changed=true" >> $GITHUB_OUTPUT else echo "changed=false" >> $GITHUB_OUTPUT From 63f2ffcc4f4767e360821a9077862081469da9ca Mon Sep 17 00:00:00 2001 From: akrem-chabchoub Date: Tue, 12 May 2026 09:08:45 +0200 Subject: [PATCH 33/33] chore: fix error handling in beekeeper workflow --- .github/workflows/beekeeper.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index 70d98818006..48976572f20 100644 --- a/.github/workflows/beekeeper.yml +++ b/.github/workflows/beekeeper.yml @@ -213,7 +213,22 @@ jobs: export FAILED='no-test' if ${{ steps.pingpong.outcome=='failure' }}; then FAILED=pingpong; fi if ${{ steps.fullconnectivity.outcome=='failure' }}; then FAILED=fullconnectivity; fi + if ${{ steps.settlements.outcome=='failure' }}; then FAILED=settlements; fi + if ${{ steps.pss.outcome=='failure' }}; then FAILED=pss; fi + if ${{ steps.soc.outcome=='failure' }}; then FAILED=soc; fi + if ${{ steps.gsoc.outcome=='failure' }}; then FAILED=gsoc; fi + if ${{ steps.pushsync-chunks-1.outcome=='failure' }}; then FAILED=pushsync-chunks; fi + if ${{ steps.pushsync-chunks-2.outcome=='failure' }}; then FAILED=pushsync-light-chunks; fi if ${{ steps.retrieval.outcome=='failure' }}; then FAILED=retrieval; fi + if ${{ steps.manifest.outcome=='failure' }}; then FAILED=manifest; fi + if ${{ steps.manifest-v1.outcome=='failure' }}; then FAILED=manifest-v1; fi + if ${{ steps.postage-stamps.outcome=='failure' }}; then FAILED=postage-stamps; fi + if ${{ steps.stake.outcome=='failure' }}; then FAILED=stake; fi + if ${{ steps.withdraw.outcome=='failure' }}; then FAILED=withdraw; fi + if ${{ steps.redundancy.outcome=='failure' }}; then FAILED=redundancy; fi + if ${{ steps.act.outcome=='failure' }}; then FAILED=act; fi + if ${{ steps.feeds-v1.outcome=='failure' }}; then FAILED=feeds-v1; fi + if ${{ steps.feeds.outcome=='failure' }}; then FAILED=feeds; fi curl -sSf -X POST -H "Content-Type: application/json" -d "{\"text\": \"**${RUN_TYPE}** Beekeeper 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}" - name: Create tunshell session for debug