bump release workflow sha #191
Workflow file for this run
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 - blue-green SMI | |
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: Install linkerd and add controlplane to cluster | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh | |
curl -sL https://linkerd.github.io/linkerd-smi/install | sh | |
export PATH=$PATH:/home/runner/.linkerd2/bin | |
linkerd install --crds | kubectl apply -f - | |
linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f - | |
linkerd smi install | kubectl apply -f - | |
- 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 }} | |
python test/integration/k8s-deploy-delete.py 'TrafficSplit' 'all' ${{ env.NAMESPACE }} | |
- name: Executing deploy action for smi | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/blue-green/test-service.yml | |
strategy: blue-green | |
route-method: smi | |
action: deploy | |
- name: Checking if deployments, services, and ts objects were created with green labels and original tag | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment-green containerName=nginx:1.14.2 labels=k8s.deploy.color:green,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:green | |
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_-_blue-green_SMI selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-stable labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:None selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-green labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:green selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=TrafficSplit name=nginx-service-trafficsplit tsServices=nginx-service-stable:0,nginx-service-green:100 | |
- name: Executing promote action for smi | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/blue-green/test-service.yml | |
strategy: blue-green | |
route-method: smi | |
action: promote | |
# another good place for anti-test - ensure old deps are deleted after promote | |
- name: Checking if deployments, services, and ts objects were created with none 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=k8s.deploy.color:None,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:None | |
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_-_blue-green_SMI selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-stable labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:None selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=TrafficSplit name=nginx-service-trafficsplit tsServices=nginx-service-stable:100,nginx-service-green:0 | |
- name: Executing second deploy action for smi with new tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:latest | |
manifests: | | |
test/integration/manifests/blue-green/test-service.yml | |
strategy: blue-green | |
route-method: smi | |
action: deploy | |
- name: Checking if deployments (with new tag) and services were created with green 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=k8s.deploy.color:None,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment-green containerName=nginx:latest labels=k8s.deploy.color:green,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:green | |
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_-_blue-green_SMI selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-stable labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:None selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-green labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:green selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=TrafficSplit name=nginx-service-trafficsplit tsServices=nginx-service-stable:0,nginx-service-green:100 | |
- name: Executing second promote action for smi now using new image tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:latest | |
manifests: | | |
test/integration/manifests/blue-green/test-service.yml | |
strategy: blue-green | |
route-method: smi | |
action: promote | |
- name: Checking if deployments and services were created with none 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=k8s.deploy.color:None,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:None | |
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_-_blue-green_SMI selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-stable labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:None selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=TrafficSplit name=nginx-service-trafficsplit tsServices=nginx-service-stable:100,nginx-service-green:0 | |
- name: Executing deploy action for smi to be rejected using old tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/blue-green/test-service.yml | |
strategy: blue-green | |
route-method: smi | |
action: deploy | |
- name: Checking if new deployments (with old tag) and services were created with green labels after deploy, and old deployment (with latest tag) persists | |
run: | | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment-green containerName=nginx:1.14.2 labels=k8s.deploy.color:green,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Deployment name=nginx-deployment containerName=nginx:latest labels=k8s.deploy.color:None,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:None | |
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_-_blue-green_SMI selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-stable labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:None selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-green labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:green selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=TrafficSplit name=nginx-service-trafficsplit tsServices=nginx-service-stable:0,nginx-service-green:100 | |
- name: Executing reject action for smi to reject new deployment with 1.14.2 tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/blue-green/test-service.yml | |
strategy: blue-green | |
route-method: smi | |
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 none 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=k8s.deploy.color:None,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI selectorLabels=app:nginx,k8s.deploy.color:None | |
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_-_blue-green_SMI selectorLabels=app:nginx | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-stable labels=workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_SMI,k8s.deploy.color:None selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=TrafficSplit name=nginx-service-trafficsplit tsServices=nginx-service-stable:100,nginx-service-green:0 | |
- 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 }} |