Supporting Multiple Files With the Same Name #250
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 ingress | |
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.31.2 | |
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' 'nginx-service' ${{ env.NAMESPACE }} | |
python test/integration/k8s-deploy-delete.py 'Service' 'nginx-service-green' ${{ env.NAMESPACE }} | |
python test/integration/k8s-deploy-delete.py 'Deployment' 'nginx-deployment-green' ${{ env.NAMESPACE }} | |
python test/integration/k8s-deploy-delete.py 'Deployment' 'nginx-deployment' ${{ env.NAMESPACE }} | |
python test/integration/k8s-deploy-delete.py 'Ingress' 'nginx-ingress' ${{ env.NAMESPACE }} | |
- name: Executing deploy action for ingress | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/blue-green/test-ingress.yml | |
strategy: blue-green | |
route-method: ingress | |
action: deploy | |
- name: Checking if deployments, services and ingresses 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_ingress selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-green labels=k8s.deploy.color:green,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Ingress name=nginx-ingress ingressServices=nginx-service-green,unrouted-service | |
- name: Executing promote action for ingress | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/blue-green/test-ingress.yml | |
strategy: blue-green | |
route-method: ingress | |
action: promote | |
- name: Checking if deployments, services and ingresses 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_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=k8s.deploy.color:None,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Ingress name=nginx-ingress ingressServices=nginx-service,unrouted-service | |
- name: Executing second deploy action for ingress with new tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:latest | |
manifests: | | |
test/integration/manifests/blue-green/test-ingress.yml | |
strategy: blue-green | |
route-method: ingress | |
action: deploy | |
- name: Checking if deployments (with new tag), services and ingresses 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-green containerName=nginx:latest labels=k8s.deploy.color:green,app:nginx,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:green | |
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_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-green labels=k8s.deploy.color:green,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=k8s.deploy.color:None,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Ingress name=nginx-ingress ingressServices=nginx-service-green,unrouted-service | |
- name: Executing second promote action for ingress now using new image tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:latest | |
manifests: | | |
test/integration/manifests/blue-green/test-ingress.yml | |
strategy: blue-green | |
route-method: ingress | |
action: promote | |
- name: Checking if deployments, services and ingresses were created with none labels after promote for new tag | |
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_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=k8s.deploy.color:None,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Ingress name=nginx-ingress ingressServices=nginx-service,unrouted-service | |
- name: Executing deploy action for ingress to be rejected using old tag | |
uses: ./ | |
with: | |
namespace: ${{ env.NAMESPACE }} | |
images: nginx:1.14.2 | |
manifests: | | |
test/integration/manifests/blue-green/test-ingress.yml | |
strategy: blue-green | |
route-method: ingress | |
action: deploy | |
- name: Checking if new deployments (with old tag), services and ingresses 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_ingress 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_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service-green labels=k8s.deploy.color:green,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:green | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=k8s.deploy.color:None,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Ingress name=nginx-ingress ingressServices=nginx-service-green,unrouted-service | |
- name: Executing reject action for ingress 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-ingress.yml | |
strategy: blue-green | |
route-method: ingress | |
action: reject | |
# MAY BE USEFUL TO ADD AN ANTI-CHECK - CHECK TO MAKE SURE CERTAIN OBJECTS DON'T EXIST | |
- name: Checking if deployments, services and ingresses 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_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Service name=nginx-service labels=k8s.deploy.color:None,workflow:actions.github.com-k8s-deploy,workflowFriendlyName:Minikube_Integration_Tests_-_blue-green_ingress selectorLabels=app:nginx,k8s.deploy.color:None | |
python test/integration/k8s-deploy-test.py namespace=${{ env.NAMESPACE }} kind=Ingress name=nginx-ingress ingressServices=nginx-service,unrouted-service | |
- 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 }} |