Nightly pipeline e2e tests on featurenet #416
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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 }} |