diff --git a/.woodpecker/bff.yml b/.woodpecker/bff.yml index 63cef64a..0a656f5b 100644 --- a/.woodpecker/bff.yml +++ b/.woodpecker/bff.yml @@ -44,6 +44,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh bff + - name: secrets image: alpine:latest depends_on: [ version ] @@ -64,7 +72,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/bff/build-image.sh diff --git a/.woodpecker/billing_documents.yml b/.woodpecker/billing_documents.yml index 38f67056..993ae421 100644 --- a/.woodpecker/billing_documents.yml +++ b/.woodpecker/billing_documents.yml @@ -40,6 +40,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh billing_documents + - name: secrets image: alpine:latest depends_on: [ version ] @@ -60,7 +68,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/billing_documents/build-image.sh diff --git a/.woodpecker/billing_fees.yml b/.woodpecker/billing_fees.yml index 10e303e5..4665426c 100644 --- a/.woodpecker/billing_fees.yml +++ b/.woodpecker/billing_fees.yml @@ -40,6 +40,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh billing_fees + - name: secrets image: alpine:latest depends_on: [ version ] @@ -60,7 +68,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/billing_fees/build-image.sh diff --git a/.woodpecker/discovery.yml b/.woodpecker/discovery.yml index 9cd58c4f..e50d8ee1 100644 --- a/.woodpecker/discovery.yml +++ b/.woodpecker/discovery.yml @@ -39,6 +39,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh discovery + - name: secrets image: alpine:latest depends_on: [ version ] @@ -59,7 +67,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/discovery/build-image.sh diff --git a/.woodpecker/fx_ingestor.yml b/.woodpecker/fx_ingestor.yml index b063fb6d..f815324e 100644 --- a/.woodpecker/fx_ingestor.yml +++ b/.woodpecker/fx_ingestor.yml @@ -45,6 +45,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh fx_ingestor + - name: secrets image: alpine:latest depends_on: [ version ] @@ -65,7 +73,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/fx/build-image.sh diff --git a/.woodpecker/fx_oracle.yml b/.woodpecker/fx_oracle.yml index 38fb8e63..39e498dd 100644 --- a/.woodpecker/fx_oracle.yml +++ b/.woodpecker/fx_oracle.yml @@ -46,6 +46,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh fx_oracle + - name: secrets image: alpine:latest depends_on: [ version ] @@ -66,7 +74,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/fx/build-image.sh diff --git a/.woodpecker/gateway_chain.yml b/.woodpecker/gateway_chain.yml index d8103392..aa13ae7b 100644 --- a/.woodpecker/gateway_chain.yml +++ b/.woodpecker/gateway_chain.yml @@ -43,6 +43,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh gateway_chain + - name: secrets image: alpine:latest depends_on: [ version ] @@ -63,7 +71,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/chain_gateway/build-image.sh diff --git a/.woodpecker/gateway_mntx.yml b/.woodpecker/gateway_mntx.yml index f5de3e00..bc7ba934 100644 --- a/.woodpecker/gateway_mntx.yml +++ b/.woodpecker/gateway_mntx.yml @@ -42,6 +42,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh gateway_mntx + - name: secrets image: alpine:latest depends_on: [ version ] @@ -62,7 +70,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/mntx/build-image.sh diff --git a/.woodpecker/gateway_tgsettle.yml b/.woodpecker/gateway_tgsettle.yml index ef9c5cd6..63db1e1a 100644 --- a/.woodpecker/gateway_tgsettle.yml +++ b/.woodpecker/gateway_tgsettle.yml @@ -40,6 +40,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh gateway_tgsettle + - name: secrets image: alpine:latest depends_on: [ version ] @@ -60,7 +68,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/tgsettle/build-image.sh diff --git a/.woodpecker/gateway_tron.yml b/.woodpecker/gateway_tron.yml index 958e7a69..576bc07d 100644 --- a/.woodpecker/gateway_tron.yml +++ b/.woodpecker/gateway_tron.yml @@ -43,6 +43,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh gateway_tron + - name: secrets image: alpine:latest depends_on: [ version ] @@ -63,7 +71,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/tron_gateway/build-image.sh diff --git a/.woodpecker/ledger.yml b/.woodpecker/ledger.yml index b0d7fdc6..97b75c67 100644 --- a/.woodpecker/ledger.yml +++ b/.woodpecker/ledger.yml @@ -40,6 +40,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh ledger + - name: secrets image: alpine:latest depends_on: [ version ] @@ -60,7 +68,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/ledger/build-image.sh diff --git a/.woodpecker/notification.yml b/.woodpecker/notification.yml index 761859eb..86567941 100644 --- a/.woodpecker/notification.yml +++ b/.woodpecker/notification.yml @@ -43,6 +43,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh notification + - name: secrets image: alpine:latest depends_on: [ version ] @@ -63,7 +71,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/notification/build-image.sh diff --git a/.woodpecker/payments_methods.yml b/.woodpecker/payments_methods.yml index 7c237649..79bf8309 100644 --- a/.woodpecker/payments_methods.yml +++ b/.woodpecker/payments_methods.yml @@ -40,6 +40,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh payments_methods + - name: secrets image: alpine:latest depends_on: [ version ] @@ -60,7 +68,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/payments_methods/build-image.sh diff --git a/.woodpecker/payments_orchestrator.yml b/.woodpecker/payments_orchestrator.yml index 7558af26..d78489c8 100644 --- a/.woodpecker/payments_orchestrator.yml +++ b/.woodpecker/payments_orchestrator.yml @@ -40,6 +40,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh payments_orchestrator + - name: secrets image: alpine:latest depends_on: [ version ] @@ -60,7 +68,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/payments_orchestrator/build-image.sh diff --git a/.woodpecker/payments_quotation.yml b/.woodpecker/payments_quotation.yml index 0b328ee5..83710779 100644 --- a/.woodpecker/payments_quotation.yml +++ b/.woodpecker/payments_quotation.yml @@ -42,6 +42,14 @@ steps: - export PATH="$(go env GOPATH)/bin:$PATH" - bash ci/scripts/proto/generate.sh + - name: backend-tests + image: golang:alpine + depends_on: [ proto ] + commands: + - set -eu + - apk add --no-cache bash git build-base + - sh ci/scripts/common/run_backend_tests.sh payments_quotation + - name: secrets image: alpine:latest depends_on: [ version ] @@ -62,7 +70,7 @@ steps: - name: build-image image: gcr.io/kaniko-project/executor:debug - depends_on: [ proto, secrets ] + depends_on: [ backend-tests, secrets ] commands: - sh ci/scripts/payments_quotation/build-image.sh diff --git a/ci/scripts/common/run_backend_tests.sh b/ci/scripts/common/run_backend_tests.sh new file mode 100755 index 00000000..ce13c26c --- /dev/null +++ b/ci/scripts/common/run_backend_tests.sh @@ -0,0 +1,135 @@ +#!/usr/bin/env bash +set -eu + +if ! set -o pipefail 2>/dev/null; then + : +fi + +SERVICE="${1:-}" +if [ -z "${SERVICE}" ]; then + echo "usage: $0 " >&2 + exit 2 +fi + +REPO_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" +cd "${REPO_ROOT}" + +run_go_tests() { + module="$1" + if [ ! -f "${module}/go.mod" ]; then + echo "[backend-tests] missing go.mod for module: ${module}" >&2 + exit 1 + fi + + echo "[backend-tests] running go test ./... in ${module}" + ( + cd "${module}" + go test ./... + ) +} + +case "${SERVICE}" in + bff) + modules=" +api/pkg +api/server +" + ;; + billing_documents) + modules=" +api/pkg +api/billing/documents +" + ;; + billing_fees) + modules=" +api/pkg +api/billing/fees +" + ;; + discovery) + modules=" +api/pkg +api/discovery +" + ;; + fx_ingestor) + modules=" +api/pkg +api/fx/storage +api/fx/ingestor +" + ;; + fx_oracle) + modules=" +api/pkg +api/fx/storage +api/fx/oracle +" + ;; + gateway_chain) + modules=" +api/pkg +api/gateway/chain +" + ;; + gateway_mntx) + modules=" +api/pkg +api/gateway/mntx +" + ;; + gateway_tgsettle) + modules=" +api/pkg +api/gateway/tgsettle +" + ;; + gateway_tron) + modules=" +api/pkg +api/gateway/tron +" + ;; + ledger) + modules=" +api/pkg +api/ledger +" + ;; + notification) + modules=" +api/pkg +api/notification +" + ;; + payments_methods) + modules=" +api/pkg +api/payments/storage +api/payments/methods +" + ;; + payments_orchestrator) + modules=" +api/pkg +api/payments/storage +api/payments/orchestrator +" + ;; + payments_quotation) + modules=" +api/pkg +api/payments/storage +api/payments/quotation +" + ;; + *) + echo "[backend-tests] unknown service key: ${SERVICE}" >&2 + exit 2 + ;; +esac + +for module in ${modules}; do + run_go_tests "${module}" +done