fix: State propagation during module CR deletion (#956) #29
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: TestSuite E2E | |
on: | |
push: | |
branches: [ "main" ] | |
paths: | |
- 'go.mod' | |
- 'go.sum' | |
- 'Makefile' | |
- '**.go' | |
- '**.ya?ml' | |
pull_request: | |
branches: [ "main" ] | |
paths: | |
- 'go.mod' | |
- 'go.sum' | |
- 'Makefile' | |
- '**.sh' | |
- '**.go' | |
- '**.ya?ml' | |
jobs: | |
wait-for-img: | |
name: "Wait for Image Build" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: autotelic/action-wait-for-status-check@v1 | |
id: wait-for-build | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
# Context for which we should look for the matching status | |
statusName: ${{ (github.event_name == 'pull_request') && 'pull-lifecycle-mgr-build' || 'main-lifecycle-mgr-build' }} | |
timeoutSeconds: 900 | |
intervalSeconds: 10 | |
- name: Exit If Failing Build Requirement | |
if: steps.wait-for-build.outputs.state != 'success' | |
run: | | |
echo "Image build did not succeed, skipping E2E Test!" | |
exit 1 | |
e2e-integration: | |
strategy: | |
matrix: | |
e2e-test: ["watcher-enqueue", "kyma-deletion", "module-status-propagation", "kyma-metrics", "module-without-default-cr", "non-blocking-deletion", "purge-controller", "purge-metrics"] | |
name: "E2E" | |
needs: [wait-for-img] | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
env: | |
K3D_VERSION: v5.4.7 | |
ISTIO_VERSION: 1.17.1 | |
CM_VERSION: v1.12.3 | |
KLM_VERSION_TAG: latest | |
KLM_IMAGE_REPO: prod | |
steps: | |
- name: Install prerequisites | |
run: | | |
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg | |
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list | |
sudo apt update -y | |
sudo apt install kubectl -y | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '^1.21' | |
- name: Install Istio CLI | |
run: | | |
curl -L https://istio.io/downloadIstio | TARGET_ARCH=x86_64 sh - | |
chmod +x istio-$ISTIO_VERSION/bin/istioctl | |
mv istio-$ISTIO_VERSION/bin/istioctl /usr/local/bin | |
- name: Install Kyma CLI | |
run: | | |
wget -q https://storage.googleapis.com/kyma-cli-unstable/kyma-linux | |
chmod +x kyma-linux && mv kyma-linux /usr/local/bin/kyma-unstable | |
echo "PATH=/usr/local/bin/kyma-unstable" >> $GITHUB_OUTPUT | |
- run: ln -s /usr/local/bin/kyma-unstable /usr/local/bin/kyma | |
- name: Install Cert Manager Command Line Tool | |
run: | | |
OS=$(go env GOOS); ARCH=$(go env GOARCH); curl -fsSL -o cmctl.tar.gz https://github.com/cert-manager/cert-manager/releases/latest/download/cmctl-$OS-$ARCH.tar.gz | |
tar xzf cmctl.tar.gz | |
sudo mv cmctl /usr/local/bin | |
- name: Install k3d | |
run: wget -qO - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | TAG=$K3D_VERSION bash | |
- name: Provision SKR cluster | |
run: | | |
k3d cluster create skr -p 10080:80@loadbalancer -p 10443:443@loadbalancer --k3s-arg '--disable=traefik@server:0' | |
- name: Provision KCP cluster | |
run: | | |
kyma provision k3d --name=kcp -p 9443:443@loadbalancer -p 9080:80@loadbalancer -p 9081:8080@loadbalancer --ci --registry-port 5111 | |
- name: Update Kubeconfigs | |
run: k3d kubeconfig merge -a -d | |
- name: Export required Kubeconfig Env vars | |
run: | | |
echo "KCP_KUBECONFIG=$(k3d kubeconfig write kcp)" >> $GITHUB_ENV | |
echo "SKR_KUBECONFIG=$(k3d kubeconfig write skr)" >> $GITHUB_ENV | |
- name: Patch /etc/hosts | |
run: | | |
FILE=/etc/hosts | |
if [ -f "$FILE" ]; then | |
sudo echo "127.0.0.1 k3d-kcp-registry" | sudo tee -a $FILE | |
else | |
echo "$FILE does not exist." | |
exit 1 | |
fi | |
echo "/etc/hosts file patched" | |
- name: Switch kubeconfig context to KCP cluster | |
run: kubectl config use-context k3d-kcp | |
- name: Deploy Istio on KCP Cluster | |
run: | | |
istioctl install --set profile=demo -y | |
- name: Deploy Cert Manager on KCP Cluster | |
run: | | |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/$CM_VERSION/cert-manager.yaml | |
cmctl check api --wait=2m | |
- name: Checkout lifecycle-manager | |
uses: actions/checkout@v3 | |
with: | |
path: lifecycle-manager | |
- name: Override Kustomize Controller Image TAG and Image repository environment variables in Pull Request to PR Image | |
if: ${{ github.event_name == 'pull_request' }} | |
run: | | |
echo "KLM_VERSION_TAG=PR-${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
echo "KLM_IMAGE_REPO=dev" >> $GITHUB_ENV | |
- name: Patch purge finalizer flags | |
if: ${{ matrix.e2e-test == 'purge-controller' || matrix.e2e-test == 'purge-metrics'}} | |
working-directory: lifecycle-manager | |
run: | | |
pushd config/watcher_local_test | |
echo \ | |
"- op: add | |
path: /spec/template/spec/containers/0/args/- | |
value: --enable-purge-finalizer=true | |
- op: add | |
path: /spec/template/spec/containers/0/args/- | |
value: --purge-finalizer-timeout=5s" >> purge_finalizer.yaml | |
cat purge_finalizer.yaml | |
kustomize edit add patch --path purge_finalizer.yaml --kind Deployment | |
popd | |
- name: Deploy LM local testing kustomize | |
working-directory: lifecycle-manager | |
run: | | |
maxRetry=5 | |
for retry in $(seq 1 $maxRetry) | |
do | |
if make local-deploy-with-watcher IMG=europe-docker.pkg.dev/kyma-project/$KLM_IMAGE_REPO/lifecycle-manager:$KLM_VERSION_TAG; then | |
echo "KLM deployed successfully" | |
exit 0 | |
elif [[ $retry -lt $maxRetry ]]; then | |
echo "Deploy encountered some error, will retry after 20 seconds" | |
sleep 20 | |
else | |
echo "KLM deployment failed" | |
exit 1 | |
fi | |
done | |
- name: Checkout template-operator | |
uses: actions/checkout@v3 | |
if: ${{ matrix.e2e-test == 'module-status-propagation' || matrix.e2e-test == 'module-without-default-cr' || matrix.e2e-test == 'non-blocking-deletion' || matrix.e2e-test == 'purge-controller' || matrix.e2e-test == 'purge-metrics' }} | |
with: | |
repository: kyma-project/template-operator | |
path: template-operator | |
- name: Create Template Operator Module | |
working-directory: template-operator | |
if: ${{ matrix.e2e-test == 'non-blocking-deletion' || matrix.e2e-test == 'purge-controller' || matrix.e2e-test == 'purge-metrics'}} | |
run: | | |
make build-manifests | |
kyma alpha create module --module-config-file ./module-config.yaml --path . --registry k3d-kcp-registry:5111 --insecure | |
sed -i 's/k3d-kcp-registry:5111/k3d-kcp-registry:5000/g' ./template.yaml | |
kubectl config use-context k3d-kcp | |
kubectl get crds | |
kubectl apply -f template.yaml | |
- name: Create Template Operator Module with final state `Warning` | |
working-directory: template-operator | |
if: ${{ matrix.e2e-test == 'module-status-propagation'}} | |
run: | | |
pushd config/default | |
echo "- op: replace | |
path: /spec/template/spec/containers/0/args/1 | |
value: --final-state=Warning" >> warning_patch.yaml | |
cat warning_patch.yaml | |
kustomize edit add patch --path warning_patch.yaml --kind Deployment | |
popd | |
kyma alpha create module --kubebuilder-project --channel=regular --name kyma.project.io/module/template-operator --version 1.1.1 --path . --registry k3d-kcp-registry:5111 --insecure --module-archive-version-overwrite / | |
sed -i 's/k3d-kcp-registry:5111/k3d-kcp-registry:5000/g' ./template.yaml | |
kubectl config use-context k3d-kcp | |
kubectl get crds | |
kubectl apply -f template.yaml | |
- name: Create Template Operator Module without default CR | |
working-directory: template-operator | |
if: ${{ matrix.e2e-test == 'module-without-default-cr' }} | |
run: | | |
make build-manifests | |
echo "name: kyma-project.io/module/template-operator | |
channel: regular | |
version: v1.0.0 | |
manifest: template-operator.yaml | |
security: sec-scanners-config.yaml | |
annotations: | |
operator.kyma-project.io/doc-url: https://kyma-project.io" >> module-config-no-cr.yaml | |
kyma alpha create module \ | |
--module-config-file ./module-config-no-cr.yaml \ | |
--path . \ | |
--registry k3d-kcp-registry:5111 \ | |
--insecure | |
sed -i 's/k3d-kcp-registry:5111/k3d-kcp-registry:5000/g' ./template.yaml | |
kubectl config use-context k3d-kcp | |
kubectl get crds | |
kubectl apply -f template.yaml | |
- name: Expose Metrics Endpoint | |
working-directory: lifecycle-manager | |
if: ${{ matrix.e2e-test == 'kyma-metrics' || matrix.e2e-test == 'purge-metrics' }} | |
run: | | |
kubectl patch svc klm-metrics-service -p '{"spec": {"type": "LoadBalancer"}}' -n kcp-system | |
- name: Run ${{ matrix.e2e-test }} | |
working-directory: lifecycle-manager | |
run: | | |
make -C tests/e2e_test ${{ matrix.e2e-test }} |