Skip to content

(ci): pre-configuration of e2e testing #56

(ci): pre-configuration of e2e testing

(ci): pre-configuration of e2e testing #56

Workflow file for this run

name: E2E
on:
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: Run the build with upterm debugging enabled
(https://github.com/lhotari/action-upterm/)
required: false
default: false
pull_request:
branches:
- main
concurrency:
group: e2e-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
unit-test:
runs-on: ubuntu-latest
name: Unit Test
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.22"
- name: Run Unit Tests
run: go test ./...
e2e-test-empty:
runs-on: ubuntu-latest
# container:
# image: quay.io/containers/podman:latest
# options: --privileged
name: E2E Empty Test
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install Kind
run: |
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.12.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
- name: Create and Start Kind Cluster
run: kind create cluster
- 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
sudo mv ./kubectl /usr/local/bin/kubectl
- name: Set up kubectl
run: |
kind export kubeconfig --name kind-kind
kubectl cluster-info
# - name: Set up Go
# uses: actions/setup-go@v4
# with:
# go-version: "1.22"
# - name: Install Orbstack
# run: go install github.com/your-username/orbstack
# - name: Run Orbstack Tests
# run: |
# orbstack --test
- name: Install DevSpace
run: |
curl -fsSL -o /tmp/devspace https://github.com/devspace-cloud/devspace/releases/latest/download/devspace-linux-amd64
chmod +x /tmp/devspace
sudo mv /tmp/devspace /usr/local/bin/devspace
# - name: Configure kubectl
# uses: actions-hub/kubectl@master
# env:
# KUBE_CONFIG: YXBpVmVyc2lvbjogdjEKY2x1c3RlcnM6CiAgLSBjbHVzdGVyOgogICAgICBjZXJ0aWZpY2F0ZS1hdXRob3JpdHktZGF0YTogTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVSmtha05EUVZJeVowRjNTVUpCWjBsQ1FVUkJTMEpuWjNGb2EycFBVRkZSUkVGcVFXcE5VMFYzU0hkWlJGWlJVVVJFUW1oeVRUTk5kR015Vm5rS1pHMVdlVXhYVG1oUlJFVXpUVVJuZDAxRVozbE5WRTEzU0doalRrMXFVWGROYWtVeFRWUlJNRTE2VFhwWGFHTk9UWHBSZDAxcVJYbE5WRkV3VFhwTmVncFhha0ZxVFZORmQwaDNXVVJXVVZGRVJFSm9jazB6VFhSak1sWjVaRzFXZVV4WFRtaFJSRVV6VFVSbmQwMUVaM2xOVkUxM1YxUkJWRUpuWTNGb2EycFBDbEJSU1VKQ1oyZHhhR3RxVDFCUlRVSkNkMDVEUVVGU09YbHFSbVJuUzFOR2NqWTRlRGxJYlVNM0x6SjNaa0V5VkVGb2VFWjFOR0paWTFkSFVFWTBSRVVLTjA5WFlUaHVlVlJNZW1KQmVGVkhSbFZDY0c0dlFYQTBiV1JvUzI1U1UxWXZaVlpTT1hGMFprMTNlVGR2TUVsM1VVUkJUMEpuVGxaSVVUaENRV1k0UlFwQ1FVMURRWEZSZDBSM1dVUldVakJVUVZGSUwwSkJWWGRCZDBWQ0wzcEJaRUpuVGxaSVVUUkZSbWRSVlc1R2FqUnhRa3RNVUdSbWQweHlWRXBLWjJweUNqZHJlRTg0TjNOM1EyZFpTVXR2V2tsNmFqQkZRWGRKUkZKM1FYZFNRVWxuUkd3dk9UaFFTSEUwTTNwUGVuTjVRMDVqV1VFemIwODVSRTByVjI1eFFtRUtaSEpLUW5kT04wdFBUREJEU1VFMVpWaDFaa3hOZG1oRlpYTkdTMDk0VlZkU1pVMWhVa2RNWkNzNFlubzFSSFJUWWpobE1HRXpiWFFLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89CiAgICAgIHNlcnZlcjogaHR0cHM6Ly9sb2NhbGhvc3Q6MTE3NTUKICAgIG5hbWU6IHZjbHVzdGVyX3Rlc3RfdmNsdXN0ZXItdGVzdF9vcmJzdGFjawogIC0gY2x1c3RlcjoKICAgICAgY2VydGlmaWNhdGUtYXV0aG9yaXR5LWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVUprYWtORFFWSXlaMEYzU1VKQlowbENRVVJCUzBKblozRm9hMnBQVUZGUlJFRnFRV3BOVTBWM1NIZFpSRlpSVVVSRVFtaHlUVE5OZEdNeVZua0taRzFXZVV4WFRtaFJSRVV6VFVSbmQwMUVTVEpOZWxsM1NHaGpUazFxVVhkTmFrVXhUVlJOZUUxRVRUSlhhR05PVFhwUmQwMXFSWGxOVkUxNFRVUk5NZ3BYYWtGcVRWTkZkMGgzV1VSV1VWRkVSRUpvY2swelRYUmpNbFo1WkcxV2VVeFhUbWhSUkVVelRVUm5kMDFFU1RKTmVsbDNWMVJCVkVKblkzRm9hMnBQQ2xCUlNVSkNaMmR4YUd0cVQxQlJUVUpDZDA1RFFVRlRjamxOTmxOc2RIUnphakVyVVRST1NrOHZUVmxLWTNSSFNrcDBhMDh2YkRreFIyUjZSM1pFUjNZS1VYZ3dUVkJFVm5sWWNTdDBhamxPVVZwd2JVVjZOV05vUW10dFFWTlRjVzQwY0dRdlRXMWhVRTFOVERSdk1FbDNVVVJCVDBKblRsWklVVGhDUVdZNFJRcENRVTFEUVhGUmQwUjNXVVJXVWpCVVFWRklMMEpCVlhkQmQwVkNMM3BCWkVKblRsWklVVFJGUm1kUlZUbEdRbGh1V0dkTlNXeFpiREphUkd0R1FUSTFDbmxQZVZCcVQzTjNRMmRaU1V0dldrbDZhakJGUVhkSlJGSjNRWGRTUVVsbVNFOVBTbEZKYmtWRlFuZGFNR1pMVWxSeE9VRTBOSEJ5U0U1QmJYcFZjMjBLY2lzclp6RmpMek0yVVVsb1FVOUNia3R1UkhSUFRUWTBWMDVvVTI1dk1uVkpWMm8xVHk4NVZqWmxXVFJKUld0MFZVTm1aRFJqV0ZrS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPQogICAgICBzZXJ2ZXI6IGh0dHBzOi8vMTI3LjAuMC4xOjI2NDQzCiAgICBuYW1lOiBvcmJzdGFjawpjb250ZXh0czoKICAtIGNvbnRleHQ6CiAgICAgIGNsdXN0ZXI6IHZjbHVzdGVyX3Rlc3RfdmNsdXN0ZXItdGVzdF9vcmJzdGFjawogICAgICB1c2VyOiB2Y2x1c3Rlcl90ZXN0X3ZjbHVzdGVyLXRlc3Rfb3Jic3RhY2sKICAgIG5hbWU6IHZjbHVzdGVyX3Rlc3RfdmNsdXN0ZXItdGVzdF9vcmJzdGFjawogIC0gY29udGV4dDoKICAgICAgY2x1c3Rlcjogb3Jic3RhY2sKICAgICAgdXNlcjogb3Jic3RhY2sKICAgIG5hbWU6IG9yYnN0YWNrCmN1cnJlbnQtY29udGV4dDogb3Jic3RhY2sKa2luZDogQ29uZmlnCnByZWZlcmVuY2VzOiB7fQp1c2VyczoKICAtIG5hbWU6IHZjbHVzdGVyX3Rlc3RfdmNsdXN0ZXItdGVzdF9vcmJzdGFjawogICAgdXNlcjoKICAgICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVUpyYWtORFFWUmxaMEYzU1VKQlowbEpUMkZRUnpoTWMyMU1OV2QzUTJkWlNVdHZXa2w2YWpCRlFYZEpkMGw2UldoTlFqaEhRVEZWUlVGM2Qxa0tZWHBPZWt4WFRuTmhWMVoxWkVNeGFsbFZRWGhPZWtFMFRVUkJORTFxUlhwTlFqUllSRlJKTUUxRVNYaE9WRVV3VGtSTmVrMHhiMWhFVkVreFRVUkplQXBPUkVVd1RrUk5lazB4YjNkTlJFVllUVUpWUjBFeFZVVkRhRTFQWXpOc2VtUkhWblJQYlRGb1l6TlNiR051VFhoR1ZFRlVRbWRPVmtKQlRWUkVTRTQxQ21NelVteGlWSEJvV2tjeGNHSnFRbHBOUWsxSFFubHhSMU5OTkRsQlowVkhRME54UjFOTk5EbEJkMFZJUVRCSlFVSkRieXN5UnpSelEwcGphVFZaVGxNS01rcDZWVGQ1Wm5FelNVUjBkRTF0Y25VMmJHdEdWMk5NUjJGSlNWUlRWRFpQYkZkemFEZGFZa0pSYjNGclRrazVjM2RUT1N0Q1dIcHRWMkZPUTFGelJncDFRMFphTDBGMWFsTkVRa2ROUVRSSFFURlZaRVIzUlVJdmQxRkZRWGRKUm05RVFWUkNaMDVXU0ZOVlJVUkVRVXRDWjJkeVFtZEZSa0pSWTBSQmFrRm1Da0puVGxaSVUwMUZSMFJCVjJkQ1V5dDBNRzFoTUZSMlpITjVkMlJ1VkdwWWQwRXhXaXMwZUZaSmFrRkxRbWRuY1docmFrOVFVVkZFUVdkT1NrRkVRa2NLUVdsRlFUaGpaWE5sY1doak9GcEdVMFozVEVSemRESllVUzlsVTB4aVZXRnVObk5ZZW5oRmVIRnRTbE5FYlhORFNWRkVjRGRKV21SSmQzRmFWbVkyV1FwUU1XUmFPV3d6ZUU5SlRERlJMMlk1VlhkTlZDOWFPRlJhWkVaSmEyYzlQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDaTB0TFMwdFFrVkhTVTRnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUXBOU1VsQ1pHcERRMEZTTW1kQmQwbENRV2RKUWtGRVFVdENaMmR4YUd0cVQxQlJVVVJCYWtGcVRWTkZkMGgzV1VSV1VWRkVSRUpvY2swelRYUlpNbmh3Q2xwWE5UQk1WMDVvVVVSRk0wMUVaM2ROUkdkNVRWUk5kMGhvWTA1TmFsRjNUV3BGTVUxVVVUQk5lazE2VjJoalRrMTZVWGROYWtWNVRWUlJNRTE2VFhvS1YycEJhazFUUlhkSWQxbEVWbEZSUkVSQ2FISk5NMDEwV1RKNGNGcFhOVEJNVjA1b1VVUkZNMDFFWjNkTlJHZDVUVlJOZDFkVVFWUkNaMk54YUd0cVR3cFFVVWxDUW1kbmNXaHJhazlRVVUxQ1FuZE9RMEZCVkN0WmJUVm5MMG80VHpJd1EwbGxTRkI0WjJoUldUQlhhamwzUVZaemMwUXhkSFJ6UzBWbk1GRlJDakEzVUROTFpFdHRWM0F6UzNCdlYzRmtka040ZFRORk1rcDRaREJHVkRoNWVHMUlPVkppYW1WWFJXOTBiekJKZDFGRVFVOUNaMDVXU0ZFNFFrRm1PRVVLUWtGTlEwRnhVWGRFZDFsRVZsSXdWRUZSU0M5Q1FWVjNRWGRGUWk5NlFXUkNaMDVXU0ZFMFJVWm5VVlYyY21SS2JYUkZOek5pVFhOSVdqQTBNVGhCVGdwWFpuVk5WbE5KZDBObldVbExiMXBKZW1vd1JVRjNTVVJTZDBGM1VrRkpaMVZsZFM5eVZuQm1jMU5vVVVabVNqSXliMDVDTVZod1kxZGpVV0ZQWTJGQkNuRjRaR2cwZHpoR2RIQlJRMGxJZG1WVFJFMDBjbE4yVjNaR1prdFJPWFJXVERSRlprcFVkRGMyY1dsaU1GTXlZMkZCZERRd1VITkdDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsKICAgICAgY2xpZW50LWtleS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJGUXlCUVVrbFdRVlJGSUV0RldTMHRMUzB0Q2sxSVkwTkJVVVZGU1ZCV1MySmxRekp1YTJKYVoxVXhaVU5hUzJOeFVIcG5TWGQwTVd4dE9HY3haRk5SYUVOb2FIUlVSV1Z2UVc5SFEwTnhSMU5OTkRrS1FYZEZTRzlWVVVSUlowRkZTMm8zV1dKcGQwbHNlVXhzWnpGTVdXNU9WSFpLSzNKalowOHlNSGxoZFRkeFYxRldXbmR6V205bmFFNUtVRzgyVm1GNVNBcDBiSE5HUTJseFVUQnFNbnBDVERNMFJtWlBXbHB2TUVwRGQxYzBTVlp1T0VOM1BUMEtMUzB0TFMxRlRrUWdSVU1nVUZKSlZrRlVSU0JMUlZrdExTMHRMUW89CiAgLSBuYW1lOiBvcmJzdGFjawogICAgdXNlcjoKICAgICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVUpyYWtORFFWUmxaMEYzU1VKQlowbEpUMFZQWlZGM1lpdGxiMVYzUTJkWlNVdHZXa2w2YWpCRlFYZEpkMGw2UldoTlFqaEhRVEZWUlVGM2Qxa0tZWHBPZWt4WFRuTmhWMVoxWkVNeGFsbFZRWGhPZWtFMFRVUkJlVTVxVFRKTlFqUllSRlJKTUUxRVNYaE9WRVY2VFZSQmVrNXNiMWhFVkVreFRVUkplQXBPUkVWNlRWUkJlazVzYjNkTlJFVllUVUpWUjBFeFZVVkRhRTFQWXpOc2VtUkhWblJQYlRGb1l6TlNiR051VFhoR1ZFRlVRbWRPVmtKQlRWUkVTRTQxQ21NelVteGlWSEJvV2tjeGNHSnFRbHBOUWsxSFFubHhSMU5OTkRsQlowVkhRME54UjFOTk5EbEJkMFZJUVRCSlFVSklUaXR2U1d0c01UaG1ka00wZVVrS2EyNUxhMnBNVjBZMk1rVmhaSEZKYkRseVZtc3pabkZoWm1OcVNsbHZkRWg1U2tKSGFYaFNPSFo0Vm01cGRrSnZkRk0wTDI1NlJEZHdjV2hOTVRaVmR3b3pVbTl6Yms0eWFsTkVRa2ROUVRSSFFURlZaRVIzUlVJdmQxRkZRWGRKUm05RVFWUkNaMDVXU0ZOVlJVUkVRVXRDWjJkeVFtZEZSa0pSWTBSQmFrRm1Da0puVGxaSVUwMUZSMFJCVjJkQ1UxSnZaa2gzYjJ3d1YyMUpUME51TVUxUGRUQkxPRUZEVVRWSWVrRkxRbWRuY1docmFrOVFVVkZFUVdkT1NrRkVRa2NLUVdsRlFXNDRTMVJoSzBaeUwzcE5kMjVOVW5kUlMzZEtNRkZUTmtaVFluZDViSFE1TjFOTFRWZG9kMVpZY205RFNWRkVNVzFwV0RodlJXNXhaazVqUkFwSlVETTFMMkZEZGtwUVEzbFFVRUZrVGxKSlRYaFNhRTV0UmtRelVuYzlQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDaTB0TFMwdFFrVkhTVTRnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUXBOU1VsQ1pVUkRRMEZTTW1kQmQwbENRV2RKUWtGRVFVdENaMmR4YUd0cVQxQlJVVVJCYWtGcVRWTkZkMGgzV1VSV1VWRkVSRUpvY2swelRYUlpNbmh3Q2xwWE5UQk1WMDVvVVVSRk0wMUVaM2ROUkVreVRYcFpkMGhvWTA1TmFsRjNUV3BGTVUxVVRYaE5SRTB5VjJoalRrMTZVWGROYWtWNVRWUk5lRTFFVFRJS1YycEJhazFUUlhkSWQxbEVWbEZSUkVSQ2FISk5NMDEwV1RKNGNGcFhOVEJNVjA1b1VVUkZNMDFFWjNkTlJFa3lUWHBaZDFkVVFWUkNaMk54YUd0cVR3cFFVVWxDUW1kbmNXaHJhazlRVVUxQ1FuZE9RMEZCVTFkUlZrdE9XbTVrUjFrNFFtWjVUbmQwTkRoaU1VVkVhbGRoZERscFdHOUpWSEpwYURCVlNTdDJDalZwTm5wSWRrNUxhVTF2YlZaVVZrSk1OREowVGtSNmFUZE5kekV5ZEU1alJWTnpUMkZoUTJKR2FHUkZiekJKZDFGRVFVOUNaMDVXU0ZFNFFrRm1PRVVLUWtGTlEwRnhVWGRFZDFsRVZsSXdWRUZSU0M5Q1FWVjNRWGRGUWk5NlFXUkNaMDVXU0ZFMFJVWm5VVlZyWVVoNE9FdEtaRVp3YVVSbmNEbFVSSEowUXdwMlFVRnJUMUk0ZDBObldVbExiMXBKZW1vd1JVRjNTVVJUVVVGM1VtZEphRUZQTTJGSE9VMUNSM0pWVFhaeFdHaFZWRzVTTkVGaVlTOTZOamRUU0ZOTkNtbHdjR1ZPVGxZclVsY3liVUZwUlVGM1NETnRiRGRzTW1ZeGRXczFVMGxITVVwdlNYZE1TMWxqYVdGaWJGTkZOR2xMVW1kS1JFaGxXRkYzUFFvdExTMHRMVVZPUkNCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2c9PQogICAgICBjbGllbnQta2V5LWRhdGE6IExTMHRMUzFDUlVkSlRpQkZReUJRVWtsV1FWUkZJRXRGV1MwdExTMHRDazFJWTBOQlVVVkZTVTlKTmtZck9EQlhhbWRSTkVoRmNGb3lWV3BvVFZsRVQweEJhekJIZGtnNFNreHVlVUpDTVhkcmR6UnZRVzlIUTBOeFIxTk5ORGtLUVhkRlNHOVZVVVJSWjBGRll6TTJaMmxUV0ZoNEt6aE1ha2xwVTJOeFUwMTBXVmh5V1ZKd01tOXBXREowVjFSa0szQndPWGxOYkdscE1HWkphMFZoVEFwR1NIa3ZSbGRsU3poSGFURk1haXRtVFZCMWJYRkZlbGh3VkVSa1IybDVZek5SUFQwS0xTMHRMUzFGVGtRZ1JVTWdVRkpKVmtGVVJTQkxSVmt0TFMwdExRbz0K
# with:
# args: get pods
# - name: Setup Kubernetes
# uses: azure/aks-set-context@v1
# with:
# creds: ${{ secrets.KUBE_CONFIG }}
# kubeconfig: config
# context: your-context-name
# - name: Check Kubernetes config
# run: |
# cat config
# - name: Install kubectl, kustomize and clusterctl
# run: |
# # curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash && sudo mv kustomize /usr/local/bin/
# curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.1/clusterctl-linux-amd64 -o clusterctl && chmod +x clusterctl && sudo mv clusterctl /usr/local/bin/
# - name: Run clusterctl command
# run: |
# clusterctl config repositories | grep vcluster
# - name: Set Kubernetes context
# run: |
# kubectl config set-context test-PR --kubeconfig=$HOME/.kube/config
# - name: Set Podman as current context for kubectl
# run: |
# export KUBECONFIG=/run/user/$(id -u)/podman/podman.sock
# - name: Run podman
# run: |
# sudo podman --storage-driver=overlay version
# - name: Run kubectl
# run: |
# kubectl version --client
- name: Verify Kubernetes context
run: |
kubectl config get-contexts
- name: Check Kubernetes config file
run: |
cat $HOME/.kube/config
# - name: Configure kubectl
# run: |
# kubectl config set-context test-PR
- name: Check Kubernetes connectivity
run: |
echo "=== Kube config ==="
cat $HOME/.kube/config
echo "=== Kubectl version ==="
kubectl version --client
echo "=== Kubectl config ==="
kubectl config view
echo "=== Kubectl current context ==="
kubectl config current-context
echo "=== Kubectl cluster info ==="
kubectl cluster-info
echo "=== Kubectl get nodes ==="
kubectl get nodes
echo "=== Kubectl get pods ==="
kubectl get pods --all-namespaces
echo "=== Kubectl get namespaces ==="
kubectl get namespaces
echo "=== Test kubectl command ==="
kubectl get all --all-namespaces
- name: Run kubectl get namespaces
run: |
kubectl get namespaces
- name: DevSpace Deploy
run: |
devspace deploy -p deploy