From fb7979767a1542785f656888ab5e433600d0ed0e Mon Sep 17 00:00:00 2001 From: Andrew Lavery Date: Thu, 21 Dec 2023 15:56:53 +0000 Subject: [PATCH] run integration tests both in a cluster job and on the CLI --- .github/workflows/build-test.yaml | 25 +++++++++++++++++++++++++ .github/workflows/release.yaml | 30 ++++++++++++++++++++++++++++++ testing/validate.sh | 13 +++++++++---- 3 files changed, 64 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml index 462e13d..bfdaa8f 100644 --- a/.github/workflows/build-test.yaml +++ b/.github/workflows/build-test.yaml @@ -22,6 +22,31 @@ jobs: run: make test integration-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.21 + + - name: Build + run: make build + + - name: Create k8s Kind Cluster + uses: helm/kind-action@v1.8.0 + + - name: Create Testdata in Cluster + run: ./testing/init.sh + + - name: Run PVMigrate + run: ./bin/pvmigrate --source-sc int-source --dest-sc int-dest + + - name: Validate Cluster End State + run: ./testing/validate.sh + + integration-test-incluster: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 397c5b7..0da12b6 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -45,11 +45,41 @@ jobs: - name: Validate Cluster End State run: ./testing/validate.sh + integration-test-incluster: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.21 + + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + file: testing/Dockerfile + tags: ttl.sh/build-test/pvmigrate:latest + + - name: Create k8s Kind Cluster + uses: helm/kind-action@v1.8.0 + + - name: Create Testdata in Cluster + run: ./testing/init.sh + + - name: Run PVMigrate + run: kubectl apply -f testing/yaml/migrate-job.yaml + + - name: Validate Cluster End State + run: ./testing/validate.sh + goreleaser: runs-on: ubuntu-latest needs: - unit-test - integration-test + - integration-test-incluster if: startsWith(github.ref, 'refs/tags/v') steps: - name: Checkout diff --git a/testing/validate.sh b/testing/validate.sh index c4a23c3..4dce243 100755 --- a/testing/validate.sh +++ b/testing/validate.sh @@ -93,10 +93,15 @@ function spinner_until() { done } -kubectl get pods -echo "waiting for the pvmigrate job to complete" -spinner_until 240 job_completed default pvmigrate -kubectl get pods +# if the pvmigrate job exists, wait for it to complete +if kubectl get job -n default pvmigrate; then + kubectl get pods + echo "waiting for the pvmigrate job to complete" + spinner_until 240 job_completed default pvmigrate + kubectl get pods +else + echo "no pvmigrate job found, assuming it was run outside of the cluster" +fi kubectl get statefulsets kubectl get deployments