Skip to content

chore: Add a Conventional Commits linter as a GitHub action (#852) #7

chore: Add a Conventional Commits linter as a GitHub action (#852)

chore: Add a Conventional Commits linter as a GitHub action (#852) #7

Workflow file for this run

name: E2E Tests
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
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: 600
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: ["test-watcher-e2e", "test-kyma-deletion-e2e", "test-status-propagation-e2e"]
cli-stability: [ "unstable" ]
name: "Run E2E tests"
needs: [wait-for-img]
runs-on: ubuntu-latest
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: |
sudo add-apt-repository ppa:longsleep/golang-backports -y
sudo apt update -y
sudo apt install git curl wget make bash golang-go -y
- 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 kubectl
run: |
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl /usr/local/bin
- name: Install Kyma CLI
run: |
wget -q https://storage.googleapis.com/kyma-cli-${{ matrix.cli-stability }}/kyma-linux
chmod +x kyma-linux && mv kyma-linux /usr/local/bin/kyma-${{ matrix.cli-stability }}
echo "PATH=/usr/local/bin/kyma-${{ matrix.cli-stability }}" >> $GITHUB_OUTPUT
- run: ln -s /usr/local/bin/kyma-${{ matrix.cli-stability }} /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 9080:80@loadbalancer -p 9443:443@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: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
- 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: 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 == 'test-status-propagation-e2e' }}
with:
repository: kyma-project/template-operator
path: ./template-operator/
- name: Create Template Operator Module
working-directory: ./template-operator
if: ${{ matrix.e2e-test == 'test-status-propagation-e2e' }}
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: Run ${{ matrix.e2e-test }}
working-directory: ./lifecycle-manager
run: |
make -C tests/e2e_test ${{ matrix.e2e-test }}