Skip to content

Commit

Permalink
kyma@v3 e2e integration test on k3d (kyma-project#2311)
Browse files Browse the repository at this point in the history
kwiatekus authored Jan 15, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 2c73dcb commit a9ca132
Showing 10 changed files with 165 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .github/actions/setup-go/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: "Setup go"
description: "Action for the go setup"

runs:
using: "composite"
steps:
- name: Setup go
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"
cache-dependency-path: "go.sum"
26 changes: 26 additions & 0 deletions .github/workflows/pull.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: pull

on:
pull_request_target:
types: [ opened, edited, synchronize, reopened, ready_for_review ]

jobs:
e2e-test-k3d:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- uses: ./.github/actions/setup-go
- name: ensure pack
run: |
if ! which pack; then
echo "Installing pack..."
(curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.36.0/pack-v0.36.0-linux.tgz" | sudo tar -C /usr/local/bin/ --no-same-owner -xzv pack)
fi
- name: build kyma@v3 binary
run: make build
- uses: kyma-project/serverless/.github/actions/create-k3d-cluster@9e8c091842e5c884e1770ef0bcc5b4b4d2894b74
- name: test
run: make -C tests/k3d e2e-test
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -24,3 +24,10 @@ test: ## Run unit tests.
.PHONY: lint
lint: golangci-lint ## Run golangci-lint.
$(GOLANGCI_LINT) run -v

.PHONY: build
build:
go build -o bin/kyma@v3 main.go



3 changes: 3 additions & 0 deletions tests/btp/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.PHONY: e2e-test
e2e-test:
./integration-test-btp.sh
37 changes: 37 additions & 0 deletions tests/btp/integration-test-btp.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash

echo "Running kyma@v3 integration tests uing connected managed kyma runtime"

# -------------------------------------------------------------------------------------
echo "Step1: Generating temporary access for new service account"

../../bin/kyma@v3 alpha access --clusterrole cluster-admin --name test-sa --output /tmp/kubeconfig.yaml --time 2h

export KUBECONFIG="/tmp/kubeconfig.yaml"
if [[ $(kubectl config view --minify --raw | yq '.users[0].name') != 'test-sa' ]]; then
exit 1
fi
echo "Running test in user context of: $(kubectl config view --minify --raw | yq '.users[0].name')"
# -------------------------------------------------------------------------------------
echo "Step2: List modules"
../../bin/kyma@v3 alpha module list

# -------------------------------------------------------------------------------------
echo "Step3: Connecting to remote BTP subaccount"
# -------------------------------------------------------------------------------------
echo "Step4: Create Shared Service Instance Reference"
# -------------------------------------------------------------------------------------
# Enable Docker Registry
echo "Step5: Enable Docker Registry from experimental channel (with persistent BTP based storage)"
../../bin/kyma@v3 alpha module add docker-registry --channel experimental --cr-path k8s-resources/exposed-docker-registry.yaml

echo "..waiting for docker registry"
kubectl wait --for condition=Installed dockerregistries.operator.kyma-project.io/default -n kyma-system --timeout=360s
# -------------------------------------------------------------------------------------
echo "Step6: Map bookstore DB"
# -------------------------------------------------------------------------------------
echo "Step7: Push bookstore application (w/o Dockerfile)"
# -------------------------------------------------------------------------------------


exit 0
7 changes: 7 additions & 0 deletions tests/btp/k8s-resources/exposed-docker-registry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: operator.kyma-project.io/v1alpha1
kind: DockerRegistry
metadata:
name: default
spec:
externalAccess:
enabled: true
3 changes: 3 additions & 0 deletions tests/k3d/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.PHONY: e2e-test
e2e-test:
./integration-test-k3d.sh
48 changes: 48 additions & 0 deletions tests/k3d/integration-test-k3d.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

echo "Running basic test scenario for kyma@v3 CLI on k3d runtime"

# -------------------------------------------------------------------------------------
# Generate kubeconfig for service account

echo "Step1: Generating temporary access for new service account"
../../bin/kyma@v3 alpha access --clusterrole cluster-admin --name test-sa --output /tmp/kubeconfig.yaml --time 2h
export KUBECONFIG="/tmp/kubeconfig.yaml"
if [[ $(kubectl config view --minify --raw | yq '.users[0].name') != 'test-sa' ]]; then
exit 1
fi
echo "Running test in user context of: $(kubectl config view --minify --raw | yq '.users[0].name')"

# -------------------------------------------------------------------------------------
# Enable Docker Registry

echo "Step2: Enable latest Docker Registry release"
kubectl create namespace kyma-system || true
kubectl apply -f https://github.com/kyma-project/docker-registry/releases/latest/download/dockerregistry-operator.yaml
kubectl apply -f https://github.com/kyma-project/docker-registry/releases/latest/download/default-dockerregistry-cr.yaml -n kyma-system
echo "..waiting for docker registry"
kubectl wait --for condition=Installed dockerregistries.operator.kyma-project.io/default -n kyma-system --timeout=360s

# -------------------------------------------------------------------------------------
# Push sample go app

echo "Step3: Push sample Go application (tests/k3d/sample-go)"
../../bin/kyma@v3 alpha app push --name test-app --code-path sample-go
kubectl wait --for condition=Available deployment test-app --timeout=60s
kubectl port-forward deployments/test-app 8080:8080 &
sleep 3 # wait for ports to get forwarded
response=$(curl localhost:8080)
echo "HTTP response from sample app: $response"

if [[ $response != 'okey dokey' ]]; then
exit 1
fi

# -------------------------------------------------------------------------------------
# Cleanup

echo "Step4: Cleanup"
kubectl delete deployment test-app

# -------------------------------------------------------------------------------------
exit 0
3 changes: 3 additions & 0 deletions tests/k3d/sample-go/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module github.com/kyma-project/pack-test

go 1.23.2
20 changes: 20 additions & 0 deletions tests/k3d/sample-go/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package main

import (
"fmt"
"net/http"
"os"
)

func main() {
mux := &http.ServeMux{}
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Println("got request")
w.WriteHeader(200)
w.Write([]byte("okey dokey"))
})
if err := http.ListenAndServe(":8080", mux); err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
}

0 comments on commit a9ca132

Please sign in to comment.