diff --git a/.github/actions/minikube-setup/action.yml b/.github/actions/minikube-setup/action.yml new file mode 100644 index 000000000..38dd25156 --- /dev/null +++ b/.github/actions/minikube-setup/action.yml @@ -0,0 +1,57 @@ +name: 'Setup Minikube Test Environment' +description: 'Common setup steps for minikube integration tests' +inputs: + install-smi: + description: 'Install Linkerd SMI for service mesh tests' + required: false + default: 'false' + +runs: + using: 'composite' + steps: + - name: Install dependencies + shell: bash + run: | + rm -rf node_modules/ + npm install + + - name: Install ncc + shell: bash + run: npm i -g @vercel/ncc + + - name: Install conntrack + shell: bash + run: sudo apt-get install -y conntrack + + - name: Build + shell: bash + run: ncc build src/run.ts -o lib + + - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 + name: Install Kubectl + + - id: setup-minikube + name: Setup Minikube + uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 + with: + minikube-version: 1.37.0 + kubernetes-version: 1.31.0 + driver: 'docker' + + - name: Install Linkerd and SMI + if: inputs.install-smi == 'true' + shell: bash + run: | + curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh + export PATH=$PATH:/home/runner/.linkerd2/bin + curl -sL https://linkerd.github.io/linkerd-smi/install | sh + kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml + + linkerd install --crds | kubectl apply -f - + linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f - + linkerd smi install | kubectl apply -f - + + - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 + name: Install Python + with: + python-version: '3.x' diff --git a/.github/workflows/run-integration-tests-basic.yml b/.github/workflows/run-integration-tests-basic.yml index c33bd5849..34bbb8322 100644 --- a/.github/workflows/run-integration-tests-basic.yml +++ b/.github/workflows/run-integration-tests-basic.yml @@ -20,37 +20,13 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 - with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 - name: Create namespace to run tests run: kubectl create ns ${{ env.NAMESPACE }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Service' 'all' ${{ env.NAMESPACE }} diff --git a/.github/workflows/run-integration-tests-bluegreen-ingress.yml b/.github/workflows/run-integration-tests-bluegreen-ingress.yml index c97879c0c..4877af264 100644 --- a/.github/workflows/run-integration-tests-bluegreen-ingress.yml +++ b/.github/workflows/run-integration-tests-bluegreen-ingress.yml @@ -12,7 +12,7 @@ on: jobs: run-integration-test: - name: Run Minikube Integration Tests + name: Blue-Green Ingress Tests runs-on: ubuntu-22.04 env: KUBECONFIG: /home/runner/.kube/config @@ -20,37 +20,13 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 - with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 - name: Create namespace to run tests run: kubectl create ns ${{ env.NAMESPACE }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Service' 'nginx-service' ${{ env.NAMESPACE }} diff --git a/.github/workflows/run-integration-tests-bluegreen-service.yml b/.github/workflows/run-integration-tests-bluegreen-service.yml index 14b80cf63..d2967aee7 100644 --- a/.github/workflows/run-integration-tests-bluegreen-service.yml +++ b/.github/workflows/run-integration-tests-bluegreen-service.yml @@ -12,7 +12,7 @@ on: jobs: run-integration-test: - name: Run Minikube Integration Tests + name: Blue-Green Service Tests runs-on: ubuntu-22.04 env: KUBECONFIG: /home/runner/.kube/config @@ -20,37 +20,13 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 - with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 - name: Create namespace to run tests run: kubectl create ns ${{ env.NAMESPACE }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Service' 'all' ${{ env.NAMESPACE }} diff --git a/.github/workflows/run-integration-tests-bluegreen-smi.yml b/.github/workflows/run-integration-tests-bluegreen-smi.yml index a497438eb..f58453fb5 100644 --- a/.github/workflows/run-integration-tests-bluegreen-smi.yml +++ b/.github/workflows/run-integration-tests-bluegreen-smi.yml @@ -12,7 +12,7 @@ on: jobs: run-integration-test: - name: Run Minikube Integration Tests + name: Blue-Green SMI Tests runs-on: ubuntu-22.04 env: KUBECONFIG: /home/runner/.kube/config @@ -20,48 +20,15 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 - - - name: Install linkerd and add controlplane to cluster - run: | - curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh - export PATH=$PATH:/home/runner/.linkerd2/bin - curl -sL https://linkerd.github.io/linkerd-smi/install | sh - kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml - - linkerd install --crds | kubectl apply -f - - linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f - - linkerd smi install | kubectl apply -f - + install-smi: 'true' - name: Create namespace to run tests run: kubectl create ns ${{ env.NAMESPACE }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Service' 'all' ${{ env.NAMESPACE }} diff --git a/.github/workflows/run-integration-tests-canary-pod.yml b/.github/workflows/run-integration-tests-canary-pod.yml index bc2da8a1d..2b882431d 100644 --- a/.github/workflows/run-integration-tests-canary-pod.yml +++ b/.github/workflows/run-integration-tests-canary-pod.yml @@ -12,7 +12,7 @@ on: jobs: run-integration-test: - name: Run Minikube Integration Tests + name: Canary Pod Tests runs-on: ubuntu-22.04 env: KUBECONFIG: /home/runner/.kube/config @@ -20,37 +20,13 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 - with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 - name: Create namespace to run tests run: kubectl create ns ${{ env.NAMESPACE }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Service' 'all' ${{ env.NAMESPACE }} diff --git a/.github/workflows/run-integration-tests-canary-smi.yml b/.github/workflows/run-integration-tests-canary-smi.yml index 3f246da21..3528a2f71 100644 --- a/.github/workflows/run-integration-tests-canary-smi.yml +++ b/.github/workflows/run-integration-tests-canary-smi.yml @@ -12,7 +12,7 @@ on: jobs: run-integration-test: - name: Run Minikube Integration Tests + name: Canary SMI Tests runs-on: ubuntu-22.04 env: KUBECONFIG: /home/runner/.kube/config @@ -20,48 +20,15 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 - - - name: Install Linkerd and SMI - run: | - curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh - export PATH=$PATH:/home/runner/.linkerd2/bin - curl -sL https://linkerd.github.io/linkerd-smi/install | sh - kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml - - linkerd install --crds | kubectl apply -f - - linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f - - linkerd smi install | kubectl apply -f - + install-smi: 'true' - name: Create namespace to run tests run: kubectl create ns ${{ env.NAMESPACE }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Service' 'all' ${{ env.NAMESPACE }} diff --git a/.github/workflows/run-integration-tests-namespace-optional.yml b/.github/workflows/run-integration-tests-namespace-optional.yml index 1e279056e..446b0067a 100644 --- a/.github/workflows/run-integration-tests-namespace-optional.yml +++ b/.github/workflows/run-integration-tests-namespace-optional.yml @@ -14,7 +14,7 @@ on: jobs: run-integration-test: - name: Run Namespace Optional Integration Tests + name: Namespace Optional Tests runs-on: ubuntu-22.04 env: KUBECONFIG: /home/runner/.kube/config @@ -23,28 +23,9 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 - with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 - name: Create namespaces for tests run: | @@ -52,11 +33,6 @@ jobs: kubectl create ns ${{ env.NAMESPACE2 }} kubectl create ns test-namespace - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Deployment' 'all' ${{ env.NAMESPACE1 }} diff --git a/.github/workflows/run-integration-tests-resource-annotation.yml b/.github/workflows/run-integration-tests-resource-annotation.yml index be04fbfb3..7c2dcd2a9 100644 --- a/.github/workflows/run-integration-tests-resource-annotation.yml +++ b/.github/workflows/run-integration-tests-resource-annotation.yml @@ -12,7 +12,7 @@ on: jobs: run-integration-test: - name: Run Minikube Integration Tests + name: Resource Annotation Tests runs-on: ubuntu-22.04 env: KUBECONFIG: /home/runner/.kube/config @@ -20,37 +20,13 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Install dependencies - run: | - rm -rf node_modules/ - npm install - - name: Install ncc - run: npm i -g @vercel/ncc - - name: Install conntrack - run: sudo apt-get install -y conntrack - - name: Build - run: ncc build src/run.ts -o lib - - - uses: Azure/setup-kubectl@776406bce94f63e41d621b960d78ee25c8b76ede # v4.0.1 - name: Install Kubectl - - - id: setup-minikube - name: Setup Minikube - uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21 - with: - minikube-version: 1.34.0 - kubernetes-version: 1.31.0 - driver: 'none' - timeout-minutes: 3 + - uses: ./.github/actions/minikube-setup + name: Setup Minikube Environment + timeout-minutes: 5 - name: Create namespace to run tests run: kubectl create ns ${{ env.NAMESPACE }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0 - name: Install Python - with: - python-version: '3.x' - - name: Cleaning any previously created items run: | python test/integration/k8s-deploy-delete.py 'Service' 'all' ${{ env.NAMESPACE }}