upgrade to typescript 5 #239
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Minikube Integration Tests - canary pod | |
on: | |
pull_request: | |
branches: | |
- main | |
- 'releases/*' | |
push: | |
branches: | |
- main | |
- 'releases/*' | |
workflow_dispatch: | |
jobs: | |
run-integration-test: | |
name: Run Minikube Integration Tests | |
runs-on: ubuntu-latest | |
env: | |
KUBECONFIG: /home/runner/.kube/config | |
NAMESPACE: test-${{ github.run_id }} | |
steps: | |
- uses: actions/checkout@v3 | |
- 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@v3 | |
name: Install Kubectl | |
- id: setup-minikube | |
name: Setup Minikube | |
uses: medyagh/setup-minikube@latest | |
with: | |
minikube-version: 1.24.0 | |
kubernetes-version: 1.22.3 | |
driver: 'none' | |
timeout-minutes: 3 | |
- name: Create namespace to run tests | |
run: kubectl create ns ${{ env.NAMESPACE }} | |
- uses: actions/setup-python@v2 | |
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 }} | |
python test/integration/k8s-deploy-delete.py 'Deployment' 'all' ${{ env.NAMESPACE }} | |
python test/integration/k8s-deploy-delete.py 'Ingress' 'all' ${{ env.NAMESPACE }} | |
- name: Executing deploy action for pod | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/test.yml | |
strategy: canary | |
percentage: 50 | |
traffic-split-method: pod | |
action: deploy | |
- name: Checking if deployments and services were created with canary labels and original tag | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment-canary containerName=nginx:1.14.2 labels=workflow/version:canary,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx,workflow/version:canary | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
- name: Executing promote action for pod | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/test.yml | |
strategy: canary | |
percentage: 50 | |
traffic-split-method: pod | |
action: promote | |
# another good place for anti-test - ensure old deps are deleted after promote | |
- name: Checking if deployments and services were created with stable labels after first promote | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment containerName=nginx:1.14.2 labels=app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
- name: Executing second deploy action for pod with new tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:latest | |
manifests: | | |
test/integration/manifests/test.yml | |
strategy: canary | |
percentage: 50 | |
traffic-split-method: pod | |
action: deploy | |
- name: Checking if deployments (with new tag) and services were created with canary labels after deploy, and old deployment persists | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment containerName=nginx:1.14.2 labels=app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment-canary containerName=nginx:latest labels=workflow/version:canary,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx,workflow/version:canary | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
- name: Executing second promote action for pod now using new image tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:latest | |
manifests: | | |
test/integration/manifests/test.yml | |
strategy: canary | |
percentage: 50 | |
traffic-split-method: pod | |
action: promote | |
- name: Checking if deployments and services were created with stable labels after promote for new tag, ts is stable | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment containerName=nginx:latest labels=app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
- name: Executing deploy action for pod to be rejected using old tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/test.yml | |
strategy: canary | |
percentage: 50 | |
traffic-split-method: pod | |
action: deploy | |
- name: Checking if new deployments (with old tag) and services were created with canary and baseline labels after deploy, and stable deployment (with latest tag) persists | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment-canary containerName=nginx:1.14.2 labels=workflow/version:canary,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx,workflow/version:canary | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment containerName=nginx:latest labels=app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
- name: Executing reject action for pod to reject new deployment with 1.14.2 tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/test.yml | |
strategy: canary | |
percentage: 50 | |
traffic-split-method: pod | |
action: reject | |
# MAY BE USEFUL TO ADD AN ANTI-CHECK - CHECK TO MAKE SURE CERTAIN OBJECTS DON'T EXIST | |
- name: Checking if deployments and services were created with stable labels and latest tag after reject | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment containerName=nginx:latest labels=app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_canary_pod selectorLabels=app:nginx | |
- name: Cleaning up current set up | |
run: | | |
python test/integration/k8s-deploy-delete.py 'Service' 'nginx-service' ${{ env.NAMESPACE }} | |
python test/integration/k8s-deploy-delete.py 'Deployment' 'nginx-deployment' ${{ env.NAMESPACE }} | |
- if: ${{ always() }} | |
name: Delete created namespace | |
run: kubectl delete ns ${{ env.NAMESPACE }} |