Skip to content

ci: 🚧 command rollout and print debug #53

ci: 🚧 command rollout and print debug

ci: 🚧 command rollout and print debug #53

Workflow file for this run

name: Test on kubernetes
on:
# only work when code is on main branch
workflow_dispatch:
push:
branches:
- 'enh/kube'
jobs:
test-app-k8s:
runs-on: ubuntu-latest
steps:
- name: Start minikube
uses: medyagh/setup-minikube@latest
with:
addons: registry,ingress
#- name: Create k8s Kind Cluster
# uses: helm/[email protected]
# with:
# cluster_name: basegun-testing
# wait: 60s
# verbosity: 2
- name: Set up Helm
uses: azure/setup-helm@v3
with:
version: v3.11.2
#- name: Set up ingress controller
# run: |
# cat << EOF > values.yml
# deployment:
# kind: DaemonSet
# ingressClass:
# enabled: true
# isDefaultClass: true
# ports:
# web:
# hostPort: 80
# websecure:
# hostPort: 443
# service:
# type: ClusterIP
# EOF
# helm repo add traefik https://traefik.github.io/charts && helm repo update
# helm install --namespace ingress-traefik --create-namespace traefik traefik/traefik -f values.yml
# kubectl --namespace ingress-traefik rollout status daemonset traefik --timeout=90s
- name: Add hosts to /etc/hosts
run: |
sudo echo "127.0.0.1 basegun.kubernetes.local" | sudo tee -a /etc/hosts
# we are forced to attribute a DNS to kube cluster for it to work properly
- name: Checkout to code
uses: actions/checkout@v2
- name: Build and install basegun with helm, and test if deployment is successful
id: tests
env:
OS_USERNAME: ${{ secrets.OS_USERNAME }}
OS_PASSWORD: ${{ secrets.OS_PASSWORD }}
OS_PROJECT_ID: ${{ secrets.OS_PROJECT_ID }}
OS_PROJECT_NAME: ${{ secrets.OS_PROJECT_NAME }}
run: |
# use docker env
export SHELL=/bin/bash
eval $(minikube -p minikube docker-env)
TAG=$(make get-current-tag) BUILD_TARGET=test docker-compose -f docker-compose-prod.yml build backend
TAG=$(make get-current-tag) docker-compose -f docker-compose-prod.yml build frontend
helm upgrade --install basegun ./infra/kube/helm/ \
--set ingress.hosts[0].host="basegun.kubernetes.local" \
--set ingress.hosts[0].paths[0].path="/" \
--set ingress.hosts[0].paths[0].pathType="Prefix" \
--set backend.image.repository="basegun-backend" \
--set backend.image.tag="$(make get-current-tag)-prod" \
--set frontend.image.repository="basegun-frontend" \
--set frontend.image.tag="$(make get-current-tag)-prod" \
--set backend.secret.create="true" \
--set backend.secret.values.OS_USERNAME="test1" \
--set backend.secret.values.OS_PASSWORD="test2" \
--set backend.secret.values.OS_PROJECT_NAME="test3" \
--set backend.secret.values.OS_PROJECT_ID="test4" \
--set backend.secret.values.X_OVH_TOKEN="test5" \
--set backend.secret.values.API_OVH_TOKEN="test6"
# for i in $(kubectl get deploy -o name); do kubectl rollout status $i -w --timeout=130s; done
sleep 60
printf "\n$(kubectl get pod)\n"
BACKEND_POD="$(kubectl get pod | grep 'backend' | awk '{print $1}')"
printf "\n$(kubectl get pod/$BACKEND_POD -o yaml)"
printf "\n$(kubectl describe pod/$BACKEND_POD)"
- name: Display pod logs on failure
if: failure() && steps.tests.outcome == 'failure'
run: |
kubectl describe pods
kubectl logs deploy/basegun-backend --all-containers --ignore-errors
kubectl logs deploy/basegun-frontend --all-containers --ignore-errors
- name: Test unitests on backend
run : |
kubectl exec deploy/basegun-backend -c basegun-backend -- python -m unittest discover -v
- name: Test frontend is alive
run: |
[[ "$(curl -L -s basegun.kubernetes.local/api/version)" == $(make get-current-tag) ]] || exit 1