Skip to content

Nightly pipeline e2e tests on featurenet #379

Nightly pipeline e2e tests on featurenet

Nightly pipeline e2e tests on featurenet #379

---
name: Nightly pipeline e2e tests on featurenet
on:
workflow_dispatch:
schedule:
- cron: '00 23 * * *'
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: false
jobs:
check-vars-and-secrets:
name: Check vars and secrets
uses: ./.github/workflows/_check-vars-and-secrets.yml
secrets: inherit
build-aleph-e2e-client-image:
needs: [check-vars-and-secrets]
name: Build aleph-e2e-client image
uses: ./.github/workflows/_build-aleph-e2e-client.yml
with:
ref: ${{ github.ref }}
secrets: inherit
get-full-docker-image-path:
name: Get full aleph-node full docker path path
needs: [check-vars-and-secrets]
runs-on: ubuntu-20.04
outputs:
fqdn-image: ${{ steps.get-fqdns.outputs.fqdn-image }}
ref: ${{ steps.get-fqdns.outputs.ref }}
image-exists: ${{ steps.get-fqdns.outputs.image-exists }}
# yamllint disable-line rule:line-length
chain-bootstrapper-image-exists: ${{ steps.get-fqdns.outputs.chain-bootstrapper-image-exists }}
chain-bootstrapper-fqdn-image: ${{ steps.get-fqdns.outputs.chain-bootstrapper-fqdn-image }}
steps:
- name: Get aleph-node fqdn path from ${{ github.ref }}
id: get-fqdns
uses: Cardinal-Cryptography/github-actions/get-aleph-node-fqdn-image@v7
with:
ref: ${{ github.ref }}
test-binary: 'false'
ecr-dev-node-repo: ${{ vars.ECR_DEV_ALEPH_NODE_REPO }}
ecr-prod-node-repo: ${{ vars.ECR_ALEPH_NODE_REPO }}
ecr-chain-bootstrapper-repo: ${{ vars.ECR_CHAIN_BOOTSTRAPPER_REPO }}
build-aleph-node:
name: Build aleph-node
if: ${{ needs.get-full-docker-image-path.outputs.image-exists != 'true' }}
needs: [get-full-docker-image-path]
uses: ./.github/workflows/_build-aleph-node.yml
with:
ref: ${{ needs.get-full-docker-image-path.outputs.ref }}
production: true
push-aleph-node-image-to-ecr:
name: Build and push aleph-node image to ECR
if: ${{ needs.get-full-docker-image-path.outputs.image-exists != 'true' }}
needs:
- get-full-docker-image-path
- build-aleph-node
uses: ./.github/workflows/_push-image-to-ecr.yml
secrets: inherit
with:
binary-artifact-name: ${{ needs.build-aleph-node.outputs.artifact-name-binary }}
docker-image-name: ${{ needs.get-full-docker-image-path.outputs.fqdn-image }}
binary-name: aleph-node
docker-file-path: ./docker/Dockerfile
build-chain-bootstrapper:
needs: [get-full-docker-image-path]
if: ${{ needs.get-full-docker-image-path.outputs.chain-bootstrapper-image-exists != 'true' }}
name: Build chain-bootstrapper
uses: ./.github/workflows/_build-chain-bootstrapper.yml
with:
ref: ${{ needs.get-full-docker-image-path.outputs.ref }}
production: ${{ !inputs.short-session }}
push-chain-bootstrapper-image-to-ecr:
name: Push chain-bootstrapper docker image to ECR
if: ${{ needs.get-full-docker-image-path.outputs.chain-bootstrapper-image-exists != 'true' }}
needs:
- get-full-docker-image-path
- build-chain-bootstrapper
uses: ./.github/workflows/_push-image-to-ecr.yml
secrets: inherit
with:
binary-artifact-name: ${{ needs.build-chain-bootstrapper.outputs.artifact-name-binary }}
# yamllint disable-line rule:line-length
docker-image-name: ${{ needs.get-full-docker-image-path.outputs.chain-bootstrapper-fqdn-image }}
binary-name: chain-bootstrapper
docker-file-path: ./bin/chain-bootstrapper/Dockerfile
create-featurenet:
needs:
- get-full-docker-image-path
- push-aleph-node-image-to-ecr
- push-chain-bootstrapper-image-to-ecr
if: ${{ !cancelled() }}
name: Create featurenet from ${{ github.ref }}
uses: Cardinal-Cryptography/github-actions/.github/workflows/_featurenet-create.yml@v7
secrets: inherit
with:
featurenet-name: 'ops-finalization-e2e'
aleph-node-image: ${{ needs.get-full-docker-image-path.outputs.fqdn-image }}
# yamllint disable-line rule:line-length
chain-bootstrapper-image: ${{ needs.get-full-docker-image-path.outputs.chain-bootstrapper-fqdn-image }}
validators: '6'
expiration: '3h'
internal: true
delete-first: true
runs-finalization-e2e-test-on-fe:
needs:
- create-featurenet
- build-aleph-e2e-client-image
name: Runs finalization e2e on FE
if: ${{ !cancelled() }}
runs-on: [self-hosted, Linux, X64, small]
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ needs.build-aleph-e2e-client-image.outputs.artifact-name-image }}
- name: Load aleph-e2e-client image
shell: bash
run: docker load -i aleph-e2e-client.tar
- name: Run e2e test
shell: bash
run: |
docker run --network host \
-e NODE_URL='wss://${{ needs.create-featurenet.outputs.ws-hostname }}:443' \
-e TEST_CASES='finalization::finalization' \
-e RUST_LOG=info \
aleph-e2e-client:latest
timeout-minutes: 15
delete-featurenet:
if: ${{ always() }}
needs:
- runs-finalization-e2e-test-on-fe
name: Delete featurenet
uses: Cardinal-Cryptography/github-actions/.github/workflows/_featurenet-delete.yml@v7
secrets: inherit
with:
featurenet-name: 'ops-finalization-e2e'
slack-notification:
name: Slack notification
runs-on: ubuntu-20.04
needs: [delete-featurenet]
if: >
!cancelled() &&
github.event_name != 'workflow_dispatch'
steps:
- name: Send Slack message
uses: Cardinal-Cryptography/github-actions/slack-notification@v7
with:
notify-on: "failure"
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_DEV_ONDUTY }}