diff --git a/.github/workflows/beekeeper.yml b/.github/workflows/beekeeper.yml index c2448465d7f..78c13b0a4ba 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: "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 @@ -25,6 +25,10 @@ env: AWS_EC2_METADATA_DISABLED: true AWS_ENDPOINT: fra1.digitaloceanspaces.com VERTAG: ${GITHUB_RUN_ID} + P2P_WSS_ENABLE: true + PEBBLE_IMAGE_TAG: "2.9.0" + P2P_FORGE_IMAGE_TAG: "v0.7.0" + PEBBLE_CERTIFICATE_VALIDITY_PERIOD: "600" jobs: init: name: Init @@ -34,15 +38,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: @@ -99,6 +97,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: @@ -113,98 +116,34 @@ jobs: run: | chmod +x bee-1 beekeeper .github/bin/beekeeper_artifacts.sh mv .beekeeper.yaml ~/.beekeeper.yaml - mkdir ~/.beekeeper && mv local.yaml ~/.beekeeper/local.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 + 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 + 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' - 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 + - name: Collect debug artifacts (local-dns) if: failure() run: | bash .github/bin/beekeeper_artifacts.sh local-dns 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 @@ -220,6 +159,36 @@ jobs: with: name: debug-dump path: dump/ + - name: Set local cluster (local-dns-autotls) + run: timeout ${TIMEOUT} make deploylocal BEEKEEPER_CLUSTER=local-dns-autotls + - 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 (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 (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 (autotls) + if: failure() + run: | + bash .github/bin/beekeeper_artifacts.sh local-dns-autotls + export FAILED='no-test' + 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() + with: + name: debug-dump-autotls + path: dump/ retag: name: Retag and Trigger ArgoCD env: