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