Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kyma@v3 e2e integration test on k3d #2311

Merged
merged 1 commit into from
Jan 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Expand Up @@ -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)
}
}
Loading