Skip to content

Commit

Permalink
test: label checks
Browse files Browse the repository at this point in the history
  • Loading branch information
shreddedbacon committed Mar 6, 2025
1 parent eb3cb16 commit 1a93974
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 28 deletions.
26 changes: 22 additions & 4 deletions .github/workflows/lint-test-matrix.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ jobs:
# default.ct.yaml
lint-test:
runs-on: ubuntu-latest
needs: get-labels
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -38,6 +39,22 @@ jobs:
echo "$changed"
fi
- name: Get labels
id: init
run: |
NEEDS_TESTING="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="needs-testing")')"
NEXT_RELEASE="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="next-release")')"
echo "$NEEDS_TESTING"
echo "$NEXT_RELEASE"
echo "needsTesting=$NEEDS_TESTING" >> $GITHUB_OUTPUT
echo "nextRelease=$NEXT_RELEASE" >> $GITHUB_OUTPUT
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}

- name: Run chart-testing (lint)
run: ct lint --config ./default.ct.yaml

Expand All @@ -48,19 +65,20 @@ jobs:
node_image: kindest/node:${{ matrix.kindest_node_version }}
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
- name: Run chart-testing (install changed only)
run: |
ct install --config ./default.ct.yaml --helm-extra-args "--timeout 30m"
if: ${{ !contains(github.event.pull_request.labels.*.name, 'next-release') && !contains(github.event.pull_request.labels.*.name, 'needs-testing') }}
if: ${{ !steps.list-changed.outputs.nextRelease == 'next-release' && !steps.list-changed.outputs.needsTesting == 'needs-testing' }}

- name: Run chart-testing (install changed next-release only)
run: |
yq eval-all --inplace 'select(fileIndex == 0) * select(fileIndex == 1)' ./charts/lagoon-core/ci/linter-values.yaml ./charts/lagoon-core/ci/testlagoon-main-override.yaml
ct install --config ./default.ct.yaml --helm-extra-args "--timeout 30m"
if: ${{ contains(github.event.pull_request.labels.*.name, 'next-release') }}
if: ${{ steps.list-changed.outputs.nextRelease == 'next-release' }}

- name: Run chart-testing (install all charts when required)
run: ct install --config ./default.ct.yaml --helm-extra-args "--timeout 30m" --all
if: ${{ contains(github.event.pull_request.labels.*.name, 'next-release') || contains(github.event.pull_request.labels.*.name, 'needs-testing') }}
if: ${{ steps.list-changed.outputs.nextRelease == 'next-release' || steps.list-changed.outputs.needsTesting == 'needs-testing' }}
28 changes: 23 additions & 5 deletions .github/workflows/lint-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on: pull_request
jobs:
yamllint:
runs-on: ubuntu-latest
needs: get-labels
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
Expand Down Expand Up @@ -71,6 +72,22 @@ jobs:
echo "$changed"
fi
- name: Get labels
id: init
run: |
NEEDS_TESTING="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="needs-testing")')"
NEXT_RELEASE="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="next-release")')"
echo "$NEEDS_TESTING"
echo "$NEXT_RELEASE"
echo "needsTesting=$NEEDS_TESTING" >> $GITHUB_OUTPUT
echo "nextRelease=$NEXT_RELEASE" >> $GITHUB_OUTPUT
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}

- name: Run chart-testing (lint)
run: ct lint --config ./default.ct.yaml

Expand All @@ -82,27 +99,28 @@ jobs:
kubectl_version: v1.30.4
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
- name: Run chart-testing (install changed only)
run: |
ct install --config ./default.ct.yaml --helm-extra-args "--timeout 30m"
if: ${{ !contains(github.event.pull_request.labels.*.name, 'next-release') && !contains(github.event.pull_request.labels.*.name, 'needs-testing') }}
if: ${{ !steps.list-changed.outputs.nextRelease == 'next-release' && !steps.list-changed.outputs.needsTesting == 'needs-testing' }}

- name: Run chart-testing (install changed next-release only)
run: |
yq eval-all --inplace 'select(fileIndex == 0) * select(fileIndex == 1)' ./charts/lagoon-core/ci/linter-values.yaml ./charts/lagoon-core/ci/testlagoon-main-override.yaml
ct install --config ./default.ct.yaml --helm-extra-args "--timeout 30m"
if: ${{ contains(github.event.pull_request.labels.*.name, 'next-release') }}
if: ${{ steps.list-changed.outputs.nextRelease == 'next-release' }}

# - name: Run chart-testing (upgrade changed next-release only)
# run: |
# ct install --upgrade --config ./default.ct.yaml --helm-extra-args "--timeout 30m"
# if: ${{ contains(github.event.pull_request.labels.*.name, 'next-release') }}
# if: ${{ steps.list-changed.outputs.nextRelease == 'next-release') }}

- name: Run chart-testing (install all charts when required)
run: ct install --config ./default.ct.yaml --helm-extra-args "--timeout 30m" --all
if: ${{ contains(github.event.pull_request.labels.*.name, 'next-release') || contains(github.event.pull_request.labels.*.name, 'needs-testing') }}
if: ${{ steps.list-changed.outputs.nextRelease == 'next-release' || steps.list-changed.outputs.needsTesting == 'needs-testing' }}

