Added updated Mojaloop license #95
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: Integration test | |
on: | |
workflow_dispatch: | |
inputs: | |
debug_enabled: | |
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' | |
required: false | |
default: false | |
push: | |
branches: | |
- '**' | |
jobs: | |
manifest_check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
- uses: cachix/install-nix-action@v13 | |
with: | |
nix_path: nixpkgs=https://github.com/NixOS/nixpkgs/archive/8e4fe32876ca15e3d5eb3ecd3ca0b224417f5f17.tar.gz | |
- name: Install dependencies in environment | |
run: nix-env -if integration_test/default.nix | |
- name: Validate integration test manifest | |
run: kustomize build integration_test | kubeconform -strict -kubernetes-version 1.17.9 | |
integration_test: | |
timeout-minutes: 45 | |
needs: manifest_check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: cachix/install-nix-action@v13 | |
with: | |
nix_path: nixpkgs=https://github.com/NixOS/nixpkgs/archive/8e4fe32876ca15e3d5eb3ecd3ca0b224417f5f17.tar.gz | |
- name: Install dependencies | |
run: nix-env -if integration_test/default.nix | |
- name: Start cluster | |
run: minikube start --driver=docker --kubernetes-version=v1.21.5 | |
- name: Install Mojaloop Charts | |
run: helm repo add mojaloop-charts https://docs.mojaloop.io/charts/repo | |
- name: Install BizOps Backend | |
run: helm upgrade --install backend mojaloop-charts/backend --devel -f integration_test/chart_values/backend.yaml | |
- name: Install BizOps Services | |
run: helm upgrade --install bof mojaloop-charts/bof --devel -f integration_test/chart_values/bof.yaml --version 1.0.0-557.7cb0c96 | |
- name: Deploy | |
run: skaffold run -p integration-test | |
- name: Wait for kube api server to process and create all resources | |
# This is because the wait step that follows this one does this: | |
# 1. retrieve list of pods | |
# 2. wait for list of pods | |
# Unfortunately, the list of pods might not be complete at step (1), as all pods may not yet | |
# be created, meaning the list of pods waited on in step (2) is not complete. We therefore | |
# wait some time here to allow that to finish before we retrieve the list of pods to wait on. | |
# 30s should be more than enough. | |
run: sleep 30s | |
- name: Wait for deployment readiness | |
# Skaffold is supposed to do this, but for whatever reason, does not. At the time of writing, | |
# investigating this was not a priority. | |
run: timeout 1500 kubectl wait --for=condition=Ready pod --all --timeout=1200s | |
- name: Port-forward the portal frontend ingress | |
run: kubectl port-forward -n ingress-nginx --address 0.0.0.0 svc/ingress-nginx-controller 3000:80 & | |
- name: Port-forward voodoo-doll | |
run: kubectl port-forward --address 0.0.0.0 voodoo-doll 3030 & | |
- name: Install test dependencies | |
working-directory: integration_test/e2e-ui-tests | |
run: |- | |
npm ci | |
- name: Run tests | |
working-directory: integration_test/e2e-ui-tests | |
run: |- | |
INGRESS_PORT="3000" SETTLEMENT_MICROFRONTEND_ENDPOINT="http://localhost:3000" npm run test:headless | |
- name: Archive screenshots | |
if: ${{ always() }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: failure-screenshots | |
path: 'integration_test/e2e-ui-tests/screenshots/' | |
- name: Archive settlement finalization reports | |
if: ${{ always() }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: finalization-reports | |
path: '**/settlement-finalization-report*.xlsx' | |
- name: Print docker containers to check any issues with the cluster | |
if: ${{ failure() }} | |
run: docker ps | |
- name: Print voodoo doll logs | |
if: ${{ always() }} | |
run: kubectl logs voodoo-doll | |
- name: Print resources | |
if: ${{ always() }} | |
run: kubectl get svc,deploy,sts,pv,pvc,configmap,job,pod -A | |
- name: Describe resources | |
if: ${{ always() }} | |
run: kubectl describe svc,deploy,sts,pv,pvc,configmap,job,pod -A | |
- name: Print secret values | |
if: ${{ always() }} | |
run: |- | |
kubectl get secrets -o json | jq -r '.items[] | { name: .metadata.name, data: .data | map_values(@base64d) }' | |
- name: Setup tmate session | |
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled }} | |
uses: mxschmitt/action-tmate@v3 | |
timeout-minutes: 10 |