mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-10 11:41:27 +00:00
Starting ARC v0.27.2, we've changed the `docker.sock` path from `/var/run/docker.sock` to `/var/run/docker/docker.sock`. That resulted in breaking some container-based actions due to the hard-coded `docker.sock` path in various places. Even `actions/runner` seem to use `/var/run/docker.sock` for building container-based actions and for service containers? Anyway, this fixes that by moving the sock file back to the previous location. Once this gets merged, users stuck at ARC v0.27.1, previously upgraded to 0.27.2 or 0.27.3 and reverted back to v0.27.1 due to #2519, should be able to upgrade to the upcoming v0.27.4. Resolves #2519 Resolves #2538
131 lines
5.5 KiB
Bash
Executable File
131 lines
5.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
tpe=${ACCEPTANCE_TEST_SECRET_TYPE}
|
|
|
|
VALUES_FILE=${VALUES_FILE:-$(dirname $0)/values.yaml}
|
|
|
|
kubectl delete secret -n actions-runner-system controller-manager || :
|
|
|
|
if [ "${tpe}" == "token" ]; then
|
|
if ! kubectl get secret controller-manager -n actions-runner-system >/dev/null; then
|
|
kubectl create secret generic controller-manager \
|
|
-n actions-runner-system \
|
|
--from-literal=github_token=${GITHUB_TOKEN:?GITHUB_TOKEN must not be empty}
|
|
fi
|
|
elif [ "${tpe}" == "app" ]; then
|
|
kubectl create secret generic controller-manager \
|
|
-n actions-runner-system \
|
|
--from-literal=github_app_id=${APP_ID:?must not be empty} \
|
|
--from-literal=github_app_installation_id=${APP_INSTALLATION_ID:?must not be empty} \
|
|
--from-file=github_app_private_key=${APP_PRIVATE_KEY_FILE:?must not be empty}
|
|
else
|
|
echo "ACCEPTANCE_TEST_SECRET_TYPE must be set to either \"token\" or \"app\"" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "${WEBHOOK_GITHUB_TOKEN}" ]; then
|
|
kubectl -n actions-runner-system delete secret \
|
|
github-webhook-server || :
|
|
kubectl -n actions-runner-system create secret generic \
|
|
github-webhook-server \
|
|
--from-literal=github_token=${WEBHOOK_GITHUB_TOKEN:?WEBHOOK_GITHUB_TOKEN must not be empty}
|
|
else
|
|
echo 'Skipped deploying secret "github-webhook-server". Set WEBHOOK_GITHUB_TOKEN to deploy.' 1>&2
|
|
fi
|
|
|
|
if [ -n "${WEBHOOK_GITHUB_TOKEN}" ] && [ -z "${CREATE_SECRETS_USING_HELM}" ]; then
|
|
kubectl -n actions-runner-system delete secret \
|
|
actions-metrics-server || :
|
|
kubectl -n actions-runner-system create secret generic \
|
|
actions-metrics-server \
|
|
--from-literal=github_token=${WEBHOOK_GITHUB_TOKEN:?WEBHOOK_GITHUB_TOKEN must not be empty}
|
|
else
|
|
echo 'Skipped deploying secret "actions-metrics-server". Set WEBHOOK_GITHUB_TOKEN to deploy.' 1>&2
|
|
fi
|
|
|
|
tool=${ACCEPTANCE_TEST_DEPLOYMENT_TOOL}
|
|
|
|
TEST_ID=${TEST_ID:-default}
|
|
|
|
if [ "${tool}" == "helm" ]; then
|
|
set -v
|
|
|
|
CHART=${CHART:-charts/actions-runner-controller}
|
|
|
|
flags=()
|
|
if [ "${IMAGE_PULL_SECRET}" != "" ]; then
|
|
flags+=( --set imagePullSecrets[0].name=${IMAGE_PULL_SECRET})
|
|
flags+=( --set image.actionsRunnerImagePullSecrets[0].name=${IMAGE_PULL_SECRET})
|
|
flags+=( --set githubWebhookServer.imagePullSecrets[0].name=${IMAGE_PULL_SECRET})
|
|
flags+=( --set actionsMetricsServer.imagePullSecrets[0].name=${IMAGE_PULL_SECRET})
|
|
fi
|
|
if [ "${WATCH_NAMESPACE}" != "" ]; then
|
|
flags+=( --set watchNamespace=${WATCH_NAMESPACE} --set singleNamespace=true)
|
|
fi
|
|
if [ "${CHART_VERSION}" != "" ]; then
|
|
flags+=( --version ${CHART_VERSION})
|
|
fi
|
|
if [ "${LOG_FORMAT}" != "" ]; then
|
|
flags+=( --set logFormat=${LOG_FORMAT})
|
|
flags+=( --set githubWebhookServer.logFormat=${LOG_FORMAT})
|
|
flags+=( --set actionsMetricsServer.logFormat=${LOG_FORMAT})
|
|
fi
|
|
if [ "${ADMISSION_WEBHOOKS_TIMEOUT}" != "" ]; then
|
|
flags+=( --set admissionWebHooks.timeoutSeconds=${ADMISSION_WEBHOOKS_TIMEOUT})
|
|
fi
|
|
if [ -n "${CREATE_SECRETS_USING_HELM}" ]; then
|
|
if [ -z "${WEBHOOK_GITHUB_TOKEN}" ]; then
|
|
echo 'Failed deploying secret "actions-metrics-server" using helm. Set WEBHOOK_GITHUB_TOKEN to deploy.' 1>&2
|
|
exit 1
|
|
fi
|
|
flags+=( --set actionsMetricsServer.secret.create=true)
|
|
flags+=( --set actionsMetricsServer.secret.github_token=${WEBHOOK_GITHUB_TOKEN})
|
|
fi
|
|
if [ -n "${GITHUB_WEBHOOK_SERVER_ENV_NAME}" ] && [ -n "${GITHUB_WEBHOOK_SERVER_ENV_VALUE}" ]; then
|
|
flags+=( --set githubWebhookServer.env[0].name=${GITHUB_WEBHOOK_SERVER_ENV_NAME})
|
|
flags+=( --set githubWebhookServer.env[0].value=${GITHUB_WEBHOOK_SERVER_ENV_VALUE})
|
|
fi
|
|
|
|
set -vx
|
|
|
|
helm upgrade --install actions-runner-controller \
|
|
${CHART} \
|
|
-n actions-runner-system \
|
|
--create-namespace \
|
|
--set syncPeriod=${SYNC_PERIOD} \
|
|
--set authSecret.create=false \
|
|
--set image.repository=${NAME} \
|
|
--set image.tag=${VERSION} \
|
|
--set podAnnotations.test-id=${TEST_ID} \
|
|
--set githubWebhookServer.podAnnotations.test-id=${TEST_ID} \
|
|
--set actionsMetricsServer.podAnnotations.test-id=${TEST_ID} \
|
|
${flags[@]} --set image.imagePullPolicy=${IMAGE_PULL_POLICY} \
|
|
--set image.dindSidecarRepositoryAndTag=${DIND_SIDECAR_REPOSITORY_AND_TAG} \
|
|
-f ${VALUES_FILE}
|
|
set +v
|
|
# To prevent `CustomResourceDefinition.apiextensions.k8s.io "runners.actions.summerwind.dev" is invalid: metadata.annotations: Too long: must have at most 262144 bytes`
|
|
# errors
|
|
kubectl create -f charts/actions-runner-controller/crds || kubectl replace -f charts/actions-runner-controller/crds
|
|
# This wait fails due to timeout when it's already in crashloopback and this update doesn't change the image tag.
|
|
# That's why we add `|| :`. With that we prevent stopping the script in case of timeout and
|
|
# proceed to delete (possibly in crashloopback and/or running with outdated image) pods so that they are recreated by K8s.
|
|
kubectl -n actions-runner-system wait deploy/actions-runner-controller --for condition=available --timeout 60s || :
|
|
else
|
|
kubectl apply \
|
|
-n actions-runner-system \
|
|
-f release/actions-runner-controller.yaml
|
|
kubectl -n actions-runner-system wait deploy/controller-manager --for condition=available --timeout 120s || :
|
|
fi
|
|
|
|
# Restart all ARC pods
|
|
kubectl -n actions-runner-system delete po -l app.kubernetes.io/name=actions-runner-controller
|
|
|
|
echo Waiting for all ARC pods to be up and running after restart
|
|
|
|
kubectl -n actions-runner-system wait deploy/actions-runner-controller --for condition=available --timeout 120s
|
|
|
|
# Adhocly wait for some time until actions-runner-controller's admission webhook gets ready
|
|
sleep 20
|