linter-artifacthub:
runs-on: ubuntu-latest
Expand Down
75 changes: 56 additions & 19 deletions .github/workflows/test-suite.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,32 @@ name: Lagoon tests
on: pull_request

jobs:
get-labels:
runs-on: ubuntu-latest
outputs:
needsTesting: ${{ steps.init.outputs.needsTesting }}
nextRelease: ${{ steps.init.outputs.nextRelease }}
steps:
- name: Get labels
id: init
run: |
NEEDS_TESTING="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="needs-testing")')"
NEXT_RELEASE="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="next-release")')"
echo "$NEEDS_TESTING"
echo "$NEXT_RELEASE"
echo "needsTesting=$NEEDS_TESTING" >> $GITHUB_OUTPUT
echo "nextRelease=$NEXT_RELEASE" >> $GITHUB_OUTPUT
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}

# runs for lagoon-core, lagoon-remote, lagoon-test
test-suite:
runs-on: ubuntu-latest
needs: get-labels
strategy:
fail-fast: false
matrix:
Expand All @@ -31,7 +54,6 @@ jobs:
## - python
## - ssh-legacy
## - workflows

steps:
# Continue after getting a shell via: `touch continue`
- name: Setup tmate session
Expand Down Expand Up @@ -59,11 +81,27 @@ jobs:
echo "$changed"
fi
- name: Get labels
id: init
run: |
NEEDS_TESTING="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="needs-testing")')"
NEXT_RELEASE="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name | select(.=="next-release")')"
echo "$NEEDS_TESTING"
echo "$NEXT_RELEASE"
echo "needsTesting=$NEEDS_TESTING" >> $GITHUB_OUTPUT
echo "nextRelease=$NEXT_RELEASE" >> $GITHUB_OUTPUT
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}

- name: Configure node IP in kind-config.yaml
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing')) ||
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
run: |
docker network create kind
LAGOON_KIND_CIDR_BLOCK=$(docker network inspect kind | jq '. [0].IPAM.Config[0].Subnet' | tr -d '"')
Expand All @@ -74,8 +112,8 @@ jobs:
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing')) ||
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
with:
version: v0.24.0
node_image: kindest/node:v1.30.4@sha256:976ea815844d5fa93be213437e3ff5754cd599b040946b5cca43ca45c2047114
Expand All @@ -85,8 +123,8 @@ jobs:
- name: Check node IP matches kind configuration
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing')) ||
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
run: |
LAGOON_KIND_CIDR_BLOCK=$(docker network inspect kind | jq '. [0].IPAM.Config[0].Subnet' | tr -d '"')
NODE_IP=$(echo ${LAGOON_KIND_CIDR_BLOCK%???} | awk -F'.' '{print $1,$2,$3,240}' OFS='.')
Expand All @@ -96,8 +134,8 @@ jobs:
- name: Add dependency chart repos
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing')) ||
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
run: |
helm repo add harbor https://helm.goharbor.io
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Expand All @@ -113,8 +151,8 @@ jobs:
- name: Install gojq
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing')) ||
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
run: |
cd /tmp
curl -sSLO https://github.com/itchyny/gojq/releases/download/v0.12.16/gojq_v0.12.16_linux_amd64.tar.gz
Expand All @@ -131,16 +169,15 @@ jobs:
- name: Helm-install the test fixtures and fill lagoon-test/ci/linter-values.yaml (needs-testing)
if: |
(steps.list-changed.outputs.changed == 'true' && !contains(github.event.pull_request.labels.*.name, 'next-release')) ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing'))
(steps.list-changed.outputs.changed == 'true' && !steps.list-changed.outputs.nextRelease == 'next-release') ||
(steps.list-changed.outputs.needsTesting == 'needs-testing')
run: |
make install-lagoon
make -j8 -O fill-test-ci-values TESTS=[${{ matrix.test }}]
- name: Helm-install the test fixtures and fill lagoon-test/ci/linter-values.yaml (next-release)
if: |
(steps.list-changed.outputs.changed == 'true') &&
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.nextRelease == 'next-release')
run: |
yq eval-all --inplace 'select(fileIndex == 0) * select(fileIndex == 1)' ./charts/lagoon-core/ci/linter-values.yaml ./charts/lagoon-core/ci/testlagoon-main-override.yaml
make install-lagoon IMAGE_REGISTRY=testlagoon IMAGE_TAG=main OVERRIDE_BUILD_DEPLOY_DIND_IMAGE=uselagoon/build-deploy-image:main OVERRIDE_ACTIVE_STANDBY_TASK_IMAGE=testlagoon/task-activestandby:main
Expand All @@ -149,15 +186,15 @@ jobs:
- name: Free up some disk space
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing')) ||
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
run: docker system prune -f -a --volumes

- name: Run chart-testing (install) on lagoon-test
if: |
(steps.list-changed.outputs.changed == 'true') ||
(contains(github.event.pull_request.labels.*.name, 'needs-testing')) ||
(contains(github.event.pull_request.labels.*.name, 'next-release'))
(steps.list-changed.outputs.needsTesting == 'needs-testing') ||
(steps.list-changed.outputs.nextRelease == 'next-release')
run: |
ct lint --config ./test-suite-run.ct.yaml
ct install --config ./test-suite-run.ct.yaml --helm-extra-args "--timeout 60m"
Expand Down

0 comments on commit 1a93974

Please sign in to comment.