[pull] master from kubernetes:master #2590
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: PR | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- "go.mod" | |
- "**.go" | |
- "**.yml" | |
- "**.yaml" | |
- "Makefile" | |
- "!deploy/kicbase/**" | |
- "!deploy/iso/**" | |
env: | |
GOPROXY: https://proxy.golang.org | |
GO_VERSION: '1.23.2' | |
permissions: | |
contents: read | |
jobs: | |
# Runs before before the functional tests | |
# builds the binaries required for testing | |
build_minikube_test_binaries: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
go-version: ${{env.GO_VERSION}} | |
- name: Download Dependencies | |
run: go mod download | |
- name: Build Binaries | |
run: | | |
make e2e-linux-amd64 e2e-darwin-amd64 | |
cp -r test/integration/testdata ./out | |
whoami | |
echo github ref $GITHUB_REF | |
echo workflow $GITHUB_WORKFLOW | |
echo home $HOME | |
echo event name $GITHUB_EVENT_NAME | |
echo workspace $GITHUB_WORKSPACE | |
echo "end of debug stuff" | |
echo $(which jq) | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: minikube_binaries | |
path: out | |
build_minikube: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
go-version: ${{env.GO_VERSION}} | |
- name: Download Dependencies | |
run: go mod download | |
- name: Build Binaries | |
run: | | |
make cross | |
make e2e-cross | |
lint: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
go-version: ${{env.GO_VERSION}} | |
- name: Install libvirt | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libvirt-dev | |
- name: Download Dependencies | |
run: go mod download | |
- name: Lint | |
env: | |
TESTSUITE: lintall | |
run: make test | |
continue-on-error: false | |
unit_test: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
go-version: ${{env.GO_VERSION}} | |
- name: Install libvirt | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libvirt-dev | |
- name: Download Dependencies | |
run: go mod download | |
- name: Unit Test | |
env: | |
TESTSUITE: unittest | |
run: make test | |
continue-on-error: false | |
# Run the following integration tests after the build_minikube | |
# They will run in parallel and use the binaries in previous step | |
functional_docker_ubuntu: | |
permissions: | |
contents: none | |
needs: [build_minikube_test_binaries] | |
env: | |
TIME_ELAPSED: time | |
JOB_NAME: "functional_docker_ubuntu" | |
GOPOGH_RESULT: "" | |
SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install kubectl | |
shell: bash | |
run: | | |
curl -LO "https://dl.k8s.io/release/$(curl -sSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" | |
sudo install kubectl /usr/local/bin/kubectl | |
kubectl version --client=true | |
- name: Docker Info | |
shell: bash | |
run: | | |
echo "--------------------------" | |
docker version || true | |
echo "--------------------------" | |
docker info || true | |
echo "--------------------------" | |
docker system df || true | |
echo "--------------------------" | |
docker system info --format='{{json .}}'|| true | |
echo "--------------------------" | |
docker ps || true | |
echo "--------------------------" | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
cache: false | |
go-version: ${{env.GO_VERSION}} | |
- name: Install gopogh | |
shell: bash | |
run: | | |
go install github.com/medyagh/gopogh/cmd/[email protected] | |
- name: Download Binaries | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: minikube_binaries | |
path: minikube_binaries | |
- name: Run Integration Test | |
continue-on-error: false | |
# bash {0} to allow test to continue to next step. in case of | |
shell: bash {0} | |
run: | | |
cd minikube_binaries | |
mkdir -p report | |
mkdir -p testhome | |
chmod a+x e2e-* | |
chmod a+x minikube-* | |
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ | |
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld | |
MINIKUBE_HOME=$(pwd)/testhome ./minikube-linux-amd64 delete --all --purge | |
START_TIME=$(date -u +%s) | |
KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args="--vm-driver=docker" -test.run TestFunctional -test.timeout=15m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt | |
END_TIME=$(date -u +%s) | |
TIME_ELAPSED=$(($END_TIME-$START_TIME)) | |
min=$((${TIME_ELAPSED}/60)) | |
sec=$((${TIME_ELAPSED}%60)) | |
TIME_ELAPSED="${min} min $sec seconds " | |
echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV | |
- name: Generate HTML Report | |
shell: bash | |
run: | | |
cd minikube_binaries | |
export PATH=${PATH}:`go env GOPATH`/bin | |
go tool test2json -t < ./report/testout.txt > ./report/testout.json || true | |
STAT=$(gopogh -in ./report/testout.json -out_html ./report/testout.html -out_summary ./report/testout_summary.json -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true | |
echo status: ${STAT} | |
FailNum=$(echo $STAT | jq '.NumberOfFail') | |
TestsNum=$(echo $STAT | jq '.NumberOfTests') | |
GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" | |
echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV | |
echo 'STAT<<EOF' >> $GITHUB_ENV | |
echo "${STAT}" >> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: functional_docker_ubuntu | |
path: minikube_binaries/report | |
- name: The End Result functional_docker_ubuntu | |
shell: bash | |
run: | | |
echo ${GOPOGH_RESULT} | |
numFail=$(echo $STAT | jq '.NumberOfFail') | |
numPass=$(echo $STAT | jq '.NumberOfPass') | |
echo "*******************${numPass} Passes :) *******************" | |
echo $STAT | jq '.PassedTests' || true | |
echo "*******************************************************" | |
echo "---------------- ${numFail} Failures :( ----------------------------" | |
echo $STAT | jq '.FailedTests' || true | |
echo "-------------------------------------------------------" | |
if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi | |
if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi | |
functional_docker_containerd_ubuntu: | |
permissions: | |
contents: none | |
needs: [build_minikube_test_binaries] | |
env: | |
TIME_ELAPSED: time | |
JOB_NAME: "functional_docker_containerd_ubuntu" | |
GOPOGH_RESULT: "" | |
SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install kubectl | |
shell: bash | |
run: | | |
curl -LO "https://dl.k8s.io/release/$(curl -sSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" | |
sudo install kubectl /usr/local/bin/kubectl | |
kubectl version --client=true | |
- name: Docker Info | |
shell: bash | |
run: | | |
echo "--------------------------" | |
docker version || true | |
echo "--------------------------" | |
docker info || true | |
echo "--------------------------" | |
docker system df || true | |
echo "--------------------------" | |
docker system info --format='{{json .}}'|| true | |
echo "--------------------------" | |
docker ps || true | |
echo "--------------------------" | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
cache: false | |
go-version: ${{env.GO_VERSION}} | |
- name: Install gopogh | |
shell: bash | |
run: | | |
go install github.com/medyagh/gopogh/cmd/[email protected] | |
- name: Download Binaries | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: minikube_binaries | |
path: minikube_binaries | |
- name: Run Integration Test | |
continue-on-error: false | |
# bash {0} to allow test to continue to next step. in case of | |
shell: bash {0} | |
run: | | |
cd minikube_binaries | |
mkdir -p report | |
mkdir -p testhome | |
chmod a+x e2e-* | |
chmod a+x minikube-* | |
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ | |
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld | |
MINIKUBE_HOME=$(pwd)/testhome ./minikube-linux-amd64 delete --all --purge | |
START_TIME=$(date -u +%s) | |
KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args="--vm-driver=docker --container-runtime=containerd" -test.run TestFunctional -test.timeout=30m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt | |
END_TIME=$(date -u +%s) | |
TIME_ELAPSED=$(($END_TIME-$START_TIME)) | |
min=$((${TIME_ELAPSED}/60)) | |
sec=$((${TIME_ELAPSED}%60)) | |
TIME_ELAPSED="${min} min $sec seconds " | |
echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV | |
- name: Generate HTML Report | |
shell: bash | |
run: | | |
cd minikube_binaries | |
export PATH=${PATH}:`go env GOPATH`/bin | |
go tool test2json -t < ./report/testout.txt > ./report/testout.json || true | |
STAT=$(gopogh -in ./report/testout.json -out_html ./report/testout.html -out_summary ./report/testout_summary.json -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true | |
echo status: ${STAT} | |
FailNum=$(echo $STAT | jq '.NumberOfFail') | |
TestsNum=$(echo $STAT | jq '.NumberOfTests') | |
GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" | |
echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV | |
echo 'STAT<<EOF' >> $GITHUB_ENV | |
echo "${STAT}" >> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: functional_docker_containerd_ubuntu | |
path: minikube_binaries/report | |
- name: The End Result functional_docker_containerd_ubuntu | |
shell: bash | |
run: | | |
echo ${GOPOGH_RESULT} | |
numFail=$(echo $STAT | jq '.NumberOfFail') | |
numPass=$(echo $STAT | jq '.NumberOfPass') | |
echo "*******************${numPass} Passes :) *******************" | |
echo $STAT | jq '.PassedTests' || true | |
echo "*******************************************************" | |
echo "---------------- ${numFail} Failures :( ----------------------------" | |
echo $STAT | jq '.FailedTests' || true | |
echo "-------------------------------------------------------" | |
if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi | |
if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi | |
functional_docker_rootless_containerd_ubuntu: | |
permissions: | |
contents: none | |
needs: [build_minikube_test_binaries] | |
env: | |
TIME_ELAPSED: time | |
JOB_NAME: "functional_docker_rootless_containerd_ubuntu" | |
GOPOGH_RESULT: "" | |
SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 | |
DEBIAN_FRONTEND: noninteractive | |
# ubuntu-22.04 is needed for cgroup v2 | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install kubectl | |
shell: bash | |
run: | | |
curl -LO "https://dl.k8s.io/release/$(curl -sSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" | |
sudo install kubectl /usr/local/bin/kubectl | |
kubectl version --client=true | |
# https://rootlesscontaine.rs/getting-started/common/cgroup2/ | |
- name: Set up cgroup v2 delegation | |
run: | | |
sudo mkdir -p /etc/systemd/system/[email protected] | |
cat <<EOF | sudo tee /etc/systemd/system/[email protected]/delegate.conf | |
[Service] | |
Delegate=cpu cpuset io memory pids | |
EOF | |
sudo systemctl daemon-reload | |
- name: Set up Rootless Docker | |
run: | | |
sudo apt-get remove moby-engine-* | |
curl https://get.docker.com | sudo sh | |
dockerd-rootless-setuptool.sh install -f | |
docker context use rootless | |
- name: Docker Info | |
shell: bash | |
run: | | |
echo "--------------------------" | |
docker version || true | |
echo "--------------------------" | |
docker info || true | |
echo "--------------------------" | |
docker system df || true | |
echo "--------------------------" | |
docker system info --format='{{json .}}'|| true | |
echo "--------------------------" | |
docker ps || true | |
echo "--------------------------" | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
cache: false | |
go-version: ${{env.GO_VERSION}} | |
- name: Install gopogh | |
shell: bash | |
run: | | |
go install github.com/medyagh/gopogh/cmd/[email protected] | |
- name: Download Binaries | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: minikube_binaries | |
path: minikube_binaries | |
- name: Run Integration Test | |
continue-on-error: false | |
# bash {0} to allow test to continue to next step. in case of | |
shell: bash {0} | |
run: | | |
cd minikube_binaries | |
mkdir -p report | |
mkdir -p testhome | |
chmod a+x e2e-* | |
chmod a+x minikube-* | |
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ | |
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld | |
MINIKUBE_HOME=$(pwd)/testhome ./minikube-linux-amd64 delete --all --purge | |
START_TIME=$(date -u +%s) | |
KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args="--vm-driver=docker --rootless --container-runtime=containerd" -test.run TestFunctional -test.timeout=30m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt | |
END_TIME=$(date -u +%s) | |
TIME_ELAPSED=$(($END_TIME-$START_TIME)) | |
min=$((${TIME_ELAPSED}/60)) | |
sec=$((${TIME_ELAPSED}%60)) | |
TIME_ELAPSED="${min} min $sec seconds " | |
echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV | |
- name: Generate HTML Report | |
shell: bash | |
run: | | |
cd minikube_binaries | |
export PATH=${PATH}:`go env GOPATH`/bin | |
go tool test2json -t < ./report/testout.txt > ./report/testout.json || true | |
STAT=$(gopogh -in ./report/testout.json -out_html ./report/testout.html -out_summary ./report/testout_summary.json -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true | |
echo status: ${STAT} | |
FailNum=$(echo $STAT | jq '.NumberOfFail') | |
TestsNum=$(echo $STAT | jq '.NumberOfTests') | |
GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" | |
echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV | |
echo 'STAT<<EOF' >> $GITHUB_ENV | |
echo "${STAT}" >> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: functional_docker_rootless_containerd_ubuntu | |
path: minikube_binaries/report | |
- name: The End Result functional_docker_rootless_containerd_ubuntu | |
shell: bash | |
run: | | |
echo ${GOPOGH_RESULT} | |
numFail=$(echo $STAT | jq '.NumberOfFail') | |
numPass=$(echo $STAT | jq '.NumberOfPass') | |
echo "*******************${numPass} Passes :) *******************" | |
echo $STAT | jq '.PassedTests' || true | |
echo "*******************************************************" | |
echo "---------------- ${numFail} Failures :( ----------------------------" | |
echo $STAT | jq '.FailedTests' || true | |
echo "-------------------------------------------------------" | |
if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi | |
if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi | |
functional_podman_ubuntu: | |
permissions: | |
contents: none | |
needs: [build_minikube_test_binaries] | |
env: | |
TIME_ELAPSED: time | |
JOB_NAME: functional_podman_ubuntu | |
GOPOGH_RESULT: "" | |
SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 | |
runs-on: ubuntu-24.04 # podman 4+ is only available on ubuntu 24.04 https://github.com/kubernetes/minikube/issues/19232#issuecomment-2229050557 | |
steps: | |
- name: Install kubectl | |
shell: bash | |
run: | | |
curl -LO "https://dl.k8s.io/release/$(curl -sSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" | |
sudo install kubectl /usr/local/bin/kubectl | |
kubectl version --client=true | |
- name: Install Podman | |
shell: bash | |
run: | | |
sudo apt -q update | |
sudo apt install -q -y podman | |
lsb_release -a | |
echo "--------------------------" | |
podman version || true | |
echo "--------------------------" | |
podman info || true | |
echo "--------------------------" | |
podman system df || true | |
echo "--------------------------" | |
podman system info --format='{{json .}}'|| true | |
echo "--------------------------" | |
podman ps || true | |
echo "--------------------------" | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
cache: false | |
go-version: ${{env.GO_VERSION}} | |
- name: Install gopogh | |
shell: bash | |
run: | | |
go install github.com/medyagh/gopogh/cmd/[email protected] | |
- name: Download Binaries | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: minikube_binaries | |
path: minikube_binaries | |
- name: Run Integration Test | |
continue-on-error: false | |
# bash {0} to allow test to continue to next step. in case of | |
shell: bash {0} | |
run: | | |
cd minikube_binaries | |
mkdir -p report | |
mkdir -p testhome | |
chmod a+x e2e-* | |
chmod a+x minikube-* | |
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ | |
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld | |
MINIKUBE_HOME=$(pwd)/testhome ./minikube-linux-amd64 delete --all --purge | |
START_TIME=$(date -u +%s) | |
KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args="--vm-driver=podman -v=6 --alsologtostderr" -test.run TestFunctional -test.timeout=15m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt | |
END_TIME=$(date -u +%s) | |
TIME_ELAPSED=$(($END_TIME-$START_TIME)) | |
min=$((${TIME_ELAPSED}/60)) | |
sec=$((${TIME_ELAPSED}%60)) | |
TIME_ELAPSED="${min} min $sec seconds " | |
echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV | |
- name: Generate HTML Report | |
shell: bash | |
run: | | |
cd minikube_binaries | |
export PATH=${PATH}:`go env GOPATH`/bin | |
go tool test2json -t < ./report/testout.txt > ./report/testout.json || true | |
STAT=$(gopogh -in ./report/testout.json -out_html ./report/testout.html -out_summary ./report/testout_summary.json -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true | |
echo status: ${STAT} | |
FailNum=$(echo $STAT | jq '.NumberOfFail') | |
TestsNum=$(echo $STAT | jq '.NumberOfTests') | |
GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" | |
echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV | |
echo 'STAT<<EOF' >> $GITHUB_ENV | |
echo "${STAT}" >> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: functional_podman_ubuntu | |
path: minikube_binaries/report | |
- name: The End Result functional_podman_ubuntu | |
shell: bash | |
run: | | |
echo ${GOPOGH_RESULT} | |
numFail=$(echo $STAT | jq '.NumberOfFail') | |
numPass=$(echo $STAT | jq '.NumberOfPass') | |
echo "*******************${numPass} Passes :) *******************" | |
echo $STAT | jq '.PassedTests' || true | |
echo "*******************************************************" | |
echo "---------------- ${numFail} Failures :( ----------------------------" | |
echo $STAT | jq '.FailedTests' || true | |
echo "-------------------------------------------------------" | |
if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi | |
if [ "$numPass" -lt 36 ];then echo "*** Failed to pass at least 36 ! ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi | |
functional_baremetal_ubuntu22_04: | |
permissions: | |
contents: none | |
needs: [build_minikube_test_binaries] | |
env: | |
TIME_ELAPSED: time | |
JOB_NAME: "functional_baremetal_ubuntu22_04" | |
GOPOGH_RESULT: "" | |
SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install kubectl | |
shell: bash | |
run: | | |
curl -LO "https://dl.k8s.io/release/$(curl -sSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" | |
sudo install kubectl /usr/local/bin/kubectl | |
kubectl version --client=true | |
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed | |
with: | |
cache: false | |
go-version: ${{env.GO_VERSION}} | |
# conntrack is required for kubernetes 1.18 and higher | |
# socat is required for kubectl port forward which is used in some tests such as validateHelmTillerAddon | |
# cri-dockerd is required for Kubernetes 1.24 and higher for none driver | |
- name: Install conntrack and socat | |
shell: bash | |
run: | | |
sudo apt-get update -qq | |
sudo apt-get -qq -y install conntrack | |
sudo apt-get -qq -y install socat | |
- name: Install cri_dockerd & crictl | |
shell: bash | |
run: | | |
CRI_DOCKERD_VERSION="v0.3.15" | |
CRI_DOCKERD_COMMIT="c1c566e0cc84abe6972f0bf857ecd8fe306258d9" | |
CRI_DOCKERD_BASE_URL="https://storage.googleapis.com/kicbase-artifacts/cri-dockerd/${CRI_DOCKERD_COMMIT}" | |
sudo curl -L "${CRI_DOCKERD_BASE_URL}/amd64/cri-dockerd" -o /usr/bin/cri-dockerd | |
sudo curl -L "${CRI_DOCKERD_BASE_URL}/cri-docker.socket" -o /usr/lib/systemd/system/cri-docker.socket | |
sudo curl -L "${CRI_DOCKERD_BASE_URL}/cri-docker.service" -o /usr/lib/systemd/system/cri-docker.service | |
sudo chmod +x /usr/bin/cri-dockerd | |
CRICTL_VERSION="v1.28.0" | |
curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$CRICTL_VERSION/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz --output crictl-${CRICTL_VERSION}-linux-amd64.tar.gz | |
sudo tar zxvf crictl-$CRICTL_VERSION-linux-amd64.tar.gz -C /usr/local/bin | |
# https://minikube.sigs.k8s.io/docs/faq/#how-do-i-install-containernetworking-plugins-for-none-driver | |
- name: Install container networking plugins | |
shell: bash | |
run: | | |
CNI_PLUGIN_VERSION="v1.5.1" | |
CNI_PLUGIN_TAR="cni-plugins-linux-amd64-$CNI_PLUGIN_VERSION.tgz" # change arch if not on amd64 | |
CNI_PLUGIN_INSTALL_DIR="/opt/cni/bin" | |
curl -LO "https://github.com/containernetworking/plugins/releases/download/$CNI_PLUGIN_VERSION/$CNI_PLUGIN_TAR" | |
sudo mkdir -p "$CNI_PLUGIN_INSTALL_DIR" | |
sudo tar -xf "$CNI_PLUGIN_TAR" -C "$CNI_PLUGIN_INSTALL_DIR" | |
rm "$CNI_PLUGIN_TAR" | |
- name: Install gopogh | |
shell: bash | |
run: | | |
go install github.com/medyagh/gopogh/cmd/[email protected] | |
- name: Set fs.protected_regular | |
shell: bash | |
run: | | |
sudo sysctl fs.protected_regular=0 | |
- name: Download Binaries | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: minikube_binaries | |
path: minikube_binaries | |
- name: Run Integration Test | |
continue-on-error: true | |
# bash {0} to allow test to continue to next step. in case of | |
shell: bash {0} | |
run: | | |
cd minikube_binaries | |
mkdir -p report | |
mkdir -p testhome | |
chmod a+x e2e-* | |
chmod a+x minikube-* | |
MINIKUBE_HOME=$(pwd)/testhome ./minikube-linux-amd64 delete --all --purge | |
START_TIME=$(date -u +%s) | |
KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args="--driver=none" -test.timeout=10m -test.v -timeout-multiplier=1.5 -test.run TestFunctional -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt | |
END_TIME=$(date -u +%s) | |
TIME_ELAPSED=$(($END_TIME-$START_TIME)) | |
min=$((${TIME_ELAPSED}/60)) | |
sec=$((${TIME_ELAPSED}%60)) | |
TIME_ELAPSED="${min} min $sec seconds " | |
echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV | |
- name: Generate HTML Report | |
shell: bash | |
run: | | |
cd minikube_binaries | |
export PATH=${PATH}:`go env GOPATH`/bin | |
go tool test2json -t < ./report/testout.txt > ./report/testout.json || true | |
STAT=$(gopogh -in ./report/testout.json -out_html ./report/testout.html -out_summary ./report/testout_summary.json -name "${JOB_NAME} ${GITHUB_REF}" -repo "${GITHUB_REPOSITORY}" -details "${GITHUB_SHA}") || true | |
echo status: ${STAT} | |
FailNum=$(echo $STAT | jq '.NumberOfFail') | |
TestsNum=$(echo $STAT | jq '.NumberOfTests') | |
GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" | |
echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV | |
echo 'STAT<<EOF' >> $GITHUB_ENV | |
echo "${STAT}" >> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: functional_baremetal_ubuntu22_04 | |
path: minikube_binaries/report | |
- name: The End Result functional_baremetal_ubuntu22_04 | |
shell: bash | |
run: | | |
echo ${GOPOGH_RESULT} | |
numFail=$(echo $STAT | jq '.NumberOfFail') | |
numPass=$(echo $STAT | jq '.NumberOfPass') | |
echo "*******************${numPass} Passes :) *******************" | |
echo $STAT | jq '.PassedTests' || true | |
echo "*******************************************************" | |
echo "---------------- ${numFail} Failures :( ----------------------------" | |
echo $STAT | jq '.FailedTests' || true | |
echo "-------------------------------------------------------" | |
if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi | |
if [ "$numPass" -lt 26 ];then echo "*** Failed to pass at least 26 ! ***";exit 2;fi | |
if [ "$numPass" -eq 0 ];then echo "*** Passed! ***";exit 0;fi | |
# After all integration tests finished | |
# collect all the reports and upload them | |
upload_all_reports: | |
permissions: | |
contents: none | |
if: always() | |
needs: | |
[ | |
functional_docker_ubuntu, | |
functional_docker_containerd_ubuntu, | |
functional_docker_rootless_containerd_ubuntu, | |
functional_podman_ubuntu, | |
functional_baremetal_ubuntu22_04, | |
] | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: download all reports | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
- name: upload all reports | |
shell: bash {0} | |
continue-on-error: true | |
run: | | |
mkdir -p all_reports | |
ls -lah | |
cp -r ./functional_docker_ubuntu ./all_reports/ | |
cp -r ./functional_docker_containerd_ubuntu ./all_reports/ | |
cp -r ./functional_docker_rootless_containerd_ubuntu ./all_reports/ | |
cp -r ./functional_podman_ubuntu ./all_reports/ | |
cp -r ./functional_baremetal_ubuntu22_04 ./all_reports/ | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: all_reports | |
path: all_reports |