Skip to content

[TH2-4947] It is not possible to specify multiple ports for a CR #2590

[TH2-4947] It is not possible to specify multiple ports for a CR

[TH2-4947] It is not possible to specify multiple ports for a CR #2590

Workflow file for this run

name: e2e test Kubernetes
on:
pull_request:
paths:
- "ci/**"
- "example-values/**"
- "chart/**"
- "box-chart/**"
- ".github/workflows/**"
- "docs/**"
workflow_dispatch:
inputs:
infraNamespace:
description: "Infra namespace"
default: "service"
type: string
schemaNamespace:
description: "Schema namespace"
default: "th2-schema"
type: string
env:
INFRA_NAMESPACE: "${{ github.event.inputs.infraNamespace || 'service' }}"
MONITORING_NAMESPACE: monitoring
SCHEMA_NAMESPACE: "${{ github.event.inputs.schemaNamespace || 'th2-schema' }}"
REPOSITORY_URL: "${{ github.event.pull_request.base.repo.clone_url }}"
REPOSITORY_REF_NAME: "${{ github.event.pull_request.head.ref }}"
LOKI_USERNAME: "${{ secrets.LOKI_USERNAME }}"
LOKI_PASSWORD: "${{ secrets.LOKI_PASSWORD }}"
pull_request: "${{ github.event.pull_request.number }}"
commit_hash: "${{ github.event.pull_request.head.sha }}"
jobs:
deploy-and-test:
strategy:
matrix:
k8s-version:
- kindest/node:v1.22.17@sha256:9af784f45a584f6b28bce2af84c494d947a05bd709151466489008f80a9ce9d5
- kindest/node:v1.25.3@sha256:f52781bc0d7a19fb6c405c2af83abfeb311f130707a0e219175677e366cc45d1
- kindest/node:v1.26.0@sha256:691e24bd2417609db7e589e1a479b902d2e209892a10ce375fab60a8407c7352
max-parallel: 3
fail-fast: false
name: ${{ github.job }}
if: |
!contains(github.event.pull_request.labels, 'automated')
runs-on: ubuntu-latest
steps:
- name: Go cache dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- uses: actions/checkout@v3
- name: Create k8s Kind Cluster
uses: helm/[email protected]
with:
config: ./ci/kind-cluster.yaml
node_image: ${{ matrix.k8s-version }}
- name: Copy box-chart into build context
run: |
cp -r ./box-chart ./infra-repo/
- name: set up docker buildx plugin
uses: docker/setup-buildx-action@v2
- name: Read infra-repo version
id: chart
uses: actions-tools/yaml-outputs@v2
with:
file-path: "./chart/values.yaml"
- name: Build infra-repo image
id: build
uses: docker/build-push-action@v4
with:
file: ./infra-repo/Dockerfile
context: ./infra-repo/
push: false
load: true
tags: ghcr.io/th2-net/infra-repo:e2e
cache-from: type=registry,ref=ghcr.io/th2-net/infra-repo:${{ steps.chart.outputs.infraRepo__image__tag }}
- name: Init test schema
run: |
mkdir ./e2e-test-schema.git/
git config --global user.email "ci@actions"
git config --global user.name "CI"
git --git-dir=./e2e-test-schema.git/ --bare init
git --git-dir=./e2e-test-schema.git/ --work-tree=./ci/e2e-test-schema/ add .
git --git-dir=./e2e-test-schema.git/ --work-tree=./ci/e2e-test-schema/ commit -m "Init repo"
git --git-dir=./e2e-test-schema.git/ --work-tree=./ci/e2e-test-schema/ branch schema
docker exec chart-testing-control-plane mkdir -p /opt/git/ /opt/jupiter_users /opt/jupiter_db
docker cp ./e2e-test-schema.git/ chart-testing-control-plane:/opt/git/
kind load docker-image --name chart-testing ghcr.io/th2-net/infra-repo:e2e
- name: Install python and ansible dependencies
run: |
ansible-galaxy collection install community.crypto:==1.3.0 community.kubernetes:==1.1.1
pip install kubernetes==12.0.0
- name: Run th2-infra deployment via Ansible
run: |
kubectl -n kube-system scale deployment coredns --replicas 1
ANSIBLE_STDOUT_CALLBACK=yaml ansible-playbook ./ci/e2e-via-ssh-deployment-playbook.yaml -e 'ansible_python_interpreter=/usr/bin/python3'
kubectl -n $INFRA_NAMESPACE patch deployments.apps infra-mgr -p '{"spec":{"template":{"spec":{"initContainers":[{"name":"init-myservice","image":"busybox:1.30.1","command":["sh","-c","until nc -vz infra-git 22; do echo \"Waiting for infra-git service\"; sleep 2; done;"]}]}}}}'
kubectl -n $INFRA_NAMESPACE patch deployments.apps infra-operator -p '{"spec":{"template":{"spec":{"initContainers":[{"name":"init-myservice","image":"busybox:1.30.1","command":["sh","-c","until nc -vz rabbitmq 5672; do echo \"Waiting for rabbitmq service\"; sleep 2; done;"]}]}}}}'
kubectl get pods --all-namespaces
- name: Sleep for 5 minutes
run: sleep 5m
shell: bash
- name: Testing
run: |
cd ./ci
go test -failfast th2_infra_test.go
- name: Getting logs
if: always()
run: |
echo -e "\n\033[0;31m[Pods]\033[0m" && kubectl get pods -o wide --all-namespaces || true
echo -e "\n\033[0;31m[Services]\033[0m" && kubectl get svc --all-namespaces || true
echo -e "\n\033[0;31m[Ingresses]\033[0m" && kubectl describe ingress --all-namespaces || true
echo -e "\n\033[0;31m[HelmReleases]\033[0m" && kubectl get hr --all-namespaces || true
echo -e "\n\033[0;31m[Nodes]\033[0m" && kubectl describe nodes || true
echo -e "\n\033[0;31m[Configmaps]\033[0m" && kubectl get configmaps --all-namespaces || true
echo -e "\n\033[0;31m[Secrets]\033[0m" && kubectl get secrets --all-namespaces || true
echo -e "\n\033[0;31m[Events]\033[0m" && kubectl get events --all-namespaces --sort-by='.metadata.creationTimestamp' || true
echo -e "\n\033[0;31m[PV]\033[0m" && kubectl get pv || true
for D in $(kubectl -n $INFRA_NAMESPACE get deployments --no-headers -o custom-columns=":metadata.name")
do
kubectl -n $INFRA_NAMESPACE logs deployment/$D --all-containers --timestamps > $D.log || true
done
kubectl -n $INFRA_NAMESPACE logs rabbitmq-0 > rabbitmq.log || true
kubectl -n $INFRA_NAMESPACE logs cassandra-0 > cassandra.log || true
kubectl -n $INFRA_NAMESPACE exec cassandra-0 -- cat /opt/bitnami/cassandra/logs/cassandra.log > cassandra-container.log || true
kubectl -n $INFRA_NAMESPACE logs daemonsets/grafana-agent-logs --all-containers --timestamps > grafana-agent-logs.log || true
for D in $(kubectl -n $SCHEMA_NAMESPACE get deployments --no-headers -o custom-columns=":metadata.name")
do
kubectl -n $SCHEMA_NAMESPACE logs deployment/$D --timestamps > $D.log || true
done
echo -e "Grafana link: https://th2.grafana.net/explore?orgId=1&left=%7B%22datasource%22:%22grafanacloud-th2-logs%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22expr%22:%22%7Brun%3D%5C%22"$pull_request":"$commit_hash"%5C%22%7D%22%7D%5D,%22range%22:%7B%22from%22:%22now-30d%22,%22to%22:%22now%22%7D%7D" >> $GITHUB_STEP_SUMMARY || true
- name: Uploading logs
if: always()
uses: actions/upload-artifact@v3
with:
name: infra-logs-${{ strategy.job-index }}
path: "*.log"