mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-10 19:50:30 +00:00
* feat: RunnerSet backed by StatefulSet Unlike a runner deployment, a runner set can manage a set of stateful runners by combining a statefulset and an admission webhook that mutates statefulset-managed pods with required envvars and registration tokens. Resolves #613 Ref #612 * Upgrade controller-runtime to 0.9.0 * Bump Go to 1.16.x following controller-runtime 0.9.0 * Upgrade kubebuilder to 2.3.2 for updated etcd and apiserver following local setup * Fix startup failure due to missing LeaderElectionID * Fix the issue that any pods become unable to start once actions-runner-controller got failed after the mutating webhook has been registered * Allow force-updating statefulset * Fix runner container missing work and certs-client volume mounts and DOCKER_HOST and DOCKER_TLS_VERIFY envvars when dockerdWithinRunner=false * Fix runnerset-controller not applying statefulset.spec.template.spec changes when there were no changes in runnerset spec * Enable running acceptance tests against arbitrary kind cluster * RunnerSet supports non-ephemeral runners only today * fix: docker-build from root Makefile on intel mac * fix: arch check fixes for mac and ARM * ci: aligning test data format and patching checks * fix: removing namespace in test data * chore: adding more ignores * chore: removing leading space in shebang * Re-add metrics to org hra testdata * Bump cert-manager to v1.1.1 and fix deploy.sh Co-authored-by: toast-gear <15716903+toast-gear@users.noreply.github.com> Co-authored-by: Callum James Tait <callum.tait@photobox.com>
84 lines
2.9 KiB
Bash
Executable File
84 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set +e
|
|
|
|
repo_runnerdeployment_passed="skipped"
|
|
repo_runnerset_passed="skipped"
|
|
|
|
echo "Checking if RunnerDeployment repo test is set"
|
|
if [ "${TEST_REPO}" ] && [ ! "${USE_RUNNERSET}" ]; then
|
|
runner_name=
|
|
count=0
|
|
while [ $count -le 30 ]; do
|
|
echo "Finding Runner ..."
|
|
runner_name=$(kubectl get runner --output=jsonpath="{.items[*].metadata.name}")
|
|
if [ "${runner_name}" ]; then
|
|
while [ $count -le 30 ]; do
|
|
runner_pod_name=
|
|
echo "Found Runner \""${runner_name}"\""
|
|
echo "Finding underlying pod ..."
|
|
runner_pod_name=$(kubectl get pod --output=jsonpath="{.items[*].metadata.name}" | grep ${runner_name})
|
|
if [ "${runner_pod_name}" ]; then
|
|
echo "Found underlying pod \""${runner_pod_name}"\""
|
|
echo "Waiting for pod \""${runner_pod_name}"\" to become ready..."
|
|
kubectl wait pod/${runner_pod_name} --for condition=ready --timeout 270s
|
|
break 2
|
|
fi
|
|
sleep 1
|
|
let "count=count+1"
|
|
done
|
|
fi
|
|
sleep 1
|
|
let "count=count+1"
|
|
done
|
|
if [ $count -ge 30 ]; then
|
|
repo_runnerdeployment_passed=false
|
|
else
|
|
repo_runnerdeployment_passed=true
|
|
fi
|
|
echo "Checking if RunnerSet repo test is set"
|
|
elif [ "${TEST_REPO}" ] && [ "${USE_RUNNERSET}" ]; then
|
|
runnerset_name=
|
|
count=0
|
|
while [ $count -le 30 ]; do
|
|
echo "Finding RunnerSet ..."
|
|
runnerset_name=$(kubectl get runnerset --output=jsonpath="{.items[*].metadata.name}")
|
|
if [ "${runnerset_name}" ]; then
|
|
while [ $count -le 30 ]; do
|
|
runnerset_pod_name=
|
|
echo "Found RunnerSet \""${runnerset_name}"\""
|
|
echo "Finding underlying pod ..."
|
|
runnerset_pod_name=$(kubectl get pod --output=jsonpath="{.items[*].metadata.name}" | grep ${runnerset_name})
|
|
echo "BEFORE IF"
|
|
if [ "${runnerset_pod_name}" ]; then
|
|
echo "AFTER IF"
|
|
echo "Found underlying pod \""${runnerset_pod_name}"\""
|
|
echo "Waiting for pod \""${runnerset_pod_name}"\" to become ready..."
|
|
kubectl wait pod/${runnerset_pod_name} --for condition=ready --timeout 270s
|
|
break 2
|
|
fi
|
|
sleep 1
|
|
let "count=count+1"
|
|
done
|
|
fi
|
|
sleep 1
|
|
let "count=count+1"
|
|
done
|
|
if [ $count -ge 30 ]; then
|
|
repo_runnerset_passed=false
|
|
else
|
|
repo_runnerset_passed=true
|
|
fi
|
|
fi
|
|
|
|
if [ ${repo_runnerset_passed} == true ] || [ ${repo_runnerset_passed} == "skipped" ] && \
|
|
[ ${repo_runnerdeployment_passed} == true ] || [ ${repo_runnerdeployment_passed} == "skipped" ]; then
|
|
echo "INFO : All tests passed or skipped"
|
|
echo "RunnerSet Repo Test Status : ${repo_runnerset_passed}"
|
|
echo "RunnerDeployment Repo Test Status : ${repo_runnerdeployment_passed}"
|
|
else
|
|
echo "ERROR : Some tests failed"
|
|
echo "RunnerSet Repo Test Status : ${repo_runnerset_passed}"
|
|
echo "RunnerDeployment Repo Test Status : ${repo_runnerdeployment_passed}"
|
|
exit 1
|
|
fi |