Skip to content

CI Testing for Dataplane #359

CI Testing for Dataplane

CI Testing for Dataplane #359

Workflow file for this run

name: Conductor functional test workflow
defaults:
run:
shell: bash
working-directory: ./conductor/
permissions:
pull-requests: write
deployments: write
id-token: write
contents: read
on:
pull_request:
branches:
- main
paths:
- ".github/workflows/conductor.yaml"
- "conductor/**"
- "charts/tembo-operator/templates/crd.yaml"
jobs:
functional_test:
name: Run functional testing
runs-on:
- self-hosted
- dind
- xlarge-16x16
strategy:
# fail-fast means to cancel all jobs if one fails
fail-fast: false
matrix:
kube_version:
- "1.25.8"
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: |
set -xe
sudo apt-get update
sudo apt-get install -y pkg-config libssl-dev git
- uses: azure/setup-helm@v3
- uses: extractions/setup-just@v1
- name: Install kind
uses: helm/[email protected]
with:
install_only: true
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "conductor-functional-test"
workspaces: |
conductor
- uses: aws-actions/configure-aws-credentials@v2
with:
aws-region: "us-east-1"
role-to-assume: "arn:aws:iam::484221059514:role/cdb-plat-use1-dev-data-1-conductor-gha"
- uses: unfor19/install-aws-cli-action@v1
- name: Setup local test cluster
run: |
set -xe
export KUBE_VERSION=${{ matrix.kube_version }}
just start-kind
- name: Setup local postgres
run: |
set -xe
just run-postgres
- name: Run functional / integration tests
run: |
set -xe
cargo install cargo-watch
cargo build
# Start conductor in the background
just watch > conductor-output.txt 2>&1 &
# Wait long enough that the server build grabs the cargo build lock file
# before the test does
sleep 5
# Run the tests
cargo test -- --ignored --nocapture
- name: Debugging information
if: always()
run: |
set +e
set -x
echo "=========="
cat conductor-output.txt
echo "=========="
kubectl get pods --all-namespaces
echo "=========="
kubectl get -o yaml sts --all-namespaces
echo "=========="
kubectl get -o yaml svc --all-namespaces
echo "=========="
kubectl get -o yaml pods --all-namespaces
echo "=========="
kubectl get -o yaml coredb --all-namespaces
echo "=========="
kubectl logs -n tembo-system -l app=tembo-controller