chore(github, sdlc): Replace the feature request issue template with … #3
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: 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 | |
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: | | |
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 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: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.21' | |
- 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: Expose Metrics Endpoint | |
working-directory: ./lifecycle-manager | |
if: ${{ matrix.e2e-test == 'test-kyma-deletion-e2e' }} | |
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 }} |