... #6
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: | |
push: | |
paths: | |
- "go.mod" | |
- "**.go" | |
- "**.yml" | |
- "**.yaml" | |
- "Makefile" | |
- "!deploy/kicbase/**" | |
- "!deploy/iso/**" | |
env: | |
GOPROXY: https://proxy.golang.org | |
GO_VERSION: '1.19.5' | |
permissions: | |
contents: read | |
jobs: | |
# Runs before all other jobs | |
# builds the minikube binaries | |
build_minikube: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c | |
- uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 | |
with: | |
go-version: ${{env.GO_VERSION}} | |
cache: true | |
cache-dependency-path: ./go.sum | |
- name: Download Dependencies | |
run: go mod download | |
- name: Build Binaries | |
run: | | |
make minikube-linux-amd64 | |
make e2e-linux-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@0b7f8abb1508181956e8e162db84b466c27e18ce | |
with: | |
name: minikube_binaries | |
path: out | |
lint: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c | |
- uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 | |
with: | |
go-version: ${{env.GO_VERSION}} | |
cache: true | |
cache-dependency-path: ./go.sum | |
- 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-20.04 | |
steps: | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c | |
- uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 | |
with: | |
go-version: ${{env.GO_VERSION}} | |
cache: true | |
cache-dependency-path: ./go.sum | |
- 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 | |
functional_baremetal_ubuntu20_04_containerd: | |
permissions: | |
contents: none | |
needs: [build_minikube] | |
env: | |
TIME_ELAPSED: time | |
JOB_NAME: "functional_baremetal_ubuntu20_04_containerd" | |
GOPOGH_RESULT: "" | |
SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Install kubectl | |
shell: bash | |
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" | |
sudo install kubectl /usr/local/bin/kubectl | |
kubectl version --client=true | |
- uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 | |
with: | |
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 | |
- name: Install tools for none | |
shell: bash | |
run: | | |
sudo apt-get update -qq | |
sudo apt-get -qq -y install conntrack | |
sudo apt-get -qq -y install socat | |
sudo apt-get -qq -y install runc | |
CRICTL_VERSION="v1.17.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 | |
CNI_PLUGIN_VERSION="v1.3.0" | |
CNI_PLUGIN_TAR="cni-plugins-linux-amd64-$CNI_PLUGIN_VERSION.tgz" | |
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" | |
CONTAINERD_VERSION="1.7.2" | |
CONTAINERD_OS="linux" | |
CONTAINERD_ARCH="amd64" | |
CONTAINERD_INSTALL_DIR="/usr/local" | |
curl -L https://github.com/containerd/containerd/releases/download/v$CONTAINERD_VERSION/containerd-$CONTAINERD_VERSION-$CONTAINERD_OS-$CONTAINERD_ARCH.tar.gz --output containerd-$CONTAINERD_VERSION-$CONTAINERD_OS-$CONTAINERD_ARCH.tar.gz | |
sudo tar -xf containerd-$CONTAINERD_VERSION-$CONTAINERD_OS-$CONTAINERD_ARCH.tar.gz -C $CONTAINERD_INSTALL_DIR | |
curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service --output /etc/systemd/system/containerd.service | |
systemctl daemon-reload | |
sudo mkdir /etc/containerd | |
cat <<EOF | sudo tee /etc/containerd/config.toml | |
version = 2 | |
root = "/var/lib/containerd" | |
state = "/run/containerd" | |
oom_score = 0 | |
EOF | |
sudo systemctl enable --now containerd.service | |
- name: Install gopogh | |
shell: bash | |
run: | | |
curl -LO https://github.com/medyagh/gopogh/releases/download/v0.13.0/gopogh-linux-amd64 | |
sudo install gopogh-linux-amd64 /usr/local/bin/gopogh | |
- name: Set fs.protected_regular | |
shell: bash | |
run: | | |
sudo sysctl fs.protected_regular=0 | |
- name: Download Binaries | |
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a | |
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 sudo -E ./e2e-linux-amd64 -minikube-start-args=--driver=none --container-runtime=containerd -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@0b7f8abb1508181956e8e162db84b466c27e18ce | |
with: | |
name: functional_baremetal_ubuntu20_04 | |
path: minikube_binaries/report | |
- name: The End Result functional_baremetal_ubuntu20_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 |