refactor(runner): ability to opt-out of using --ephemeral / opt-in to legacy --once for GHES older than 3.3 (#1384)
* runner: Remove the ability to use the deprecated `--once` flag Ref #1196 * runner: Ability to opt-out of using --ephemeral Although we are going to eventually remove the ability to use the legacy --once flag as proposed in #1196, there might be folks still using legacy GHES versions 3.2 or earlier. This commit removes the existing feature flag to opt-in for --ephemeral, while adding another feature flag RUNNER_FEATURE_FLAG_ONCE to opt-in for --once so that folks stuck in legacy GHES versions can still use ARC. Since this change every user starts using --ephemeral by default. If they see any issues on legacy GHES instance, RUNNER_FEATURE_FLAG_ONCE=true can be set to opt-in to keep using --once, which gives one more ARC release until they upgrade their GHES instance. But beware, we won't support legacy GHES instances forever as it's going to be a maintenance nightmare. Please upgrade! Ref #1196
This commit is contained in:
parent
800d6bd586
commit
c1e5829b03
|
|
@ -1311,12 +1311,11 @@ spec:
|
||||||
# Disables automatic runner updates
|
# Disables automatic runner updates
|
||||||
- name: DISABLE_RUNNER_UPDATE
|
- name: DISABLE_RUNNER_UPDATE
|
||||||
value: "true"
|
value: "true"
|
||||||
# Configure runner with --ephemeral instead of --once flag
|
# Configure runner with legacy --once instead of --ephemeral flag
|
||||||
# WARNING | THIS ENV VAR IS DEPRECATED AND WILL BE REMOVED
|
# WARNING | THIS ENV VAR IS DEPRECATED AND WILL BE REMOVED
|
||||||
# IN A FUTURE VERSION OF ARC. IN 0.22.0 ARC SETS --ephemeral VIA
|
# IN A FUTURE VERSION OF ARC.
|
||||||
# THE CONTROLLER SETTING THIS ENV VAR ON POD CREATION.
|
|
||||||
# THIS ENV VAR WILL BE REMOVED, SEE ISSUE #1196 FOR DETAILS
|
# THIS ENV VAR WILL BE REMOVED, SEE ISSUE #1196 FOR DETAILS
|
||||||
- name: RUNNER_FEATURE_FLAG_EPHEMERAL
|
- name: RUNNER_FEATURE_FLAG_ONCE
|
||||||
value: "true"
|
value: "true"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ cd ${RUNNER_HOME}
|
||||||
# past that point, it's all relative pathes from /runner
|
# past that point, it's all relative pathes from /runner
|
||||||
|
|
||||||
config_args=()
|
config_args=()
|
||||||
if [ "${RUNNER_FEATURE_FLAG_EPHEMERAL:-}" == "true" -a "${RUNNER_EPHEMERAL}" == "true" ]; then
|
if [ "${RUNNER_FEATURE_FLAG_ONCE:-}" != "true" -a "${RUNNER_EPHEMERAL}" == "true" ]; then
|
||||||
config_args+=(--ephemeral)
|
config_args+=(--ephemeral)
|
||||||
log.debug 'Passing --ephemeral to config.sh to enable the ephemeral runner.'
|
log.debug 'Passing --ephemeral to config.sh to enable the ephemeral runner.'
|
||||||
fi
|
fi
|
||||||
|
|
@ -141,10 +141,10 @@ if [ -z "${UNITTEST:-}" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
args=()
|
args=()
|
||||||
if [ "${RUNNER_FEATURE_FLAG_EPHEMERAL:-}" != "true" -a "${RUNNER_EPHEMERAL}" == "true" ]; then
|
if [ "${RUNNER_FEATURE_FLAG_ONCE:-}" == "true" -a "${RUNNER_EPHEMERAL}" == "true" ]; then
|
||||||
args+=(--once)
|
args+=(--once)
|
||||||
log.warning 'Passing --once is deprecated and will be removed as an option' \
|
log.warning 'Passing --once is deprecated and will be removed as an option' \
|
||||||
'from the image and actions-runner-controller at the release of 0.24.0.' \
|
'from the image and actions-runner-controller at the release of 0.25.0.' \
|
||||||
'Upgrade to GHES => 3.3 to continue using actions-runner-controller. If' \
|
'Upgrade to GHES => 3.3 to continue using actions-runner-controller. If' \
|
||||||
'you are using github.com ignore this warning.'
|
'you are using github.com ignore this warning.'
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -1,90 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# UNITTEST: should work legacy once switch set
|
|
||||||
# Will simulate a scenario where RUNNER_FEATURE_FLAG_EPHEMERAL=false. expects:
|
|
||||||
# - the configuration step to be run exactly once
|
|
||||||
# - the entrypoint script to exit with no error
|
|
||||||
# - the run.sh script to run with the --once flag
|
|
||||||
|
|
||||||
source ../assets/logging.sh
|
|
||||||
|
|
||||||
entrypoint_log() {
|
|
||||||
while read I; do
|
|
||||||
printf "\tentrypoint.sh: $I\n"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
log "Setting up test area"
|
|
||||||
export RUNNER_HOME=testarea
|
|
||||||
mkdir -p ${RUNNER_HOME}
|
|
||||||
|
|
||||||
log "Setting up the test"
|
|
||||||
export UNITTEST=true
|
|
||||||
export RUNNER_NAME="example_runner_name"
|
|
||||||
export RUNNER_REPO="myorg/myrepo"
|
|
||||||
export RUNNER_TOKEN="xxxxxxxxxxxxx"
|
|
||||||
export RUNNER_FEATURE_FLAG_EPHEMERAL="false"
|
|
||||||
export RUNNER_EPHEMERAL="true"
|
|
||||||
|
|
||||||
# run.sh and config.sh get used by the runner's real entrypoint.sh and are part of actions/runner.
|
|
||||||
# We change symlink dummy versions so the entrypoint.sh can run allowing us to test the real entrypoint.sh
|
|
||||||
log "Symlink dummy config.sh and run.sh"
|
|
||||||
ln -s ../../assets/config.sh ${RUNNER_HOME}/config.sh
|
|
||||||
ln -s ../../assets/run.sh ${RUNNER_HOME}/run.sh
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
rm -rf ${RUNNER_HOME}
|
|
||||||
unset UNITTEST
|
|
||||||
unset RUNNERHOME
|
|
||||||
unset RUNNER_NAME
|
|
||||||
unset RUNNER_REPO
|
|
||||||
unset RUNNER_TOKEN
|
|
||||||
unset RUNNER_EPHEMERAL
|
|
||||||
unset RUNNER_FEATURE_FLAG_EPHEMERAL
|
|
||||||
}
|
|
||||||
|
|
||||||
# Always run cleanup when test ends regardless of how it ends
|
|
||||||
trap cleanup SIGINT SIGTERM SIGQUIT EXIT
|
|
||||||
|
|
||||||
log "Running the entrypoint"
|
|
||||||
log ""
|
|
||||||
|
|
||||||
# run.sh and config.sh get used by the runner's real entrypoint.sh and are part of actions/runner.
|
|
||||||
# We change symlink dummy versions so the entrypoint.sh can run allowing us to test the real entrypoint.sh
|
|
||||||
../../../runner/entrypoint.sh 2> >(entrypoint_log)
|
|
||||||
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
error "==========================================="
|
|
||||||
error "FAIL | Entrypoint script did not exit successfully"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "Testing if we went through the configuration step only once"
|
|
||||||
count=`cat ${RUNNER_HOME}/counter || echo "not_found"`
|
|
||||||
if [ ${count} != "1" ]; then
|
|
||||||
error "==============================================="
|
|
||||||
error "FAIL | The configuration step was not run exactly once"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
success "PASS | The configuration ran ${count} time(s)"
|
|
||||||
|
|
||||||
log "Testing if the configuration included the --once flag"
|
|
||||||
if ! grep -q -- '--once' ${RUNNER_HOME}/runner_args; then
|
|
||||||
error "==============================================="
|
|
||||||
error "FAIL | The configuration did not include the --once flag, config printed below:"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
success "PASS | The --once argument was passed in"
|
|
||||||
|
|
||||||
log "Testing if run.sh ran"
|
|
||||||
if [ ! -f "${RUNNER_HOME}/run_sh_ran" ]; then
|
|
||||||
error "=============================="
|
|
||||||
error "FAIL | The runner service has not run"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
success "PASS | run.sh ran"
|
|
||||||
success ""
|
|
||||||
success "==========================="
|
|
||||||
success "Test completed successfully"
|
|
||||||
Loading…
Reference in New Issue