Loading .gitlab-ci.yml +2 −0 Changes for .gitlab-ci.yml: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -101,6 +101,8 @@ stages: - gitlabci-local -c ./tests/environment/.gitlab-ci.yml -v ./:/opt -w /opt/ 'Job 2' - gitlabci-local -c ./tests/entrypoints/.gitlab-ci.yml -d - gitlabci-local -c ./tests/entrypoints/.gitlab-ci.yml -p - gitlabci-local -c ./tests/retry/.gitlab-ci.yml -p failure && exit 1 || true - gitlabci-local -c ./tests/retry/.gitlab-ci.yml -p success 'Deploy Test': stage: deploy Loading gitlabci_local/parser.py +11 −1 Changes for gitlabci_local/parser.py: 11 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -189,11 +189,13 @@ def stager(options, job_name, job_data, global_values): job['name'] = job_name job['stage'] = job_data['stage'] job['image'] = global_values['image'] job['entrypoint'] = global_values['entrypoint'][:] if global_values['entrypoint'] else None job['entrypoint'] = global_values['entrypoint'][:] if global_values[ 'entrypoint'] else None job['variables'] = dict(global_values['variables']) job['before_script'] = global_values['before_script'][:] job['script'] = [] job['after_script'] = global_values['after_script'][:] job['retry'] = 0 job['when'] = 'on_success' job['tags'] = [] Loading Loading @@ -226,6 +228,14 @@ def stager(options, job_name, job_data, global_values): if 'after_script' in job_data and job_data['after_script']: job['after_script'] = job_data['after_script'][:] # Extract job retry if 'retry' in job_data: retry_data = job_data['retry'] if isinstance(retry_data, dict): job['retry'] = int(retry_data['max']) else: job['retry'] = int(retry_data) # Extract job when if 'when' in job_data and job_data['when'] in [ 'on_success', 'on_failure', 'always', 'manual' Loading gitlabci_local/runner.py +8 −0 Changes for gitlabci_local/runner.py: 8 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -40,8 +40,16 @@ def launcher(options, jobs): result = True # Run job attempt = 0 expected = result result = runner(options, jobs[job], result) # Retry job if allowed if expected and not result and jobs[job]['retry'] > 0: while not result and attempt < jobs[job]['retry']: attempt += 1 result = runner(options, jobs[job], expected) # Result return True if result else False Loading tests/retry/.gitignore 0 → 100644 +2 −0 Changes for tests/retry/.gitignore: 2 added lines, 0 removed lines. Original line number Diff line number Diff line # Intermediates retry.tmp tests/retry/.gitlab-ci.yml 0 → 100644 +48 −0 Changes for tests/retry/.gitlab-ci.yml: 48 added lines, 0 removed lines. Original line number Diff line number Diff line image: alpine:3 stages: - failure - success 'Job 1': stage: failure script: - echo 'Job 1' - echo '1' >./retry.tmp - 'false' retry: 0 'Job 2': stage: success script: - echo 'Job 2' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '3' ./retry.tmp retry: 1 'Job 3': stage: success script: - echo 'Job 3' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '6' ./retry.tmp retry: 2 'Job 4': stage: success script: - echo 'Job 4' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '9' ./retry.tmp retry: max: 2 when: - runner_system_failure - stuck_or_timeout_failure 'Job 5': stage: success script: - echo 'Job 5' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '10' ./retry.tmp Loading
.gitlab-ci.yml +2 −0 Changes for .gitlab-ci.yml: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -101,6 +101,8 @@ stages: - gitlabci-local -c ./tests/environment/.gitlab-ci.yml -v ./:/opt -w /opt/ 'Job 2' - gitlabci-local -c ./tests/entrypoints/.gitlab-ci.yml -d - gitlabci-local -c ./tests/entrypoints/.gitlab-ci.yml -p - gitlabci-local -c ./tests/retry/.gitlab-ci.yml -p failure && exit 1 || true - gitlabci-local -c ./tests/retry/.gitlab-ci.yml -p success 'Deploy Test': stage: deploy Loading
gitlabci_local/parser.py +11 −1 Changes for gitlabci_local/parser.py: 11 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -189,11 +189,13 @@ def stager(options, job_name, job_data, global_values): job['name'] = job_name job['stage'] = job_data['stage'] job['image'] = global_values['image'] job['entrypoint'] = global_values['entrypoint'][:] if global_values['entrypoint'] else None job['entrypoint'] = global_values['entrypoint'][:] if global_values[ 'entrypoint'] else None job['variables'] = dict(global_values['variables']) job['before_script'] = global_values['before_script'][:] job['script'] = [] job['after_script'] = global_values['after_script'][:] job['retry'] = 0 job['when'] = 'on_success' job['tags'] = [] Loading Loading @@ -226,6 +228,14 @@ def stager(options, job_name, job_data, global_values): if 'after_script' in job_data and job_data['after_script']: job['after_script'] = job_data['after_script'][:] # Extract job retry if 'retry' in job_data: retry_data = job_data['retry'] if isinstance(retry_data, dict): job['retry'] = int(retry_data['max']) else: job['retry'] = int(retry_data) # Extract job when if 'when' in job_data and job_data['when'] in [ 'on_success', 'on_failure', 'always', 'manual' Loading
gitlabci_local/runner.py +8 −0 Changes for gitlabci_local/runner.py: 8 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -40,8 +40,16 @@ def launcher(options, jobs): result = True # Run job attempt = 0 expected = result result = runner(options, jobs[job], result) # Retry job if allowed if expected and not result and jobs[job]['retry'] > 0: while not result and attempt < jobs[job]['retry']: attempt += 1 result = runner(options, jobs[job], expected) # Result return True if result else False Loading
tests/retry/.gitignore 0 → 100644 +2 −0 Changes for tests/retry/.gitignore: 2 added lines, 0 removed lines. Original line number Diff line number Diff line # Intermediates retry.tmp
tests/retry/.gitlab-ci.yml 0 → 100644 +48 −0 Changes for tests/retry/.gitlab-ci.yml: 48 added lines, 0 removed lines. Original line number Diff line number Diff line image: alpine:3 stages: - failure - success 'Job 1': stage: failure script: - echo 'Job 1' - echo '1' >./retry.tmp - 'false' retry: 0 'Job 2': stage: success script: - echo 'Job 2' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '3' ./retry.tmp retry: 1 'Job 3': stage: success script: - echo 'Job 3' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '6' ./retry.tmp retry: 2 'Job 4': stage: success script: - echo 'Job 4' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '9' ./retry.tmp retry: max: 2 when: - runner_system_failure - stuck_or_timeout_failure 'Job 5': stage: success script: - echo 'Job 5' - echo $(($(cat ./retry.tmp) + 1)) >./retry.tmp - grep '10' ./retry.tmp