Copy disabled (too large)
Download .txt
Showing preview only (12,819K chars total). Download the full file to get everything.
Repository: gitlabhq/gitlab-runner
Branch: main
Commit: 4e9786fae886
Files: 1203
Total size: 11.6 MB
Directory structure:
gitextract_595h71_a/
├── .dockerignore
├── .editorconfig
├── .flaky-tests.txt
├── .gitattributes
├── .gitignore
├── .gitlab/
│ ├── .argo/
│ │ └── mr_template_doc_ai.md
│ ├── CODEOWNERS
│ ├── changelog.yml
│ ├── ci/
│ │ ├── _common.gitlab-ci.yml
│ │ ├── _kubernetes.gitlab-ci.yml
│ │ ├── _project_canonical.gitlab-ci.yml
│ │ ├── _project_fork.gitlab-ci.yml
│ │ ├── _rules.gitlab-ci.yml
│ │ ├── build.gitlab-ci.yml
│ │ ├── coverage.gitlab-ci.yml
│ │ ├── deploy.gitlab-ci.yml
│ │ ├── docs.gitlab-ci.yml
│ │ ├── hosted-runners-bridge.gitlab-ci.yml
│ │ ├── package.gitlab-ci.yml
│ │ ├── postrelease.gitlab-ci.yml
│ │ ├── prepare.gitlab-ci.yml
│ │ ├── qa.gitlab-ci.yml
│ │ ├── rebase.gitlab-ci.yml
│ │ ├── release.gitlab-ci.yml
│ │ ├── test-kubernetes-integration.gitlab-ci.yml
│ │ └── test.gitlab-ci.yml
│ ├── dependency_decisions.yml
│ ├── duo/
│ │ ├── agent-config.yml
│ │ └── mr-review-instructions.yaml
│ ├── issue_templates/
│ │ ├── Bug.md
│ │ ├── Default.md
│ │ ├── Documentation.md
│ │ ├── Feature Flag Cleanup.md
│ │ ├── Feature Flag Roll Out.md
│ │ ├── Feature Proposal.md
│ │ ├── Request for test infra feature toggle.md
│ │ ├── Security developer workflow.md
│ │ ├── bump-golang.md
│ │ ├── planning_issue.md
│ │ └── trainee-backend-maintainer.md
│ ├── merge.release.yml
│ ├── merge_request_templates/
│ │ ├── Default.md
│ │ ├── Documentation.md
│ │ └── Security Release.md
│ ├── renovate.json
│ └── route-map.yml
├── .gitlab-ci.yml
├── .golangci.yml
├── .labkit_logging_todo.yml
├── .markdownlint-cli2.yaml
├── .mockery.yaml
├── .tool-versions
├── .vale.ini
├── AGENTS.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dangerfile
├── LICENSE
├── Makefile
├── Makefile.build.mk
├── Makefile.runner_helper.mk
├── NOTICE
├── PROCESS.md
├── PROVENANCE.md
├── Procfile
├── README.md
├── VERSION
├── Vagrantfile
├── apps/
│ └── gitlab-runner-helper/
│ └── main.go
├── argo_translation.yml
├── cache/
│ ├── adapter.go
│ ├── adapter_test.go
│ ├── azure/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── azure.go
│ │ ├── azure_test.go
│ │ ├── credentials_resolver.go
│ │ ├── credentials_resolver_test.go
│ │ └── mocks.go
│ ├── cache.go
│ ├── cache_test.go
│ ├── cacheconfig/
│ │ ├── cacheconfig.go
│ │ └── cacheconfig_test.go
│ ├── cachekey/
│ │ ├── cachekey.go
│ │ └── cachekey_test.go
│ ├── credentials_adapter.go
│ ├── credentials_adapter_test.go
│ ├── gcs/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── credentials_resolver.go
│ │ ├── credentials_resolver_test.go
│ │ └── mocks.go
│ ├── gcsv2/
│ │ ├── adapter.go
│ │ └── adapter_test.go
│ ├── mocks.go
│ ├── s3/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── bucket_location_tripper.go
│ │ ├── credentials_adapter.go
│ │ ├── credentials_adapter_test.go
│ │ ├── minio.go
│ │ ├── minio_test.go
│ │ └── mocks.go
│ ├── s3v2/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── mocks.go
│ │ ├── s3.go
│ │ └── s3_test.go
│ └── test/
│ └── adapter.go
├── certs/
│ ├── README.md
│ ├── apple-developer-id-app-cert.cer
│ └── gitlab-inc-ssl-com.crt
├── ci/
│ ├── .test-failures.servercore1809.txt
│ ├── .test-failures.servercore21H2.txt
│ ├── prebuilt_helper_image
│ ├── release_dir
│ ├── release_s3
│ ├── rpm_verify_fips
│ ├── touch_git
│ ├── touch_git.ps1
│ └── version
├── commands/
│ ├── builds_helper.go
│ ├── builds_helper_integration_test.go
│ ├── builds_helper_test.go
│ ├── config.go
│ ├── config_unix.go
│ ├── config_windows.go
│ ├── constants.go
│ ├── fleeting/
│ │ ├── fleeting.go
│ │ └── fleeting_integration_test.go
│ ├── health_helper.go
│ ├── helpers/
│ │ ├── archive/
│ │ │ ├── archive.go
│ │ │ ├── archive_test.go
│ │ │ ├── fastzip/
│ │ │ │ ├── options_test.go
│ │ │ │ ├── zip_fastzip_archiver.go
│ │ │ │ └── zip_fastzip_extractor.go
│ │ │ ├── gziplegacy/
│ │ │ │ └── gzip_legacy_archiver.go
│ │ │ ├── mocks.go
│ │ │ ├── raw/
│ │ │ │ └── raw_archiver.go
│ │ │ ├── tarzstd/
│ │ │ │ ├── ops_unix.go
│ │ │ │ ├── ops_windows.go
│ │ │ │ ├── tarzstd_archiver.go
│ │ │ │ └── tarzstd_extractor.go
│ │ │ └── ziplegacy/
│ │ │ ├── zip_legacy_archiver.go
│ │ │ └── zip_legacy_extractor.go
│ │ ├── archiver.go
│ │ ├── archiver_test.go
│ │ ├── artifact_metadata.go
│ │ ├── artifact_metadata_test.go
│ │ ├── artifacts_downloader.go
│ │ ├── artifacts_downloader_test.go
│ │ ├── artifacts_test.go
│ │ ├── artifacts_uploader.go
│ │ ├── artifacts_uploader_integration_test.go
│ │ ├── artifacts_uploader_test.go
│ │ ├── cache_archiver.go
│ │ ├── cache_archiver_integration_test.go
│ │ ├── cache_archiver_test.go
│ │ ├── cache_client.go
│ │ ├── cache_defaults.go
│ │ ├── cache_defaults_test.go
│ │ ├── cache_env.go
│ │ ├── cache_env_test.go
│ │ ├── cache_extractor.go
│ │ ├── cache_extractor_test.go
│ │ ├── cache_init.go
│ │ ├── cache_init_integration_test.go
│ │ ├── cache_metadata.go
│ │ ├── cache_metadata_test.go
│ │ ├── file_archiver.go
│ │ ├── file_archiver_integration_test.go
│ │ ├── file_archiver_test.go
│ │ ├── health_check.go
│ │ ├── health_check_integration_test.go
│ │ ├── helpers_archiver_test.go
│ │ ├── helpers_cache_archiver_test.go
│ │ ├── internal/
│ │ │ └── store/
│ │ │ ├── store.go
│ │ │ ├── store_test.go
│ │ │ ├── store_unix.go
│ │ │ ├── store_unix_test.go
│ │ │ ├── store_windows.go
│ │ │ └── store_windows_test.go
│ │ ├── meter/
│ │ │ ├── formatters.go
│ │ │ ├── formatters_test.go
│ │ │ ├── meter.go
│ │ │ ├── reader.go
│ │ │ ├── reader_test.go
│ │ │ ├── writer.go
│ │ │ └── writer_test.go
│ │ ├── mocks.go
│ │ ├── proxy_exec.go
│ │ ├── proxy_exec_test.go
│ │ ├── read_logs.go
│ │ ├── read_logs_test.go
│ │ ├── retry_helper.go
│ │ ├── retry_helper_test.go
│ │ └── testdata/
│ │ └── test-artifacts/
│ │ ├── file-0
│ │ ├── file-1
│ │ ├── file-2
│ │ ├── file-3
│ │ └── file-4
│ ├── helpers_register_test.go
│ ├── internal/
│ │ └── configfile/
│ │ ├── configfile.go
│ │ ├── configfile_test.go
│ │ ├── metrics.go
│ │ ├── options.go
│ │ ├── system_id_state.go
│ │ ├── system_id_state_test.go
│ │ └── validation.go
│ ├── list.go
│ ├── mocks.go
│ ├── multi.go
│ ├── multi_test.go
│ ├── register.go
│ ├── register_integration_test.go
│ ├── register_test.go
│ ├── register_windows_test.go
│ ├── reset_token.go
│ ├── service.go
│ ├── service_darwin.go
│ ├── service_integration_test.go
│ ├── service_linux.go
│ ├── service_portable.go
│ ├── service_windows.go
│ ├── single.go
│ ├── single_test.go
│ ├── steps/
│ │ ├── steps.go
│ │ └── steps_test.go
│ ├── testdata/
│ │ ├── .runner_system_id
│ │ └── test-config.toml
│ ├── tracing.go
│ ├── tracing_test.go
│ ├── unregister.go
│ ├── unregister_test.go
│ ├── user_mode_warning.go
│ ├── verify.go
│ ├── wrapper.go
│ └── wrapper_test.go
├── common/
│ ├── allowed_images.go
│ ├── allowed_images_test.go
│ ├── build.go
│ ├── build_settings.go
│ ├── build_settings_test.go
│ ├── build_step_dispatch.go
│ ├── build_step_dispatch_test.go
│ ├── build_test.go
│ ├── buildlogger/
│ │ ├── build_logger.go
│ │ ├── build_logger_test.go
│ │ ├── internal/
│ │ │ ├── build_logger_fuzz.go
│ │ │ ├── masker/
│ │ │ │ ├── masker.go
│ │ │ │ └── masker_test.go
│ │ │ ├── nopcloser.go
│ │ │ ├── sync.go
│ │ │ ├── tee.go
│ │ │ ├── testdata/
│ │ │ │ └── corpus/
│ │ │ │ ├── ipsum
│ │ │ │ ├── log-1
│ │ │ │ ├── log-2
│ │ │ │ ├── log-3
│ │ │ │ ├── log-4
│ │ │ │ ├── log-5
│ │ │ │ └── small-random
│ │ │ ├── timestamper/
│ │ │ │ ├── timestamper.go
│ │ │ │ └── timestamper_test.go
│ │ │ ├── tokensanitizer/
│ │ │ │ ├── token_masker.go
│ │ │ │ └── token_masker_test.go
│ │ │ ├── unique.go
│ │ │ └── urlsanitizer/
│ │ │ ├── urlsanitizer.go
│ │ │ └── urlsanitizer_test.go
│ │ └── mocks.go
│ ├── buildtest/
│ │ ├── abort.go
│ │ ├── binary.go
│ │ ├── cleanup.go
│ │ ├── job_output_limit.go
│ │ ├── masking.go
│ │ ├── sections.go
│ │ ├── test.go
│ │ └── variables.go
│ ├── command.go
│ ├── config/
│ │ └── runner/
│ │ ├── monitoring/
│ │ │ ├── job_queuing_durations.go
│ │ │ └── job_queuing_durations_test.go
│ │ └── monitoring.go
│ ├── config.go
│ ├── config_log_options_test.go
│ ├── config_test.go
│ ├── consts.go
│ ├── executor.go
│ ├── executor_test.go
│ ├── exit_code.go
│ ├── exit_code_test.go
│ ├── failure_reason_mapper.go
│ ├── failure_reason_mapper_test.go
│ ├── labels.go
│ ├── mocks.go
│ ├── network.go
│ ├── network_test.go
│ ├── process_logger_adaptor.go
│ ├── reset_token.go
│ ├── secrets.go
│ ├── secrets_test.go
│ ├── shell.go
│ ├── spec/
│ │ ├── inputs.go
│ │ ├── inputs_metrics.go
│ │ ├── inputs_metrics_test.go
│ │ ├── inputs_test.go
│ │ ├── mocks.go
│ │ ├── spec.go
│ │ ├── spec_test.go
│ │ ├── variables.go
│ │ └── variables_test.go
│ ├── steps.go
│ ├── support.go
│ ├── test.go
│ ├── trace.go
│ ├── usage_log.go
│ └── version.go
├── config.toml.example
├── dockerfiles/
│ ├── runner/
│ │ ├── Dockerfile
│ │ └── docker-bake.hcl
│ └── runner-helper/
│ ├── Dockerfile
│ ├── Dockerfile.concrete
│ └── docker-bake.hcl
├── docs/
│ ├── .markdownlint/
│ │ ├── .markdownlint-cli2.yaml
│ │ └── rules/
│ │ └── unnecessary_traversal.js
│ ├── .vale/
│ │ ├── gitlab_base/
│ │ │ ├── Ability.yml
│ │ │ ├── AlertFormat.yml
│ │ │ ├── BadPlurals.yml
│ │ │ ├── British.yml
│ │ │ ├── CIConfigFile.yml
│ │ │ ├── CodeblockFences.yml
│ │ │ ├── CommandStringsQuoted.yml
│ │ │ ├── CurrentStatus.yml
│ │ │ ├── DefaultBranch.yml
│ │ │ ├── Dropdown.yml
│ │ │ ├── EOLWhitespace.yml
│ │ │ ├── ElementDescriptors.yml
│ │ │ ├── FutureTense.yml
│ │ │ ├── GitLabFlavoredMarkdown.yml
│ │ │ ├── HeadingContent.yml
│ │ │ ├── HeadingDepth.yml
│ │ │ ├── HeadingLink.yml
│ │ │ ├── InclusiveLanguage.yml
│ │ │ ├── LatinTerms.yml
│ │ │ ├── Level.yml
│ │ │ ├── ListIndentation.yml
│ │ │ ├── MeaningfulLinkWords.yml
│ │ │ ├── MergeConflictMarkers.yml
│ │ │ ├── MultiLineLinks.yml
│ │ │ ├── NonStandardHyphens.yml
│ │ │ ├── NonStandardListDashes.yml
│ │ │ ├── NonStandardQuotes.yml
│ │ │ ├── NonStandardSpaces.yml
│ │ │ ├── Offerings.yml
│ │ │ ├── OutdatedVersions.yml
│ │ │ ├── OxfordComma.yml
│ │ │ ├── Possessive.yml
│ │ │ ├── PossessiveProperNouns.yml
│ │ │ ├── Prerequisites.yml
│ │ │ ├── ReadingLevel.yml
│ │ │ ├── Repetition.yml
│ │ │ ├── SelfReferential.yml
│ │ │ ├── SentenceLength.yml
│ │ │ ├── SentenceSpacing.yml
│ │ │ ├── Simplicity.yml
│ │ │ ├── Spelling.yml
│ │ │ ├── SubstitutionWarning.yml
│ │ │ ├── Substitutions.yml
│ │ │ ├── TableDelimiterRows.yml
│ │ │ ├── ToDo.yml
│ │ │ ├── UnclearAntecedent.yml
│ │ │ ├── Units.yml
│ │ │ ├── Uppercase.yml
│ │ │ ├── WordSlashWord.yml
│ │ │ ├── Wordy.yml
│ │ │ ├── Zip.yml
│ │ │ └── spelling-exceptions.txt
│ │ ├── gitlab_docs/
│ │ │ ├── Badges-Offerings.yml
│ │ │ ├── Badges-Tiers.yml
│ │ │ ├── FrontMatter.yml
│ │ │ ├── HTMLShortcodes.yml
│ │ │ ├── HistoryItems.yml
│ │ │ ├── HistoryItemsOrder.yml
│ │ │ ├── ImagesOld.yml
│ │ │ ├── InternalLinkCase.yml
│ │ │ ├── InternalLinkExtension.yml
│ │ │ ├── InternalLinkFormat.yml
│ │ │ ├── InternalLinksCode.yml
│ │ │ ├── ReferenceLinks.yml
│ │ │ ├── RelativeLinks.yml
│ │ │ ├── ShortCodeFormat.yml
│ │ │ ├── ShortCodeSyntax.yml
│ │ │ ├── TabsLinks.yml
│ │ │ └── UIText.yml
│ │ ├── vale-json.tmpl
│ │ └── vale.tmpl
│ ├── _index.md
│ ├── commands/
│ │ └── _index.md
│ ├── configuration/
│ │ ├── _index.md
│ │ ├── advanced-configuration.md
│ │ ├── autoscale.md
│ │ ├── configuring_runner_operator.md
│ │ ├── feature-flags.md
│ │ ├── gpus.md
│ │ ├── init.md
│ │ ├── macos_setup.md
│ │ ├── oracle_cloud_performance.md
│ │ ├── proxy.md
│ │ ├── runner_autoscale_aws/
│ │ │ └── _index.md
│ │ ├── runner_autoscale_aws_fargate/
│ │ │ └── _index.md
│ │ ├── slot_based_cgroups.md
│ │ ├── speed_up_job_execution.md
│ │ └── tls-self-signed.md
│ ├── development/
│ │ ├── _index.md
│ │ ├── add-windows-version.md
│ │ ├── internal/
│ │ │ ├── ci/
│ │ │ │ ├── kubernetes_integration_tests.md
│ │ │ │ └── packages_iteration.md
│ │ │ └── engineering/
│ │ │ └── executor_interface/
│ │ │ └── _index.md
│ │ └── reviewing-gitlab-runner.md
│ ├── executors/
│ │ ├── _index.md
│ │ ├── custom.md
│ │ ├── custom_examples/
│ │ │ ├── libvirt.md
│ │ │ └── lxd.md
│ │ ├── docker.md
│ │ ├── docker_autoscaler.md
│ │ ├── docker_machine.md
│ │ ├── instance.md
│ │ ├── kubernetes/
│ │ │ ├── _index.md
│ │ │ ├── troubleshooting.md
│ │ │ └── use_podman_with_kubernetes.md
│ │ ├── parallels.md
│ │ ├── shell.md
│ │ ├── ssh.md
│ │ └── virtualbox.md
│ ├── faq/
│ │ └── _index.md
│ ├── fleet_scaling/
│ │ ├── _index.md
│ │ └── fleeting.md
│ ├── grit/
│ │ └── _index.md
│ ├── install/
│ │ ├── _index.md
│ │ ├── bleeding-edge.md
│ │ ├── docker.md
│ │ ├── environment_variables_in_helm_charts.md
│ │ ├── freebsd.md
│ │ ├── gpg-keys/
│ │ │ ├── 49F16C5CC3A0F81F.pub.gpg
│ │ │ ├── 9CE45ABC880721D4.pub.gpg
│ │ │ └── A674BF8135DFA027.pub.gpg
│ │ ├── kubernetes-agent.md
│ │ ├── kubernetes.md
│ │ ├── kubernetes_helm_chart_configuration.md
│ │ ├── kubernetes_troubleshooting.md
│ │ ├── linux-manually.md
│ │ ├── linux-repository.md
│ │ ├── operator.md
│ │ ├── osx.md
│ │ ├── requirements.md
│ │ ├── step-runner.md
│ │ ├── support-policy.md
│ │ ├── windows.md
│ │ └── z-os.md
│ ├── monitoring/
│ │ └── _index.md
│ ├── register/
│ │ └── _index.md
│ ├── runner_autoscale/
│ │ ├── _index.md
│ │ └── gitlab-runner-autoscaler.md
│ ├── security/
│ │ └── _index.md
│ └── shells/
│ └── _index.md
├── docs-locale/
│ ├── .markdownlint/
│ │ └── .markdownlint-cli2.yaml
│ └── ja-jp/
│ ├── _index.md
│ ├── commands/
│ │ └── _index.md
│ ├── configuration/
│ │ ├── _index.md
│ │ ├── advanced-configuration.md
│ │ ├── autoscale.md
│ │ ├── configuring_runner_operator.md
│ │ ├── feature-flags.md
│ │ ├── gpus.md
│ │ ├── init.md
│ │ ├── macos_setup.md
│ │ ├── oracle_cloud_performance.md
│ │ ├── proxy.md
│ │ ├── runner_autoscale_aws/
│ │ │ └── _index.md
│ │ ├── runner_autoscale_aws_fargate/
│ │ │ └── _index.md
│ │ ├── slot_based_cgroups.md
│ │ ├── speed_up_job_execution.md
│ │ └── tls-self-signed.md
│ ├── development/
│ │ ├── _index.md
│ │ ├── add-windows-version.md
│ │ ├── internal/
│ │ │ ├── ci/
│ │ │ │ └── packages_iteration.md
│ │ │ └── engineering/
│ │ │ └── executor_interface/
│ │ │ └── _index.md
│ │ └── reviewing-gitlab-runner.md
│ ├── executors/
│ │ ├── _index.md
│ │ ├── custom.md
│ │ ├── custom_examples/
│ │ │ ├── libvirt.md
│ │ │ └── lxd.md
│ │ ├── docker.md
│ │ ├── docker_autoscaler.md
│ │ ├── docker_machine.md
│ │ ├── instance.md
│ │ ├── kubernetes/
│ │ │ ├── _index.md
│ │ │ ├── troubleshooting.md
│ │ │ └── use_podman_with_kubernetes.md
│ │ ├── parallels.md
│ │ ├── shell.md
│ │ ├── ssh.md
│ │ └── virtualbox.md
│ ├── faq/
│ │ └── _index.md
│ ├── fleet_scaling/
│ │ ├── _index.md
│ │ └── fleeting.md
│ ├── grit/
│ │ └── _index.md
│ ├── install/
│ │ ├── _index.md
│ │ ├── bleeding-edge.md
│ │ ├── docker.md
│ │ ├── environment_variables_in_helm_charts.md
│ │ ├── freebsd.md
│ │ ├── kubernetes-agent.md
│ │ ├── kubernetes.md
│ │ ├── kubernetes_helm_chart_configuration.md
│ │ ├── kubernetes_troubleshooting.md
│ │ ├── linux-manually.md
│ │ ├── linux-repository.md
│ │ ├── operator.md
│ │ ├── osx.md
│ │ ├── requirements.md
│ │ ├── step-runner.md
│ │ ├── support-policy.md
│ │ ├── windows.md
│ │ └── z-os.md
│ ├── monitoring/
│ │ └── _index.md
│ ├── register/
│ │ └── _index.md
│ ├── runner_autoscale/
│ │ ├── _index.md
│ │ └── gitlab-runner-autoscaler.md
│ ├── security/
│ │ └── _index.md
│ └── shells/
│ └── _index.md
├── executors/
│ ├── abstract.go
│ ├── custom/
│ │ ├── api/
│ │ │ ├── config.go
│ │ │ └── const.go
│ │ ├── command/
│ │ │ ├── command.go
│ │ │ ├── command_test.go
│ │ │ ├── errors.go
│ │ │ └── mocks.go
│ │ ├── config.go
│ │ ├── config_test.go
│ │ ├── consts.go
│ │ ├── custom.go
│ │ ├── custom_test.go
│ │ ├── integration_test.go
│ │ ├── terminal.go
│ │ ├── terminal_test.go
│ │ └── testdata/
│ │ └── test_executor/
│ │ ├── .gitignore
│ │ └── main.go
│ ├── default_executor_provider.go
│ ├── docker/
│ │ ├── autoscaler/
│ │ │ ├── autoscaler.go
│ │ │ ├── autoscaler_integration_test.go
│ │ │ ├── autoscaler_integration_unix_test.go
│ │ │ └── autoscaler_integration_windows_test.go
│ │ ├── config_updater.go
│ │ ├── config_updater_test.go
│ │ ├── consts.go
│ │ ├── docker.go
│ │ ├── docker_command.go
│ │ ├── docker_command_integration_test.go
│ │ ├── docker_log_options_integration_test.go
│ │ ├── docker_steps_integration_test.go
│ │ ├── docker_test.go
│ │ ├── internal/
│ │ │ ├── exec/
│ │ │ │ ├── exec.go
│ │ │ │ ├── exec_test.go
│ │ │ │ └── mocks.go
│ │ │ ├── labels/
│ │ │ │ ├── labels.go
│ │ │ │ ├── labels_test.go
│ │ │ │ └── mocks.go
│ │ │ ├── networks/
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_integration_test.go
│ │ │ │ ├── manager_test.go
│ │ │ │ ├── mocks.go
│ │ │ │ └── utils.go
│ │ │ ├── omitwriter/
│ │ │ │ ├── omit_writer.go
│ │ │ │ └── omit_writer_test.go
│ │ │ ├── prebuilt/
│ │ │ │ └── prebuilt.go
│ │ │ ├── pull/
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_test.go
│ │ │ │ └── mocks.go
│ │ │ ├── user/
│ │ │ │ ├── mocks.go
│ │ │ │ ├── user.go
│ │ │ │ └── user_test.go
│ │ │ ├── volumes/
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_integration_test.go
│ │ │ │ ├── manager_integration_unix_test.go
│ │ │ │ ├── manager_integration_windows_test.go
│ │ │ │ ├── manager_test.go
│ │ │ │ ├── manager_windows_test.go
│ │ │ │ ├── mocks.go
│ │ │ │ ├── parser/
│ │ │ │ │ ├── base_parser.go
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── linux_parser.go
│ │ │ │ │ ├── linux_parser_test.go
│ │ │ │ │ ├── mocks.go
│ │ │ │ │ ├── parser.go
│ │ │ │ │ ├── volume.go
│ │ │ │ │ ├── volume_test.go
│ │ │ │ │ ├── windows_parser.go
│ │ │ │ │ ├── windows_parser_test.go
│ │ │ │ │ ├── windows_path.go
│ │ │ │ │ ├── windows_path_test.go
│ │ │ │ │ └── windows_path_windows.go
│ │ │ │ ├── permission/
│ │ │ │ │ ├── linux_set.go
│ │ │ │ │ ├── linux_set_integration_test.go
│ │ │ │ │ ├── linux_set_test.go
│ │ │ │ │ ├── mocks.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ └── windows_set.go
│ │ │ │ ├── utils.go
│ │ │ │ ├── utils_test.go
│ │ │ │ └── utils_windows_test.go
│ │ │ └── wait/
│ │ │ ├── mocks.go
│ │ │ ├── wait.go
│ │ │ └── wait_test.go
│ │ ├── labeler.go
│ │ ├── machine/
│ │ │ ├── collector.go
│ │ │ ├── collector_test.go
│ │ │ ├── consts.go
│ │ │ ├── coordinator.go
│ │ │ ├── coordinator_test.go
│ │ │ ├── data.go
│ │ │ ├── details.go
│ │ │ ├── details_test.go
│ │ │ ├── idle_limit_strategy.go
│ │ │ ├── idle_limit_strategy_test.go
│ │ │ ├── machine.go
│ │ │ ├── machine_test.go
│ │ │ ├── name.go
│ │ │ ├── name_test.go
│ │ │ ├── provider.go
│ │ │ ├── provider_test.go
│ │ │ ├── shutdown.go
│ │ │ ├── shutdown_test.go
│ │ │ └── state.go
│ │ ├── mocks.go
│ │ ├── network.go
│ │ ├── provider.go
│ │ ├── pull.go
│ │ ├── services.go
│ │ ├── services_test.go
│ │ ├── steps.go
│ │ ├── terminal.go
│ │ ├── terminal_integration_test.go
│ │ ├── terminal_test.go
│ │ ├── tty.go
│ │ └── volume.go
│ ├── environment.go
│ ├── executors.go
│ ├── init.go
│ ├── instance/
│ │ ├── instance.go
│ │ └── instance_integration_test.go
│ ├── internal/
│ │ ├── autoscaler/
│ │ │ ├── acquisition.go
│ │ │ ├── acquisition_test.go
│ │ │ ├── executor.go
│ │ │ ├── executor_test.go
│ │ │ ├── logger/
│ │ │ │ ├── logger.go
│ │ │ │ └── logger_test.go
│ │ │ ├── nesting_init.go
│ │ │ ├── nesting_init_test.go
│ │ │ ├── provider.go
│ │ │ └── provider_test.go
│ │ └── readywriter/
│ │ ├── readywriter.go
│ │ └── readywriter_test.go
│ ├── kubernetes/
│ │ ├── autoscaler/
│ │ │ ├── metrics.go
│ │ │ ├── pause_pod_manager.go
│ │ │ ├── pause_pod_manager_test.go
│ │ │ ├── policy.go
│ │ │ ├── policy_test.go
│ │ │ ├── provider.go
│ │ │ └── provider_test.go
│ │ ├── container_entrypoint_forwarder.go
│ │ ├── container_entrypoint_forwarder_test.go
│ │ ├── exec.go
│ │ ├── exec_test.go
│ │ ├── feature.go
│ │ ├── feature_test.go
│ │ ├── helpers_kubernetes_test.go
│ │ ├── host_aliases.go
│ │ ├── host_aliases_test.go
│ │ ├── internal/
│ │ │ ├── pull/
│ │ │ │ ├── errors.go
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_test.go
│ │ │ │ └── mocks.go
│ │ │ └── watchers/
│ │ │ ├── informer_factory.go
│ │ │ ├── mocks.go
│ │ │ ├── pod.go
│ │ │ ├── pod_integration_test.go
│ │ │ └── pod_test.go
│ │ ├── kubernetes.go
│ │ ├── kubernetes_integration_test.go
│ │ ├── kubernetes_test.go
│ │ ├── log_processor.go
│ │ ├── log_processor_test.go
│ │ ├── mocks.go
│ │ ├── overwrites.go
│ │ ├── overwrites_test.go
│ │ ├── provider.go
│ │ ├── service_proxy.go
│ │ ├── service_proxy_test.go
│ │ ├── terminal.go
│ │ ├── util.go
│ │ └── util_test.go
│ ├── mocks.go
│ ├── parallels/
│ │ ├── parallels.go
│ │ └── parallels_integration_test.go
│ ├── shell/
│ │ ├── shell.go
│ │ ├── shell_integration_test.go
│ │ ├── shell_terminal.go
│ │ └── shell_test.go
│ ├── ssh/
│ │ ├── ssh.go
│ │ └── ssh_test.go
│ ├── virtualbox/
│ │ ├── virtualbox.go
│ │ └── virtualbox_integration_test.go
│ └── vm/
│ ├── vm.go
│ └── vm_test.go
├── functions/
│ ├── concrete/
│ │ ├── builder/
│ │ │ ├── builder.go
│ │ │ ├── builder_test.go
│ │ │ ├── options.go
│ │ │ └── variables/
│ │ │ ├── mocks.go
│ │ │ ├── variables.go
│ │ │ └── variables_test.go
│ │ ├── concrete.go
│ │ └── run/
│ │ ├── cacheprovider/
│ │ │ └── descriptor.go
│ │ ├── env/
│ │ │ ├── env.go
│ │ │ └── env_test.go
│ │ ├── runner.go
│ │ ├── runner_test.go
│ │ └── stages/
│ │ ├── artifact_download.go
│ │ ├── artifact_upload.go
│ │ ├── cache_archive.go
│ │ ├── cache_extract.go
│ │ ├── cleanup.go
│ │ ├── get_sources.go
│ │ ├── get_sources_git_integration_test.go
│ │ ├── get_sources_test.go
│ │ ├── internal/
│ │ │ └── scriptwriter/
│ │ │ ├── scriptwriter.go
│ │ │ └── scriptwriter_test.go
│ │ ├── step.go
│ │ └── step_test.go
│ └── script_legacy/
│ ├── internal/
│ │ ├── command_formatter.go
│ │ ├── command_formatter_test.go
│ │ ├── command_processor.go
│ │ ├── command_processor_test.go
│ │ ├── escape.go
│ │ ├── escape_test.go
│ │ ├── executor.go
│ │ ├── executor_test.go
│ │ ├── script_generator.go
│ │ ├── script_generator_test.go
│ │ ├── script_header.go
│ │ ├── script_header_test.go
│ │ ├── shell.go
│ │ ├── shell_test.go
│ │ ├── trace_section.go
│ │ └── trace_section_test.go
│ ├── script_legacy.go
│ └── script_legacy_test.go
├── go.mod
├── go.sum
├── helpers/
│ ├── ansi_colors.go
│ ├── archives/
│ │ ├── gzip_create.go
│ │ ├── gzip_create_test.go
│ │ ├── os_unix.go
│ │ ├── os_windows.go
│ │ ├── path_check_helper.go
│ │ ├── path_check_helper_test.go
│ │ ├── path_error_tracker.go
│ │ ├── path_error_tracker_test.go
│ │ ├── zip_create.go
│ │ ├── zip_create_test.go
│ │ ├── zip_create_unix_test.go
│ │ ├── zip_create_windows_test.go
│ │ ├── zip_extra.go
│ │ ├── zip_extra_test.go
│ │ ├── zip_extra_unix.go
│ │ ├── zip_extra_windows.go
│ │ ├── zip_extract.go
│ │ └── zip_extract_test.go
│ ├── aws/
│ │ └── service/
│ │ ├── aws_service.go
│ │ ├── aws_service_test.go
│ │ └── mocks.go
│ ├── azure_key_vault/
│ │ └── service/
│ │ ├── azure_key_vault.go
│ │ └── mocks.go
│ ├── build_section.go
│ ├── build_section_test.go
│ ├── certificate/
│ │ ├── certificate.go
│ │ ├── mocks.go
│ │ ├── x509.go
│ │ └── x509_test.go
│ ├── cli/
│ │ ├── cpuprofile.go
│ │ ├── fix_home.go
│ │ ├── init_cli.go
│ │ ├── init_cli_windows.go
│ │ ├── runtime_platform.go
│ │ ├── runtime_platform_test.go
│ │ └── warn_on_bool.go
│ ├── container/
│ │ ├── helperimage/
│ │ │ ├── info.go
│ │ │ ├── info_test.go
│ │ │ ├── linux_info.go
│ │ │ ├── linux_info_test.go
│ │ │ ├── mocks.go
│ │ │ ├── windows_info.go
│ │ │ └── windows_info_test.go
│ │ ├── services/
│ │ │ ├── services.go
│ │ │ ├── services_test.go
│ │ │ └── test/
│ │ │ └── test.go
│ │ └── windows/
│ │ ├── version.go
│ │ └── version_test.go
│ ├── converter.go
│ ├── converter_test.go
│ ├── dns/
│ │ ├── test/
│ │ │ └── test.go
│ │ ├── utils.go
│ │ └── utils_test.go
│ ├── docker/
│ │ ├── auth/
│ │ │ ├── auth.go
│ │ │ ├── auth_test.go
│ │ │ ├── mocks.go
│ │ │ └── testdata/
│ │ │ ├── docker-credential-bin.sh
│ │ │ └── docker-credential-windows.cmd
│ │ ├── client.go
│ │ ├── credentials.go
│ │ ├── errors/
│ │ │ └── errors.go
│ │ ├── machine.go
│ │ ├── machine_command.go
│ │ ├── machine_command_test.go
│ │ ├── mocks.go
│ │ ├── official_docker_client.go
│ │ ├── official_docker_client_test.go
│ │ ├── options.go
│ │ └── test/
│ │ └── error.go
│ ├── fatal_panic.go
│ ├── featureflags/
│ │ ├── flags.go
│ │ └── flags_test.go
│ ├── gcp_secret_manager/
│ │ └── service/
│ │ ├── gcp_secret_manager.go
│ │ └── gcp_secret_manager_test.go
│ ├── gitlab_secrets_manager/
│ │ └── service/
│ │ ├── gitlab_secrets_manager.go
│ │ └── gitlab_secrets_manager_test.go
│ ├── homedir/
│ │ ├── homedir.go
│ │ └── homedir_test.go
│ ├── integration_tests.go
│ ├── limitwriter/
│ │ ├── limit_writer.go
│ │ └── limit_writer_test.go
│ ├── mocks.go
│ ├── observability/
│ │ ├── multi_exporter.go
│ │ └── multi_exporter_test.go
│ ├── os/
│ │ ├── other.go
│ │ └── windows.go
│ ├── parallels/
│ │ └── control.go
│ ├── path/
│ │ ├── unix_path.go
│ │ ├── unix_path_test.go
│ │ ├── windows_path.go
│ │ └── windows_path_test.go
│ ├── path.go
│ ├── path_test.go
│ ├── process/
│ │ ├── commander.go
│ │ ├── commander_unix_test.go
│ │ ├── ensure_subprocess_termination_integration_test.go
│ │ ├── group_unix_test.go
│ │ ├── group_windows_test.go
│ │ ├── helpers_killer_test.go
│ │ ├── job_unix.go
│ │ ├── job_windows.go
│ │ ├── killer.go
│ │ ├── killer_integration_test.go
│ │ ├── killer_test.go
│ │ ├── killer_unix.go
│ │ ├── killer_unix_integration_test.go
│ │ ├── killer_unix_test.go
│ │ ├── killer_windows.go
│ │ ├── killer_windows_integration_test.go
│ │ ├── logger.go
│ │ ├── mocks.go
│ │ └── testdata/
│ │ ├── ensure_subprocess_termination/
│ │ │ └── main.go
│ │ └── sleep/
│ │ └── main.go
│ ├── prometheus/
│ │ ├── failures_collector.go
│ │ ├── failures_collector_test.go
│ │ ├── log_hook.go
│ │ └── log_hook_test.go
│ ├── pull_policies/
│ │ ├── pull_policies.go
│ │ └── pull_policies_test.go
│ ├── random_uuid.go
│ ├── retry/
│ │ ├── mocks.go
│ │ ├── retry.go
│ │ └── retry_test.go
│ ├── runner_wrapper/
│ │ ├── api/
│ │ │ ├── 000_proto_generate.go
│ │ │ ├── client/
│ │ │ │ ├── backoff.go
│ │ │ │ ├── client.go
│ │ │ │ ├── options.go
│ │ │ │ ├── target.go
│ │ │ │ └── target_test.go
│ │ │ ├── errors.go
│ │ │ ├── go.mod
│ │ │ ├── go.sum
│ │ │ ├── init_graceful_shutdown_request.go
│ │ │ ├── mocks.go
│ │ │ ├── proto/
│ │ │ │ ├── mocks.go
│ │ │ │ ├── wrapper.pb.go
│ │ │ │ ├── wrapper.proto
│ │ │ │ └── wrapper_grpc.pb.go
│ │ │ ├── server/
│ │ │ │ ├── mocks.go
│ │ │ │ ├── server.go
│ │ │ │ └── server_test.go
│ │ │ ├── shutdown_callback.go
│ │ │ ├── shutdown_callback_test.go
│ │ │ └── status.go
│ │ ├── commander.go
│ │ ├── commander_test.go
│ │ ├── commander_unix.go
│ │ ├── commander_windows.go
│ │ ├── mocks.go
│ │ ├── testdata/
│ │ │ └── commander-binary/
│ │ │ └── main.go
│ │ ├── wrapper.go
│ │ ├── wrapper_test.go
│ │ ├── wrapper_unix.go
│ │ └── wrapper_windows.go
│ ├── secrets/
│ │ ├── errors.go
│ │ ├── errors_test.go
│ │ └── resolvers/
│ │ ├── aws/
│ │ │ ├── aws_secrets_manager_resolver.go
│ │ │ ├── aws_secrets_manager_resolver_integration_test.go
│ │ │ ├── aws_secrets_manager_resolver_test.go
│ │ │ └── mocks.go
│ │ ├── azure_key_vault/
│ │ │ ├── azure_key_vault_resolver.go
│ │ │ └── azure_key_vault_resolver_test.go
│ │ ├── gcp_secret_manager/
│ │ │ ├── mocks.go
│ │ │ ├── resolver.go
│ │ │ ├── resolver_integration_test.go
│ │ │ └── resolver_test.go
│ │ ├── gitlab_secrets_manager/
│ │ │ ├── resolver.go
│ │ │ └── resolver_test.go
│ │ └── vault/
│ │ ├── resolver.go
│ │ └── resolver_test.go
│ ├── sentry/
│ │ ├── log_hook.go
│ │ └── log_hook_test.go
│ ├── service/
│ │ ├── logger.go
│ │ ├── logger_test.go
│ │ ├── mocks.go
│ │ ├── scripts.go
│ │ ├── service_factory.go
│ │ ├── simple.go
│ │ └── simple_test.go
│ ├── shell_escape.go
│ ├── shell_escape_test.go
│ ├── shorten_token.go
│ ├── shorten_token_test.go
│ ├── ssh/
│ │ ├── consts.go
│ │ ├── ssh_command.go
│ │ ├── ssh_command_test.go
│ │ ├── stub_ssh_server.go
│ │ ├── stub_ssh_server_unix.go
│ │ └── stub_ssh_server_windows.go
│ ├── test/
│ │ └── helpers.go
│ ├── timeperiod/
│ │ ├── period.go
│ │ └── period_test.go
│ ├── tls/
│ │ ├── ca_chain/
│ │ │ ├── builder.go
│ │ │ ├── builder_test.go
│ │ │ ├── helpers.go
│ │ │ ├── helpers_test.go
│ │ │ ├── mocks.go
│ │ │ ├── resolver.go
│ │ │ ├── resolver_chain.go
│ │ │ ├── resolver_chain_test.go
│ │ │ ├── resolver_url.go
│ │ │ ├── resolver_url_test.go
│ │ │ ├── resolver_verify.go
│ │ │ └── resolver_verify_test.go
│ │ └── consts.go
│ ├── toml_test.go
│ ├── trace/
│ │ ├── buffer.go
│ │ ├── buffer_fd0_test.go
│ │ └── buffer_test.go
│ ├── transfer/
│ │ ├── content_range.go
│ │ ├── content_range_test.go
│ │ ├── parallel_download.go
│ │ └── parallel_download_test.go
│ ├── url/
│ │ ├── clean_url.go
│ │ ├── clean_url_test.go
│ │ ├── gitauth.go
│ │ └── gitauth_test.go
│ ├── usage_log/
│ │ ├── logrotate/
│ │ │ ├── options.go
│ │ │ ├── writer.go
│ │ │ └── writer_test.go
│ │ ├── mocks.go
│ │ ├── options.go
│ │ ├── record.go
│ │ ├── storage.go
│ │ └── storage_test.go
│ ├── vault/
│ │ ├── auth.go
│ │ ├── auth_methods/
│ │ │ ├── data.go
│ │ │ ├── data_test.go
│ │ │ ├── jwt/
│ │ │ │ ├── auth.go
│ │ │ │ └── auth_test.go
│ │ │ ├── registry.go
│ │ │ └── registry_test.go
│ │ ├── client.go
│ │ ├── client_test.go
│ │ ├── internal/
│ │ │ └── registry/
│ │ │ ├── mocks.go
│ │ │ ├── registry.go
│ │ │ └── registry_test.go
│ │ ├── mocks.go
│ │ ├── result.go
│ │ ├── result_test.go
│ │ ├── secret_engine.go
│ │ ├── secret_engines/
│ │ │ ├── generic/
│ │ │ │ ├── engine.go
│ │ │ │ └── engine_test.go
│ │ │ ├── kv_v2/
│ │ │ │ ├── engine.go
│ │ │ │ └── engine_test.go
│ │ │ ├── operations.go
│ │ │ ├── operations_test.go
│ │ │ ├── registry.go
│ │ │ └── registry_test.go
│ │ ├── service/
│ │ │ ├── mocks.go
│ │ │ ├── vault.go
│ │ │ └── vault_test.go
│ │ ├── utils.go
│ │ └── utils_test.go
│ ├── virtualbox/
│ │ ├── control.go
│ │ ├── control_test.go
│ │ └── control_windows.go
│ └── warning_panic.go
├── log/
│ ├── configuration.go
│ ├── configuration_test.go
│ ├── dump_unix.go
│ ├── dump_unix_test.go
│ ├── dump_windows.go
│ ├── mocks.go
│ ├── runner_formatter.go
│ ├── runner_formatter_test.go
│ ├── system_logger.go
│ ├── system_logger_test.go
│ └── test/
│ ├── hook.go
│ └── hook_test.go
├── magefiles/
│ ├── build/
│ │ ├── blueprint.go
│ │ ├── checker.go
│ │ ├── components.go
│ │ ├── exporter.go
│ │ ├── mocks.go
│ │ └── variables.go
│ ├── ci/
│ │ └── variables.go
│ ├── docker/
│ │ └── buildx.go
│ ├── docs/
│ │ └── writing_mage_targets.md
│ ├── docutils/
│ │ ├── section_replacer.go
│ │ ├── section_replacer_test.go
│ │ └── testdata/
│ │ ├── source.md
│ │ └── source_rewritten.md
│ ├── env/
│ │ ├── mocks.go
│ │ └── var.go
│ ├── hosted_runners/
│ │ ├── bridge.go
│ │ ├── bridge_test.go
│ │ ├── testdata/
│ │ │ ├── table.md
│ │ │ └── table_rewritten.md
│ │ └── wiki_client.go
│ ├── hosted_runners.go
│ ├── k8s.go
│ ├── kubernetes/
│ │ ├── docs/
│ │ │ ├── analyzer.go
│ │ │ ├── analyzer_test.go
│ │ │ ├── generate_permissions.go
│ │ │ ├── mocks.go
│ │ │ ├── role.yaml.tpl
│ │ │ └── testdata/
│ │ │ ├── kubernetes_analyzer_api_declaration.go
│ │ │ ├── kubernetes_analyzer_api_declaration_reassigned.go
│ │ │ ├── kubernetes_analyzer_api_fn_arg.go
│ │ │ ├── kubernetes_analyzer_api_nonpointer_call.go
│ │ │ ├── kubernetes_analyzer_api_pointer_call.go
│ │ │ └── kubernetes_analyzer_api_unnamed_field.go
│ │ ├── docs.go
│ │ ├── provision/
│ │ │ ├── manifests/
│ │ │ │ ├── rolebinding.yaml.tpl
│ │ │ │ └── serviceaccount.yaml.tpl
│ │ │ └── provisioner.go
│ │ └── provisioner.go
│ ├── magefile.go
│ ├── mageutils/
│ │ └── mageutils.go
│ ├── package.go
│ ├── package_deb.go
│ ├── package_rpm.go
│ ├── packages/
│ │ ├── blueprint.go
│ │ ├── create.go
│ │ ├── docs.go
│ │ ├── mocks.go
│ │ ├── package.go
│ │ ├── verify.go
│ │ └── verify_test.go
│ ├── pulp/
│ │ ├── mocks.go
│ │ ├── push.go
│ │ ├── push_test.go
│ │ └── releases.go
│ ├── pulp.go
│ └── resources.go
├── main.go
├── main_test.go
├── network/
│ ├── api_requests_collector.go
│ ├── api_requests_collector_test.go
│ ├── client.go
│ ├── client_test.go
│ ├── gitlab.go
│ ├── gitlab_test.go
│ ├── mocks.go
│ ├── patch_response.go
│ ├── remote_job_state_response.go
│ ├── remote_job_state_response_test.go
│ ├── requester.go
│ ├── retry_requester.go
│ ├── retry_requester_test.go
│ ├── trace.go
│ └── trace_test.go
├── packaging/
│ ├── root/
│ │ └── usr/
│ │ └── share/
│ │ └── gitlab-runner/
│ │ ├── clear-docker-cache
│ │ ├── post-install
│ │ └── pre-remove
│ └── scripts/
│ ├── postinst.deb
│ ├── postinst.rpm
│ ├── prerm.deb
│ └── prerm.rpm
├── referees/
│ ├── metrics.go
│ ├── metrics_test.go
│ ├── mocks.go
│ ├── prometheus_api.go
│ ├── referees.go
│ └── referees_test.go
├── router/
│ ├── client.go
│ ├── client_conn_factory.go
│ ├── client_test.go
│ ├── internal/
│ │ └── wstunnel/
│ │ ├── client.go
│ │ ├── netconn.go
│ │ └── netconn_test.go
│ ├── mocks.go
│ ├── rpc/
│ │ ├── generate.go
│ │ ├── mocks.go
│ │ ├── rpc.pb.go
│ │ ├── rpc.proto
│ │ └── rpc_grpc.pb.go
│ └── token_creds.go
├── scripts/
│ ├── check-test-directives/
│ │ └── main.go
│ ├── common-pkcs11.sh
│ ├── docs-i18n-verify-paths
│ ├── envs/
│ │ ├── README.md
│ │ ├── allowlist_common.env
│ │ ├── allowlist_unix.env
│ │ └── allowlist_windows.env
│ ├── lint-docs
│ ├── lint-i18n-docs
│ ├── local-env
│ ├── pusher/
│ │ ├── go.mod
│ │ ├── go.sum
│ │ ├── helper-images.json
│ │ ├── main.go
│ │ └── runner-images.json
│ ├── security-harness
│ ├── sign-macos-binaries
│ ├── sign-windows-binaries
│ ├── update-feature-flags-docs/
│ │ └── main.go
│ └── vagrant/
│ └── provision/
│ ├── base.ps1
│ ├── enable_developer_mode.ps1
│ ├── enable_sshd.ps1
│ ├── install_PSWindowsUpdate.ps1
│ └── windows_update.ps1
├── session/
│ ├── proxy/
│ │ ├── mocks.go
│ │ ├── proxy.go
│ │ └── proxy_test.go
│ ├── server.go
│ ├── server_test.go
│ ├── session.go
│ ├── session_test.go
│ └── terminal/
│ ├── mocks.go
│ └── terminal.go
├── shells/
│ ├── abstract.go
│ ├── abstract_test.go
│ ├── bash.go
│ ├── bash_test.go
│ ├── consts.go
│ ├── git_credentials_helper_integration_test.go
│ ├── mocks.go
│ ├── powershell.go
│ ├── powershell_integration_test.go
│ ├── powershell_test.go
│ ├── proxy_exec.go
│ ├── shell_writer.go
│ ├── shell_writer_integration_test.go
│ ├── shell_writer_test.go
│ ├── shellstest/
│ │ └── utils.go
│ ├── trap_command_exit_status.go
│ └── trap_command_exit_status_test.go
├── steps/
│ ├── execute.go
│ ├── execute_test.go
│ ├── mocks.go
│ ├── steps.go
│ ├── steps_test.go
│ └── stepstest/
│ └── server.go
└── tests/
├── dockerfiles/
│ ├── README.md
│ ├── alpine-entrypoint/
│ │ ├── Dockerfile
│ │ ├── Dockerfile.pre-post-trap
│ │ ├── Dockerfile.stderr
│ │ ├── entrypoint-stderr.sh
│ │ ├── entrypoint.pre-post-trap.sh
│ │ └── entrypoint.sh
│ ├── alpine-id-overflow/
│ │ └── Dockerfile
│ ├── alpine-no-root/
│ │ └── Dockerfile
│ ├── counter-service/
│ │ └── Dockerfile
│ ├── docker-bake.hcl
│ ├── gitlab-runner-helper-entrypoint/
│ │ ├── dockerfile
│ │ ├── entrypoint.sh
│ │ └── scripts/
│ │ └── gitlab-runner-build
│ └── powershell-entrypoint/
│ ├── Dockerfile.pre-post-trap
│ └── entrypoint.pre-post-trap.ps1
├── test_installation.sh
├── test_script.sh
└── ubuntu/
├── Makefile
└── Vagrantfile
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
.idea/
out/
builds/
================================================
FILE: .editorconfig
================================================
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
charset = utf-8
[*.{md,markdown}]
trim_trailing_whitespace = false
[*.{go,mod}]
indent_style = tab
max_line_length = 120
[Makefile*]
indent_style = tab
[*.{yml,yaml}]
indent_size = 2
max_line_length = 140
================================================
FILE: .flaky-tests.txt
================================================
TestBuildCacheHelper/bash/cache_settings_provided,_no_job_cache_provided
TestBuildCancel/bash/job_is_aborted
TestBuildCancel/pwsh/job_is_aborted
TestBuildLogLimitExceeded/bash/failed_job
TestBuildLogLimitExceeded/bash/successful_job
TestBuildLogLimitExceeded/canceled_job
TestBuildLogLimitExceeded/failed_job
TestBuildLogLimitExceeded/powershell/failed_job
TestBuildLogLimitExceeded/pwsh/failed_job
TestBuildPassingEnvsMultistep/bash
TestBuildWithGitStrategyCloneWithLFS/pwsh
TestClientInvalidTLSAuth
TestCredSetup/FF_GIT_URLS_WITHOUT_TOKENS:true
TestCredSetup/FF_GIT_URLS_WITHOUT_TOKENS:true/GIT_STRATEGY:clone
TestCredSetup/FF_GIT_URLS_WITHOUT_TOKENS:true/GIT_STRATEGY:clone/bash
TestCredSetup/FF_GIT_URLS_WITHOUT_TOKENS:true/GIT_STRATEGY:fetch
TestCredSetup/FF_GIT_URLS_WITHOUT_TOKENS:true/GIT_STRATEGY:fetch/bash
TestDockerBuildContainerGracefulShutdownWithInit/job_cancelled
TestDockerCommandUsingCustomClonePath/uses_custom_clone_path
TestDockerLogOptions/invalid_key_rejected_early
TestDockerLogOptions/multiple_invalid_keys_rejected_early
TestDockerLogOptions/service_container_with_invalid_options
TestExecutor_Run/canceled_job_uses_new_process_termination/powershell
TestKiller/command_terminated_via_job_object
TestRunIntegrationTestsWithFeatureFlag/testDeletedPodSystemFailureDuringExecution/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:off
TestRunIntegrationTestsWithFeatureFlag/testDeletedPodSystemFailureDuringExecution/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:off/step_
TestRunIntegrationTestsWithFeatureFlag/testDeletedPodSystemFailureDuringExecution/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:off/step_/delete_now
TestRunIntegrationTestsWithFeatureFlag/testDeletedPodSystemFailureDuringExecution/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:on
TestRunIntegrationTestsWithFeatureFlag/testDeletedPodSystemFailureDuringExecution/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:on/prepare_script
TestRunIntegrationTestsWithFeatureFlag/testDeletedPodSystemFailureDuringExecution/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:on/prepare_script/evict_gracefully
TestRunIntegrationTestsWithFeatureFlag/testKubernetesBuildLogLimitExceeded/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:off
TestRunIntegrationTestsWithFeatureFlag/testKubernetesBuildLogLimitExceeded/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:off/failed_job
TestRunIntegrationTestsWithFeatureFlag/testKubernetesBuildLogLimitExceeded/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:on
TestRunIntegrationTestsWithFeatureFlag/testKubernetesBuildLogLimitExceeded/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:on/failed_job
TestRunIntegrationTestsWithFeatureFlag/testKubernetesServiceContainerAlias/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:off
TestRunIntegrationTestsWithFeatureFlag/testKubernetesServiceContainerAlias/FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY:off/service_container_with_multiple_similar_aliases
Test_ServiceLabels
================================================
FILE: .gitattributes
================================================
*.sh text eol=lf
ci/version text eol=lf
================================================
FILE: .gitignore
================================================
*.iml
config.toml
config.toml.lock
.project
out
builds/
vendor/
commands/helpers/archive.zip
dockerfiles/**/checksums-*
dockerfiles/runner/*/install-deps
dockerfiles/runner/alpine/gitlab-runner-linux-*
dockerfiles/runner/ubuntu/gitlab-runner_*.deb
dockerfiles/runner/ubi-fips/gitlab-runner-linux-*
dockerfiles/runner/ubi-fips/gitlab-runner_*.rpm
dockerfiles/runner-helper/binaries/
.DS_Store
.idea/
tests/ubuntu/.vagrant
artifacts
tmp/gitlab-test
/.tmp/
# Ignore all editorconfig files except the root one
.editorconfig
!/.editorconfig
testsdefinitions.txt
/.testoutput/
/.cover/
/.vagrant/
ci/.test-failures.servercore*.txt.updated
# Ignore Visual Studio Code internals
/.vscode
/debug
debug.test
# Ignore the generated binary
/gitlab-runner*
node_modules
================================================
FILE: .gitlab/.argo/mr_template_doc_ai.md
================================================
# What does this MR do?
This merge request contains translations of GitLab product documentation. The source files are
from the `/doc` directory, and translations are returned to language-specific directories under `/doc-locale`.
## Translation MR information
- Argo Request: [{{argo_request_key}}: {{argo_request_name}}]({{argo_request_url}})
- Source: {{source_content_origin}}
## Review workflow
For the full review workflow documentation, see the [Translation MR Review Workflow](https://gitlab.com/gitlab-com/localization/docs-site-localization/-/blob/main/translation_mr_review_workflow.md).
### Assignee checklist
- [ ] Fix conflicts (check commit history of each file in `main` to identify target changes causing conflicts, such as translation changes on production or TW shortcode/linting updates)
- [ ] Fix any pipeline issues
- [ ] Rebase if needed
- [ ] Check the review app for all impacted pages (Duo can help produce a list of URLs)
- [ ] Remove the MR from Draft mode (this triggers the first review by GitLab Duo)
- [ ] If the Duo review identified translation errors requiring review by [Japanese content maintainers](https://gitlab.com/gitlab-com/localization/maintainers/japanese), ping and add them as a reviewer.
- [ ] Hand off for review to a [tech docs maintainer](https://gitlab.com/gitlab-com/localization/maintainers/tech-docs). The MR should be ready to merge at this point
### Review App
| Review app |
| ---------- |
| <!-- Add review app URL --> |
### Reviewer checklist
- [ ] Review changes
- [ ] Verify build pipeline
- [ ] Merge on approval
/title Product Docs AI Translation: {{argo_request_key}} #{{translation_mr_number}}
/draft
/assign @gitlab-argo-bot
/label ~documentation
/label ~"gitlab-translation-service"
/label ~"group::localization"
/label ~"docs-only"
/label ~"type::maintenance"
================================================
FILE: .gitlab/CODEOWNERS
================================================
# When adding a group as a code owner, make sure to invite the group to the
# project here: https://gitlab.com/gitlab-org/gitlab-runner/-/project_members
# As described in https://docs.gitlab.com/user/project/codeowners/
* @gitlab-com/runner-maintainers
.editorconfig @gitlab-com/runner-group @gitlab-com/runner-maintainers
.gitattributes @gitlab-com/runner-group @gitlab-com/runner-maintainers
.gitignore @gitlab-com/runner-group @gitlab-com/runner-maintainers
[Hosted Runners] @gitlab-org/production-engineering/runners-platform
.gitlab/ci/hosted-runners-bridge.gitlab-ci.yml
magefiles/hosted_runners.go
magefiles/hosted_runners/
[Pipeline Security]
helpers/vault/ @gitlab-com/pipeline-security-group/backend
helpers/gcp_secret_manager/ @gitlab-com/pipeline-security-group/backend
helpers/azure_key_vault/ @gitlab-com/pipeline-security-group/backend
helpers/aws/ @gitlab-com/pipeline-security-group/backend
helpers/gitlab_secrets_manager/ @gitlab-com/pipeline-security-group/backend
helpers/secrets/ @gitlab-com/pipeline-security-group/backend
[Documentation]
.markdownlint.yml @gitlab-com/runner-docs-maintainers
/docs/ @gitlab-com/runner-docs-maintainers
## Localization
/docs-locale/ @gitlab-com/localization/maintainers/tech-docs
/docs-locale/ja-jp @gitlab-com/localization/maintainers/japanese @gitlab-com/localization/maintainers/tech-docs
/argo_translation.yml @gitlab-com/localization/maintainers/tech-docs
================================================
FILE: .gitlab/changelog.yml
================================================
default_scope: other
names:
new-feature: New features
security-fix: Security fixes
fix: Bug fixes
maintenance: Maintenance
runner-distribution: GitLab Runner distribution
documentation: Documentation changes
other: Other changes
order:
- new-feature
- security-fix
- fix
- maintenance
- runner-distribution
- documentation
- other
label_matchers:
- labels:
- runner-distribution
scope: runner-distribution
- labels:
- type::feature
scope: new-feature
- labels:
- feature::addition
scope: new-feature
- labels:
- security
scope: security-fix
- labels:
- type::bug
scope: fix
- labels:
- type::maintenance
scope: maintenance
- labels:
- feature::enhancement
scope: maintenance
- labels:
- technical debt
scope: maintenance
- labels:
- tooling::pipelines
scope: maintenance
- labels:
- tooling::workflow
scope: maintenance
- labels:
- documentation
scope: documentation
authorship_labels:
- Community contribution
skip_changelog_labels:
- skip-changelog
================================================
FILE: .gitlab/ci/_common.gitlab-ci.yml
================================================
variables:
# renovate: datasource=docker depName=golang allowedVersions=/1\.26\..+/
# When updating GO_VERSION, update Go versions in docs/development/_index.md
# or the 'docs:check development docs Go version' job will fail
RUBY_VERSION: "3.4.8"
GO_VERSION: "1.26.1"
GOLANGLINT_VERSION: "2.11.4"
RUNNER_IMAGES_REGISTRY: registry.gitlab.com/gitlab-org/ci-cd/runner-tools/base-images
RUNNER_IMAGES_VERSION: "0.0.41"
RUNNER_IMAGES_WINDOWS_GO_URL: https://gitlab.com/api/v4/projects/gitlab-org%2fci-cd%2frunner-tools%2fbase-images/packages/generic/runner-images/v${RUNNER_IMAGES_VERSION}/golang-windows-amd64.zip
CI_IMAGE: "${RUNNER_IMAGES_REGISTRY}/ci:${RUNNER_IMAGES_VERSION}"
DOCS_LINT_IMAGE: registry.gitlab.com/gitlab-org/technical-writing/docs-gitlab-com/lint-markdown:alpine-3.22-vale-3.13.0-markdownlint2-0.19.0-lychee-0.21.0
# Feature flags
FF_SCRIPT_SECTIONS: "true"
FF_USE_FASTZIP: "true"
FF_USE_NEW_BASH_EVAL_STRATEGY: "true"
FF_TIMESTAMPS: "true"
# Following variables are used in some jobs to install specified software
RELEASE_INDEX_GEN_VERSION: "latest"
DOCKER_VERSION: 27.3.1
LICENSE_MANAGEMENT_SETUP_CMD: echo "Skip setup. Dependency already vendored"
DOCS_GITLAB_REPO_SUFFIX: "runner"
# We're overriding rules for the jobs that we want to run.
# This will disable all other rules.
DEPENDENCY_SCANNING_DISABLED: "true"
TRANSFER_METER_FREQUENCY: "5s"
CACHE_COMPRESSION_FORMAT: tarzstd
GO111MODULE: "on"
# renovate: datasource=docker depName=redhat/ubi9-micro versioning=redhat allowedVersions=/9\.4-[0-9]+/
PACKAGES_ITERATION: "1"
ZSTD_VERSION: "1.5.7.20250308"
ZSTD_CHECKSUM: "a96dc5417943c03fa231bf2d6a586b7ae7254fa52fdc15d302f296b5ff88e1ff0f07120a720149eb82ea0f0c65444393ebf05d2ee1bd1db341b803ff65a2e675"
# This is the runner tag that will be used for Kubernetes jobs. The "kubernetes_runner" tags picks uses the general runner kubernetes
# runner. There are two deployments for the kubernetes runners - blue and green. Use either "kubernetes_runner_blue" or
# "kubernetes_runner_green" if a specific one is desired. Usually one of the two colors will be paused in the CI/CD UI
# and the general "kubernetes_runner" tag will pickup whichever isn't.
# To not run tests inside kubernetes change the tag with gitlab-org.
KUBERNETES_RUNNER_TAG: kubernetes_runner
# The integration tag cannot be changed as easily as it uses the cluster to run the integration tests as pods.
# If required the jobs can be skipped
KUBERNETES_RUNNER_INTEGRATION_TAG: kubernetes_integration
# Pilot runner toggle. Set USE_PILOT_RUNNERS to "false" to fall back to shared/instance runners
# (e.g. to restore GitLab Duo functionality). When "true" (default), jobs run on functions-pilot-* tagged runners.
USE_PILOT_RUNNERS: "true"
RUNNER_TAG_DEFAULT: "functions-pilot-linux-amd64"
RUNNER_TAG_DOCKER: "functions-pilot-linux-amd64"
RUNNER_TAG_2XLARGE: "functions-pilot-linux-amd64"
RUNNER_TAG_MEDIUM: "functions-pilot-linux-amd64"
RUNNER_TAG_WINDOWS_2019: "windows-1809"
RUNNER_TAG_WINDOWS_2022: "windows-21h1"
workflow:
rules: !reference [".rules:kubernetes:tag:if-not-canonical", rules]
default:
image: $CI_IMAGE
tags:
- !reference [.instance-default]
retry:
max: 2
when:
- runner_system_failure
.no_cache:
cache: {}
.no_dependencies:
dependencies: []
.no_cache_and_dependencies:
extends:
- .no_cache
- .no_dependencies
.docker:
services:
- docker:${DOCKER_VERSION}-dind
variables:
DOCKER_HOST: "unix:///certs/client/docker.sock"
BUILDX_BAKE_ENTITLEMENTS_FS: 0
tags:
- !reference [.instance-default-docker]
.go-cache:
variables:
GODEBUG: gocachetest=1
GOCACHE: $CI_PROJECT_DIR/.gocache-$CI_COMMIT_REF_PROTECTED
before_script:
- mkdir -p "$GOCACHE"
- ./ci/touch_git
cache:
paths:
- $CI_PROJECT_DIR/.gocache-false/
key: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
.go-cache-windows:
variables:
GODEBUG: gocachetest=1
GOCACHE: $CI_PROJECT_DIR\.gocache-$CI_COMMIT_REF_PROTECTED
before_script:
- New-Item -Path "$Env:GOCACHE" -Type Directory -Force
- $env:GOCACHE = (Resolve-Path $env:GOCACHE).Path
- ./ci/touch_git.ps1
cache:
paths:
- $CI_PROJECT_DIR\.gocache-false\
key: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
.windows-dependency-checksums:
variables:
GIT_WINDOWS_AMD64_CHECKSUM: "36498716572394918625476ca207df3d5f8b535a669e9aad7a99919d0179848c"
GIT_LFS_WINDOWS_AMD64_CHECKSUM: "94435072f6b3a6f9064b277760c8340e432b5ede0db8205d369468b9be52c6b6"
PWSH_WINDOWS_AMD64_CHECKSUM: "ED331A04679B83D4C013705282D1F3F8D8300485EB04C081F36E11EAF1148BD0"
.windows1809_variables:
variables:
WINDOWS_VERSION: servercore1809
WINDOWS_PREBUILT: servercore-ltsc2019
.windows1809:
extends:
- .windows1809_variables
tags:
- !reference [.instance-windows-2019]
.windows1809_nano:
extends:
- .windows1809
variables:
WINDOWS_VERSION: nanoserver1809
WINDOWS_PREBUILT: nanoserver-ltsc2019
.windows21H2_variables:
variables:
WINDOWS_VERSION: servercore21H2
WINDOWS_PREBUILT: servercore-ltsc2022
.windows21H2:
extends:
- .windows21H2_variables
tags:
- !reference [.instance-windows-2022]
.windows21H2_nano:
extends:
- .windows21H2
variables:
WINDOWS_VERSION: nanoserver21H2
WINDOWS_PREBUILT: nanoserver-ltsc2022
# .stage_done is used as a sentinel at stage n for stage n-1 completion, so we can kick off builds in later stages
# without explicitly waiting for the completion of the n-1 stage
.stage_done:
extends:
- .no_cache_and_dependencies
- .rules:merge_request_pipelines
image: alpine:latest
variables:
GIT_STRATEGY: none
script:
- exit 0
================================================
FILE: .gitlab/ci/_kubernetes.gitlab-ci.yml
================================================
.kubernetes runner:
interruptible: true
timeout: 30m
tags:
- $KUBERNETES_RUNNER_TAG
.unit tests kubernetes limits:
variables:
# The default limits are defined in https://gitlab.com/gitlab-org/ci-cd/runner-tools/runner-kubernetes-infra
# The helper container CPU request is 1, with the build container 3 CPU requests
# the scheduler should allocate 4 CPUs for this pod
KUBERNETES_CPU_REQUEST: "3"
KUBERNETES_MEMORY_REQUEST: "6Gi"
KUBERNETES_MEMORY_LIMIT: "6Gi"
.check generated files kubernetes limits:
variables:
KUBERNETES_MEMORY_REQUEST: "6Gi"
KUBERNETES_MEMORY_LIMIT: "6Gi"
================================================
FILE: .gitlab/ci/_project_canonical.gitlab-ci.yml
================================================
.instance-default: $RUNNER_TAG_DEFAULT
.instance-default-docker: $RUNNER_TAG_DOCKER
.instance-2xlarge: $RUNNER_TAG_2XLARGE
.instance-medium: $RUNNER_TAG_MEDIUM
.instance-windows-2019: $RUNNER_TAG_WINDOWS_2019
.instance-windows-2022: $RUNNER_TAG_WINDOWS_2022
================================================
FILE: .gitlab/ci/_project_fork.gitlab-ci.yml
================================================
.instance-default: gitlab-org
.instance-default-docker: gitlab-org-docker
.instance-2xlarge: gitlab-org-docker
.instance-medium: gitlab-org-docker
# we don't use windows instances on forks, but these
# still need to be present because they're referenced,
# so we just provide a bogus tag name
.instance-windows-2019: not-intended-for-forks
.instance-windows-2022: not-intended-for-forks
================================================
FILE: .gitlab/ci/_rules.gitlab-ci.yml
================================================
####################
# Changes patterns #
####################
.code-backstage-patterns: &code-backstage-patterns
- ".gitlab-ci.yml"
- ".golangci.yml"
- ".gitlab/ci/**/*"
- ".gitattributes"
- "Makefile*"
- "**/*.go"
- "{ci,dockerfiles,packaging,scripts,tests}/**/*"
- "**/testdata/**/*"
- "go.*"
- "tmp/gitlab-test/**"
- "VERSION"
.docs-patterns: &docs-patterns
- ".vale.ini"
- ".markdownlint.yml"
- "docs/**/*"
- "scripts/lint-docs"
.docs-i18n-patterns: &docs-i18n-patterns
- ".vale.ini"
- ".markdownlint.yml"
- "docs-locale/**/*"
- "scripts/lint-i18n-docs"
.docs-all-patterns: &docs-all-patterns
- ".vale.ini"
- ".markdownlint.yml"
- "docs/**/*"
- "docs-locale/**/*"
- "scripts/lint-docs"
- "scripts/lint-i18n-docs"
##############
# Conditions #
##############
.if-not-canonical-namespace: &if-not-canonical-namespace
if: '$CI_PROJECT_NAMESPACE !~ /^gitlab-org($|\/)/'
.if-security-project-path: &if-security-project-path
if: '$CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner"'
.if-default-branch: &if-default-branch
if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
.if-release-candidate-tag: &if-release-candidate-tag
if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+-rc[0-9]+/'
.if-stable-release-tag: &if-stable-release-tag
if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/'
.if-merge-request-pipeline: &if-merge-request-pipeline
if: $CI_PIPELINE_SOURCE == "merge_request_event"
.if-not-web-or-push-pipeline: &if-not-web-or-push-pipeline
if: $CI_PIPELINE_SOURCE != "web" && $CI_PIPELINE_SOURCE != "push"
.if-runner-merge-request-pipeline: &if-runner-merge-request-pipeline
if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
.if-runner-security-merge-request-pipeline: &if-runner-security-merge-request-pipeline
if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner"
.if-not-canonical-namespace-merge-request-pipeline: &if-not-canonical-namespace-merge-request-pipeline
if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE !~ /^gitlab-org($|\/)/
.if-runner-default-branch: &if-runner-default-branch
if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
.if-security-runner-default-branch: &if-security-runner-default-branch
if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner"
.if-runner-or-security-runner-default-branch: &if-runner-or-security-runner-default-branch
if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && ($CI_PROJECT_PATH == "gitlab-org/gitlab-runner" || $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner")
.if-runner-or-security-runner-stable-ref: &if-runner-or-security-runner-stable-ref
if: $CI_COMMIT_REF_NAME =~ /\A[0-9]+-[0-9]+-stable\z/ && ($CI_PROJECT_PATH == "gitlab-org/gitlab-runner" || $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner")
.if-runner-or-security-runner-feature-ref: &if-runner-or-security-runner-feature-ref
if: $CI_COMMIT_REF_NAME =~ /feature\/.+/ && ($CI_PROJECT_PATH == "gitlab-org/gitlab-runner" || $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner")
.if-runner-release-ref: &if-runner-release-ref
if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?\z/ && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
.if-runner-stable-release-ref: &if-runner-stable-release-ref
if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+?\z/ && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
.if-security-runner-release-ref: &if-security-runner-release-ref
if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+?\z/ && $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner"
.if-runner-bleeding-edge-release-ref: &if-runner-bleeding-edge-release-ref
if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+-rc[0-9]+\z/ && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
.if-runner-or-security-bleeding-edge-release-ref: &if-runner-or-security-bleeding-edge-release-ref
if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+-rc[0-9]+\z/ && ($CI_PROJECT_PATH == "gitlab-org/gitlab-runner" || $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner")
.if-not-gitlab-runner-community-path: &if-not-gitlab-runner-community-path
if: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH != null && $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH !~ /^gitlab-org($|\/)/
########################
# Default branch rules #
########################
.rules:default-branch-only:no_docs:
rules:
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
.rules:default-branch-only:no_docs:always:
rules:
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
when: always
#######################
# Merge Request rules #
#######################
.rules:merge_request_pipelines:
rules:
- <<: *if-merge-request-pipeline
- <<: *if-runner-or-security-runner-default-branch
- <<: *if-runner-or-security-runner-stable-ref
- <<: *if-runner-or-security-runner-feature-ref
- <<: *if-runner-release-ref
- <<: *if-security-runner-release-ref
.rules:merge_request_pipelines:no_docs:
rules:
- <<: *if-merge-request-pipeline
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *code-backstage-patterns
- <<: *if-runner-release-ref
changes: *code-backstage-patterns
- <<: *if-security-runner-release-ref
changes: *code-backstage-patterns
.rules:merge_request_pipelines:docs:
rules:
- <<: *if-merge-request-pipeline
changes: *docs-patterns
- <<: *if-runner-or-security-runner-default-branch
changes: *docs-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *docs-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *docs-patterns
- <<: *if-runner-release-ref
changes: *docs-patterns
- <<: *if-security-runner-release-ref
changes: *docs-patterns
.rules:merge_request_pipelines:docs-i18n:
rules:
- <<: *if-merge-request-pipeline
changes: *docs-i18n-patterns
- <<: *if-runner-or-security-runner-default-branch
changes: *docs-i18n-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *docs-i18n-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *docs-i18n-patterns
- <<: *if-runner-release-ref
changes: *docs-i18n-patterns
- <<: *if-security-runner-release-ref
changes: *docs-i18n-patterns
.rules:merge_request_pipelines:docs-all:
rules:
- <<: *if-merge-request-pipeline
changes: *docs-all-patterns
- <<: *if-runner-or-security-runner-default-branch
changes: *docs-all-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *docs-all-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *docs-all-patterns
- <<: *if-runner-release-ref
changes: *docs-all-patterns
- <<: *if-security-runner-release-ref
changes: *docs-all-patterns
.rules:merge_request_pipelines:no_docs:no-community-mr:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-merge-request-pipeline
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *code-backstage-patterns
- <<: *if-runner-release-ref
changes: *code-backstage-patterns
- <<: *if-security-runner-release-ref
changes: *code-backstage-patterns
.rules:merge_request_pipelines:no_docs:no-community-mr:no-security-mr:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-security-project-path
when: never
- <<: *if-merge-request-pipeline
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *code-backstage-patterns
- <<: *if-runner-release-ref
changes: *code-backstage-patterns
- <<: *if-security-runner-release-ref
changes: *code-backstage-patterns
# Rules cannot be merged, instead of opt for creating a new rule like this one
.rules:merge_request_pipelines:no_docs:only_canonical:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-runner-merge-request-pipeline
changes: *code-backstage-patterns
- <<: *if-runner-default-branch
changes: *code-backstage-patterns
- <<: *if-runner-stable-release-ref
changes: *code-backstage-patterns
- <<: *if-runner-release-ref
changes: *code-backstage-patterns
.rules:merge_request_pipelines:no_docs:unit_test:
rules:
- <<: *if-not-canonical-namespace-merge-request-pipeline
changes: *code-backstage-patterns
allow_failure: true
- <<: *if-merge-request-pipeline
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *code-backstage-patterns
- <<: *if-runner-release-ref
changes: *code-backstage-patterns
- <<: *if-security-runner-release-ref
changes: *code-backstage-patterns
.rules:merge_request_pipelines:no_docs:always:
rules:
- <<: *if-merge-request-pipeline
changes: *code-backstage-patterns
when: always
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
when: always
- <<: *if-runner-or-security-runner-stable-ref
changes: *code-backstage-patterns
when: always
- <<: *if-runner-release-ref
changes: *code-backstage-patterns
when: always
- <<: *if-security-runner-release-ref
changes: *code-backstage-patterns
when: always
#################
# Release rules #
#################
.rules:release:all:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-default-branch
- <<: *if-release-candidate-tag
- <<: *if-stable-release-tag
.rules:release:bleeding-edge:
rules:
- <<: *if-not-gitlab-runner-community-path
when: never
- <<: *if-runner-default-branch
changes: *code-backstage-patterns
- <<: *if-runner-bleeding-edge-release-ref
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *code-backstage-patterns
.rules:release-or-security:bleeding-edge-or-stable:
rules:
- <<: *if-not-gitlab-runner-community-path
when: never
- <<: *if-runner-or-security-runner-default-branch
changes: *code-backstage-patterns
- <<: *if-runner-or-security-bleeding-edge-release-ref
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-stable-ref
changes: *code-backstage-patterns
- <<: *if-runner-or-security-runner-feature-ref
changes: *code-backstage-patterns
.rules:release:stable-or-rc:
rules:
- if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?$/ && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
changes: *code-backstage-patterns
when: on_success
- if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?$/ && $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner"
changes: *code-backstage-patterns
when: manual
.rules:release:stable:branch:
rules:
- <<: *if-runner-stable-release-ref
changes: *code-backstage-patterns
- <<: *if-security-runner-release-ref
changes: *code-backstage-patterns
.rules:release:stable:branch:ignore-changes:
rules:
- <<: *if-runner-stable-release-ref
- <<: *if-security-runner-release-ref
.rules:release:development:merge-requests:
rules:
- <<: *if-runner-merge-request-pipeline
changes: *code-backstage-patterns
- <<: *if-runner-security-merge-request-pipeline
changes: *code-backstage-patterns
.rules:release:development:merge-requests:no-community-mr:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-runner-merge-request-pipeline
changes: *code-backstage-patterns
- <<: *if-runner-security-merge-request-pipeline
changes: *code-backstage-patterns
.rules:runner-only:release:development:merge-requests:
rules:
- <<: *if-runner-merge-request-pipeline
changes: *code-backstage-patterns
.rules:build:test:images:merge-requests:
rules:
- <<: *if-runner-merge-request-pipeline
changes:
- tests/dockerfiles/*
.rules:prepare:test-ci-scripts:merge-requests:
rules:
- <<: *if-runner-merge-request-pipeline
##############
# Docs rules #
##############
.rules:docs:skip:
rules:
- changes: *docs-patterns
when: never
- when: on_success
.rules:docs:review:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-merge-request-pipeline
when: manual
##############
# Tags rules #
##############
.rules:kubernetes:tag:if-not-canonical:
rules:
- <<: *if-not-canonical-namespace
variables:
# !reference doesn't work in variables
KUBERNETES_RUNNER_TAG: gitlab-org
- if: '$USE_PILOT_RUNNERS == "false"'
variables:
RUNNER_TAG_DEFAULT: "gitlab-org"
RUNNER_TAG_DOCKER: "gitlab-org-docker"
RUNNER_TAG_2XLARGE: "saas-linux-2xlarge-amd64"
RUNNER_TAG_MEDIUM: "saas-linux-medium-amd64"
RUNNER_TAG_WINDOWS_2019: "windows-1809"
RUNNER_TAG_WINDOWS_2022: "windows-21h1"
- when: always
########################
# Binary signing rules #
########################
.rules:sign_binaries:
variables:
GCLOUD_PROJECT: gitlab-ci-runners-signing
SERVICE_ACCOUNT: gitlab-runner-signer@gitlab-ci-runners-signing.iam.gserviceaccount.com
WI_POOL_PROVIDER: //iam.googleapis.com/projects/8522242139/locations/global/workloadIdentityPools/gitlab-pool-oidc-$CI_PROJECT_ID/providers/gitlab-jwt-$CI_PROJECT_ID
================================================
FILE: .gitlab/ci/build.gitlab-ci.yml
================================================
helper images:
tags:
- !reference [.instance-2xlarge]
extends:
- .docker
- .rules:merge_request_pipelines:no_docs:no-community-mr
stage: build
needs:
- "binaries"
script:
- ./ci/touch_git
- make helper-images
- ls -alh out/helper-images/
retry: 2
artifacts:
paths:
- out/helper-images/
expire_in: 7d
parallel:
matrix:
- TARGETS:
- alpine alpine-pwsh ubuntu ubuntu-pwsh ubi-fips concrete
- windows-nanoserver-ltsc2019 windows-servercore-ltsc2019
- windows-nanoserver-ltsc2022 windows-servercore-ltsc2022
- windows-servercore-ltsc2025
- windows-servercore-ltsc2025-arm64
prebuilt helper images:
tags:
- !reference [.instance-2xlarge]
extends:
- .docker
- .rules:merge_request_pipelines:no_docs:no-community-mr
stage: build
image: "${RUNNER_IMAGES_REGISTRY}/ci:${RUNNER_IMAGES_VERSION}-prebuilt-images"
needs:
- "helper images: [alpine alpine-pwsh ubuntu ubuntu-pwsh ubi-fips concrete]"
script:
- make prebuilt-helper-images
- ls -alh out/helper-images/
artifacts:
paths:
- out/helper-images/*.tar.xz
- out/helper-images/*.tar.zst
expire_in: 7d
prebuilt helper images windows 2019:
tags:
- !reference [.instance-2xlarge]
extends:
- prebuilt helper images
- .rules:merge_request_pipelines:no_docs:no-community-mr
needs:
- "helper images: [windows-nanoserver-ltsc2019 windows-servercore-ltsc2019]"
prebuilt helper images windows 2022:
tags:
- !reference [.instance-2xlarge]
extends:
- prebuilt helper images
- .rules:merge_request_pipelines:no_docs:no-community-mr
needs:
- "helper images: [windows-nanoserver-ltsc2022 windows-servercore-ltsc2022]"
prebuilt helper images windows 2025:
tags:
- !reference [.instance-2xlarge]
extends:
- prebuilt helper images
- .rules:merge_request_pipelines:no_docs:no-community-mr
needs:
- "helper images: [windows-servercore-ltsc2025]"
prebuilt helper images windows 2025 arm64:
tags:
- !reference [.instance-2xlarge]
extends:
- prebuilt helper images
- .rules:merge_request_pipelines:no_docs:no-community-mr
needs:
- "helper images: [windows-servercore-ltsc2025-arm64]"
runner images:
tags:
- !reference [.instance-2xlarge]
extends:
- .docker
- .rules:merge_request_pipelines:no_docs:no-community-mr
stage: build
needs:
- "binaries"
script:
- ./ci/touch_git
- TARGETS="ubuntu alpine ubi-fips" make runner-images
- ls -alh out/runner-images/
retry: 2
artifacts:
paths:
- out/runner-images/
expire_in: 7d
test images:
extends:
- .docker
- .rules:build:test:images:merge-requests
stage: build
needs:
- "binaries"
script:
- docker buildx create --name builder --use --driver docker-container default || true
- echo "${CI_REGISTRY_PASSWORD}" | docker login --username "${CI_REGISTRY_USER}" --password-stdin "${CI_REGISTRY}"
- cd tests/dockerfiles && docker buildx bake --progress plain tests-images --set *.output="type=registry,compression=zstd"
- docker logout "${CI_REGISTRY}"
binaries:
image: "${RUNNER_IMAGES_REGISTRY}/ubi-go:${RUNNER_IMAGES_VERSION}"
tags:
- !reference [.instance-2xlarge]
extends:
- .rules:merge_request_pipelines:no_docs:no-community-mr
- .rules:sign_binaries
- .google-oidc:auth
- .go-cache
stage: build
needs: []
before_script:
- !reference [.go-cache, before_script]
- !reference [.google-oidc:auth, before_script]
script:
- go mod download
- make -j$(($(nproc) * 2)) helper-bin helper-bin-fips runner-bin runner-bin-fips
- |
if [[ "$CI_SERVER_HOST" == "gitlab.com" &&
("$CI_PROJECT_PATH" == "gitlab-org/gitlab-runner" ||
"$CI_PROJECT_PATH" == "gitlab-org/security/gitlab-runner") &&
-n "$CI_COMMIT_TAG" ]]; then
echo "Signing binaries..."
scripts/sign-windows-binaries
scripts/sign-macos-binaries
else
echo "Not signing binaries"
fi
artifacts:
paths:
- out/binaries/gitlab-runner*
expire_in: 7d
clone test repo:
extends:
- .rules:merge_request_pipelines:no_docs
- .no_cache_and_dependencies
- .kubernetes runner
stage: build
image: alpine:latest
needs: []
variables:
GIT_STRATEGY: none
script:
- apk add git
- mkdir tmp
- succeed=0
- for i in {1..3}; do git clone https://gitlab.com/gitlab-org/ci-cd/gitlab-runner-pipeline-tests/gitlab-test tmp/gitlab-test && succeed=1 && break; echo "retrying"; done
- '[[ "$succeed" -eq 1 ]]'
artifacts:
paths:
- tmp/gitlab-test
expire_in: 7d
rpm verify fips:
stage: build
extends:
- .rules:merge_request_pipelines:no_docs:no-community-mr
- .kubernetes runner
image: "registry.gitlab.com/gitlab-org/cloud-native/container-dependencies-finder/cdf:main"
needs:
- "runner images"
- "helper images: [alpine alpine-pwsh ubuntu ubuntu-pwsh ubi-fips concrete]"
variables:
# VERBOSE: 1
OCI_TARS: |-
runner=out/runner-images/ubi-fips.tar
helper=out/helper-images/ubi-fips-x86_64.tar
# See https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6370
# Disable mtime checks within `rpm --verify`
RPM_VERIFY_NOMTIME: "true"
script:
- ci/rpm_verify_fips
artifacts:
paths:
- logs/
expire_in: 7d
# prepare done is used as a sentinel for "Prepare" stage completion, so we can kick off builds in later stages
# without waiting for the completion of the Prebuild stage
prepare done:
stage: build
extends:
- .stage_done
================================================
FILE: .gitlab/ci/coverage.gitlab-ci.yml
================================================
.coverage_job:
extends:
- .rules:merge_request_pipelines:no_docs:always
stage: coverage
test coverage report:
extends:
- .coverage_job
coverage: /regular total:\s+\(statements\)\s+\d+.\d+\%/
needs:
- job: unit test
optional: true
- job: integration test
optional: true
- job: windows 1809 integration tests
optional: true
- job: windows 21H2 integration tests
optional: true
- job: windows 1809 unit tests
optional: true
- job: windows 21H2 unit tests
optional: true
script:
- make cobertura_report
- test -z "$(find .splitic -name 'junit_servercore1809_*.xml' -maxdepth 1 -print -quit)" || .tmp/bin/splitic junit-check -quarantined ci/.test-failures.servercore1809.txt .splitic/junit_servercore1809_*.xml
- test -z "$(find .splitic -name 'junit_servercore21H2_*.xml' -maxdepth 1 -print -quit)" || .tmp/bin/splitic junit-check -quarantined ci/.test-failures.servercore21H2.txt .splitic/junit_servercore21H2_*.xml
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: out/cobertura/cobertura-*coverage.xml
paths:
- out/coverage/
expire_in: 7d
expose_as: "Code Coverage"
# Disable this for now since
# https://gitlab.com/gitlab-org/gitlab/-/issues/365885 block us from upgrading
# to go 1.18.x. Re-enable this when the above ticket is fixed.
#code navigation: # See https://docs.gitlab.com/user/project/code_intelligence/#configuration
#extends:
#- .coverage_job
#allow_failure: true # recommended
#needs:
#- prepare done
#image: sourcegraph/lsif-go:v1.9.0
#script:
#- lsif-go
#artifacts:
#reports:
#lsif: dump.lsif
================================================
FILE: .gitlab/ci/deploy.gitlab-ci.yml
================================================
# This job should only run if the UBI images downstream pipeline is successful.
# It does not depend on it since the pipeline incorrectly assumes that it has passed
# when the trigger job is just created. Instead it depends on the whole postreleases stage.
trigger deploy to kubernetes:
stage: deploy
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_BRANCH
UPSTREAM_CI_COMMIT_SHORT_SHA: $CI_COMMIT_SHORT_SHA
rules:
# Override rules in .trigger-downstream-pipeline-ref to remove MR pipelines
- if: '$CI_PROJECT_NAMESPACE !~ /^gitlab-org($|\/)/'
when: never
- if: $CI_PROJECT_PATH != "gitlab-org/gitlab-runner"
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: never
# The KUBERNETES_DEPLOY_BRANCH variable would usually be "main"
# but in some cases we might want to deploy from a different branch
# For example, a feature branch.
- if: $CI_COMMIT_BRANCH == $KUBERNETES_DEPLOY_BRANCH || ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $KUBERNETES_DEPLOY_BRANCH == "")
changes: !reference [.code-backstage-patterns]
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_REF_NAME
- if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+?\z/
changes: !reference [.code-backstage-patterns]
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_REF_NAME
- if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?\z/
changes: !reference [.code-backstage-patterns]
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_REF_NAME
trigger:
project: gitlab-org/ci-cd/runner-tools/runner-kubernetes-infra
================================================
FILE: .gitlab/ci/docs.gitlab-ci.yml
================================================
.review-docs:
stage: docs
extends:
- .rules:docs:review
- .no_cache_and_dependencies
- .kubernetes runner
image: ruby:${RUBY_VERSION}-alpine
needs: []
before_script:
- gem install gitlab --no-doc
# We need to download the script rather than clone the repo since the
# review-docs-cleanup job will not be able to run when the branch gets
# deleted (when merging the MR).
- apk add --update openssl
- wget https://gitlab.com/gitlab-org/gitlab/-/raw/master/scripts/trigger-build.rb
- chmod 755 trigger-build.rb
variables:
GIT_STRATEGY: none
# By default, deploy the Review App using the `main` branch of the `gitlab-org/gitlab-docs` project
DOCS_BRANCH: main
allow_failure: true
# Trigger a docs build in docs-gitlab-com project
# Useful to preview the docs changes live
# https://docs.gitlab.com/development/documentation/review_apps/
review-docs-deploy:
extends:
- .review-docs
environment:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}
auto_stop_in: 2 weeks
url: https://docs.gitlab.com/upstream-review-mr-${DOCS_GITLAB_REPO_SUFFIX}-${CI_MERGE_REQUEST_IID}/${DOCS_GITLAB_REPO_SUFFIX}
on_stop: review-docs-cleanup
script:
- ./trigger-build.rb docs deploy
# Cleanup remote environment of docs-gitlab-com
review-docs-cleanup:
extends:
- .review-docs
environment:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}
action: stop
script:
- ./trigger-build.rb docs cleanup
================================================
FILE: .gitlab/ci/hosted-runners-bridge.gitlab-ci.yml
================================================
.hosted-runners-bridge:
stage: postrelease
extends:
- .kubernetes runner
variables:
GITLAB_TOKEN: $HOSTED_RUNNERS_BRIDGE_TOKEN
script:
- mage hostedRunners:bridge
hosted runners bridge bleeding edge:
extends:
- .hosted-runners-bridge
rules:
- if: !reference [.if-not-canonical-namespace, if]
when: never
- if: !reference [.if-not-web-or-push-pipeline, if]
when: never
- if: !reference [.if-runner-default-branch, if]
changes: !reference [.code-backstage-patterns]
- if: !reference [.if-security-runner-default-branch, if]
changes: !reference [.code-backstage-patterns]
when: manual
needs:
- job: bleeding edge docker images
artifacts: false
- job: unstable pulp
artifacts: false
hosted runners bridge stable:
extends:
- .hosted-runners-bridge
rules:
- if: !reference [.if-not-canonical-namespace, if]
when: never
- if: !reference [.if-not-web-or-push-pipeline, if]
when: never
- if: !reference [.if-runner-stable-release-ref, if]
changes: !reference [.code-backstage-patterns]
- if: !reference [.if-security-runner-release-ref, if]
changes: !reference [.code-backstage-patterns]
when: manual
needs:
- job: stable docker images
artifacts: false
- job: stable pulp
artifacts: false
================================================
FILE: .gitlab/ci/package.gitlab-ci.yml
================================================
.packages:
extends:
- .rules:merge_request_pipelines:no_docs:no-community-mr
- .kubernetes runner
stage: package
environment:
name: package/$PKGS/$CI_COMMIT_REF_NAME
needs:
- "prebuilt helper images"
- "binaries"
before_script:
- |
# checking GPG signing support
if [ -f "$GPG_KEY_PATH" ]; then
cat ${GPG_KEY_PATH} | gpg --batch --no-tty --allow-secret-key-import --import -
export GPG_KEYID=$(gpg --with-colon --list-secret-keys | head -n1 | cut -d : -f 5)
export GPG_PASSPHRASE=$(cat ${GPG_PASSPHRASE_PATH})
else
echo -e "\033[0;31m****** GPG signing disabled ******\033[0m"
fi
script:
- mage package:prepare
- mage package:verifyIterationVariable
- mage package:$PKGS
artifacts:
paths:
- out/deb/
- out/rpm/
expire_in: 7d
package-deb:
extends:
- .packages
parallel:
matrix:
- PKGS:
- deb64
- debArm64
- deb32
- debArm32
- debIbm
- debRiscv64
- debLoong64
package-rpm:
extends:
- .packages
parallel:
matrix:
- PKGS:
- rpm64
- rpmArm64
- rpm32
- rpmArm32
- rpmIbm
- rpmRiscv64
- rpmFips
- rpmLoong64
package-helpers:
extends:
- .packages
script:
- mage package:prepare
- mage package:verifyIterationVariable
- mage package:helpersDeb
- mage package:helpersRpm
================================================
FILE: .gitlab/ci/postrelease.gitlab-ci.yml
================================================
.trigger-downstream-pipeline-ref:
stage: postrelease
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_BRANCH
UPSTREAM_CI_COMMIT_SHORT_SHA: $CI_COMMIT_SHORT_SHA
rules:
# copy of .rules:merge_request_pipelines:no_docs:only_canonical, slightly modified for variables
- if: '$CI_PROJECT_NAMESPACE !~ /^gitlab-org($|\/)/'
when: never
- if: $CI_PROJECT_PATH != "gitlab-org/gitlab-runner"
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes: !reference [.code-backstage-patterns]
variables:
UPSTREAM_CI_COMMIT_REF: "refs/merge-requests/${CI_MERGE_REQUEST_IID}/merge"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes: !reference [.code-backstage-patterns]
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_REF_NAME
- if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+?\z/
changes: !reference [.code-backstage-patterns]
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_REF_NAME
- if: $CI_COMMIT_REF_NAME =~ /\Av[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?\z/
changes: !reference [.code-backstage-patterns]
variables:
UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_REF_NAME
trigger UBI images build:
extends:
- .trigger-downstream-pipeline-ref
needs:
- job: "development S3"
optional: true
- job: "bleeding edge S3"
optional: true
- job: "stable S3"
optional: true
variables:
BUILD_RELEASE: $CI_COMMIT_REF_NAME
BUILD_RELEASE_SHA: $CI_COMMIT_SHORT_SHA
trigger:
strategy: depend
project: gitlab-org/ci-cd/gitlab-runner-ubi-images
trigger runner-incept tests:
extends:
- .trigger-downstream-pipeline-ref
# make sure the needs jobs here match the ones in the downstream pipeline, or jobs in the downstream pipeline will
# fail with: "This job could not start because it could not retrieve the needed artifacts."
needs:
- binaries
- "helper images"
- "prebuilt helper images"
- job: "development docker images"
optional: true
- job: "bleeding edge docker images"
optional: true
- job: "stable docker images"
optional: true
trigger:
project: gitlab-org/ci-cd/tests/runner-incept
# strategy: depend
package test variables:
extends:
- .trigger-downstream-pipeline-ref
- .rules:release:bleeding-edge
- .kubernetes runner
needs:
- "unstable pulp"
image: alpine:latest
artifacts:
paths:
- package_test_vars.env
before_script:
- apk add git bash
script:
- rm -f package_test_vars.env
- echo "export RUNNER_FROM_VERSION=\"$(git tag | sort -rV | sed "1q;d" | cut -c2-)\"" >> package_test_vars.env
- echo "export RUNNER_FROM_BRANCH=\"gitlab-runner\"" >> package_test_vars.env
- echo "export RUNNER_TO_VERSION=\"$(ci/version)\"" >> package_test_vars.env
- echo "export RUNNER_TO_BRANCH=\"unstable\"" >> package_test_vars.env
trigger runner package tests:
extends:
- .trigger-downstream-pipeline-ref
- .rules:release:bleeding-edge
needs:
- "package test variables"
trigger:
# strategy: depend
project: gitlab-org/ci-cd/runner-tools/gitlab-runner-package-tests
static QA:
extends:
- .rules:merge_request_pipelines:no_docs
- .no_cache
- .kubernetes runner
stage: postrelease
image: alpine:latest
needs:
- code_quality
script: |
if [ "$(cat gl-code-quality-report.json)" != "[]" ] ; then
apk add -U --no-cache jq > /dev/null
jq -C . gl-code-quality-report.json
exit 1
fi
.verify-resources:
extends:
- .rules:merge_request_pipelines:no_docs
- .docker
stage: postrelease
script:
- mage resources:verifyAll
verify development resources:
extends:
- .verify-resources
- .rules:release:development:merge-requests
needs:
- job: "development docker images"
artifacts: true
verify bleeding edge resources:
extends:
- .verify-resources
- .rules:release:bleeding-edge
needs:
- job: "bleeding edge docker images"
artifacts: true
verify stable resources:
extends:
- .verify-resources
- .rules:release:stable:branch
needs:
- job: "stable docker images"
artifacts: true
stable gitlab release:
stage: postrelease
extends:
- .rules:release:stable-or-rc
- .kubernetes runner
dependencies: []
image: registry.gitlab.com/gitlab-org/release-cli:latest
variables:
CHANGELOG: https://gitlab.com/gitlab-org/gitlab-runner/blob/$CI_COMMIT_TAG/CHANGELOG.md
S3: https://gitlab-runner-downloads.s3.amazonaws.com/$CI_COMMIT_TAG
# Setting the CI_PROJECT_ID variable explicitly because we're running this job
# also from the https://gitlab.com/gitlab-org/security/gitlab-runner fork. But it
# should still create the release entry in the canonical one.
CI_PROJECT_ID: 250833
environment:
name: stable/gitlab
url: https://gitlab.com/gitlab-org/gitlab-runner/-/releases
before_script: []
script:
- echo "Releasing to $S3"
release:
name: "$CI_COMMIT_TAG"
description: |
See [the changelog]($CHANGELOG) :rocket:
GitLab Runner documentation can be found at https://docs.gitlab.com/runner/.
tag_name: "$CI_COMMIT_TAG"
ref: "$CI_COMMIT_TAG"
assets:
links:
# binaries
- name: "binary: Linux amd64"
url: "$S3/binaries/gitlab-runner-linux-amd64"
filepath: "/binaries/gitlab-runner-linux-amd64"
- name: "binary: Linux amd64-fips"
url: "$S3/binaries/gitlab-runner-linux-amd64-fips"
filepath: "/binaries/gitlab-runner-linux-amd64-fips"
- name: "binary: Linux 386"
url: "$S3/binaries/gitlab-runner-linux-386"
filepath: "/binaries/gitlab-runner-linux-386"
- name: "binary: Linux arm"
url: "$S3/binaries/gitlab-runner-linux-arm"
filepath: "/binaries/gitlab-runner-linux-arm"
- name: "binary: Linux ppc64el"
url: "$S3/binaries/gitlab-runner-linux-ppc64el"
filepath: "/binaries/gitlab-runner-linux-ppc64el"
- name: "binary: Linux s390x"
url: "$S3/binaries/gitlab-runner-linux-s390x"
filepath: "/binaries/gitlab-runner-linux-s390x"
- name: "binary: Linux riscv64"
url: "$S3/binaries/gitlab-runner-linux-riscv64"
filepath: "/binaries/gitlab-runner-linux-riscv64"
- name: "binary: Linux loong64"
url: "$S3/binaries/gitlab-runner-linux-loong64"
filepath: "/binaries/gitlab-runner-linux-loong64"
- name: "binary: macOS amd64"
url: "$S3/binaries/gitlab-runner-darwin-amd64"
filepath: "/binaries/gitlab-runner-darwin-amd64"
- name: "binary: macOS arm64"
url: "$S3/binaries/gitlab-runner-darwin-arm64"
filepath: "/binaries/gitlab-runner-darwin-arm64"
- name: "binary: FreeBSD amd64"
url: "$S3/binaries/gitlab-runner-freebsd-amd64"
filepath: "/binaries/gitlab-runner-freebsd-amd64"
- name: "binary: FreeBSD arm"
url: "$S3/binaries/gitlab-runner-freebsd-arm"
filepath: "/binaries/gitlab-runner-freebsd-arm"
- name: "binary: FreeBSD 386"
url: "$S3/binaries/gitlab-runner-freebsd-386"
filepath: "/binaries/gitlab-runner-freebsd-386"
- name: "binary: Windows amd64"
url: "$S3/binaries/gitlab-runner-windows-amd64.zip"
filepath: "/binaries/gitlab-runner-windows-amd64.zip"
- name: "binary: Windows arm64"
url: "$S3/binaries/gitlab-runner-windows-arm64.zip"
filepath: "/binaries/gitlab-runner-windows-arm64.zip"
- name: "binary: Windows i386"
url: "$S3/binaries/gitlab-runner-windows-386.zip"
filepath: "/binaries/gitlab-runner-windows-386.zip"
# DEB packages
- name: "package: DEB amd64"
url: "$S3/deb/gitlab-runner_amd64.deb"
filepath: "/packages/deb/gitlab-runner_amd64.deb"
- name: "package: DEB i686"
url: "$S3/deb/gitlab-runner_i686.deb"
filepath: "/packages/deb/gitlab-runner_i686.deb"
- name: "package: DEB armel"
url: "$S3/deb/gitlab-runner_armel.deb"
filepath: "/packages/deb/gitlab-runner_armel.deb"
- name: "package: DEB armhf"
url: "$S3/deb/gitlab-runner_armhf.deb"
filepath: "/packages/deb/gitlab-runner_armhf.deb"
- name: "package: DEB aarch64"
url: "$S3/deb/gitlab-runner_aarch64.deb"
filepath: "/packages/deb/gitlab-runner_aarch64.deb"
- name: "package: DEB arm64"
url: "$S3/deb/gitlab-runner_arm64.deb"
filepath: "/packages/deb/gitlab-runner_arm64.deb"
- name: "package: DEB ppc64el"
url: "$S3/deb/gitlab-runner_ppc64el.deb"
filepath: "/packages/deb/gitlab-runner_ppc64el.deb"
- name: "package: DEB s390x"
url: "$S3/deb/gitlab-runner_s390x.deb"
filepath: "/packages/deb/gitlab-runner_s390x.deb"
- name: "package: DEB riscv64"
url: "$S3/deb/gitlab-runner_riscv64.deb"
filepath: "/packages/deb/gitlab-runner_riscv64.deb"
# RPM packages
- name: "package: RPM amd64"
url: "$S3/rpm/gitlab-runner_amd64.rpm"
filepath: "/packages/rpm/gitlab-runner_amd64.rpm"
- name: "package: RPM amd64-fips"
url: "$S3/rpm/gitlab-runner_amd64-fips.rpm"
filepath: "/packages/rpm/gitlab-runner_amd64-fips.rpm"
- name: "package: RPM i686"
url: "$S3/rpm/gitlab-runner_i686.rpm"
filepath: "/packages/rpm/gitlab-runner_i686.rpm"
- name: "package: RPM arm"
url: "$S3/rpm/gitlab-runner_arm.rpm"
filepath: "/packages/rpm/gitlab-runner_arm.rpm"
- name: "package: RPM armhf"
url: "$S3/rpm/gitlab-runner_armhf.rpm"
filepath: "/packages/rpm/gitlab-runner_armhf.rpm"
- name: "package: RPM arm64"
url: "$S3/rpm/gitlab-runner_arm64.rpm"
filepath: "/packages/rpm/gitlab-runner_arm64.rpm"
- name: "package: RPM aarch64"
url: "$S3/rpm/gitlab-runner_aarch64.rpm"
filepath: "/packages/rpm/gitlab-runner_aarch64.rpm"
- name: "package: RPM ppc64le"
url: "$S3/rpm/gitlab-runner_ppc64le.rpm"
filepath: "/packages/rpm/gitlab-runner_ppc64le.rpm"
- name: "package: RPM s390x"
url: "$S3/rpm/gitlab-runner_s390x.rpm"
filepath: "/packages/rpm/gitlab-runner_s390x.rpm"
- name: "package: RPM riscv64"
url: "$S3/rpm/gitlab-runner_riscv64.rpm"
filepath: "/packages/rpm/gitlab-runner_riscv64.rpm"
# Other files
- name: "checksums"
url: "$S3/release.sha256"
filepath: "/release.sha256"
- name: "checksums GPG signature"
url: "$S3/release.sha256.asc"
filepath: "/release.sha256.asc"
- name: "other release artifacts"
url: "$S3/index.html"
filepath: "/index.html"
================================================
FILE: .gitlab/ci/prepare.gitlab-ci.yml
================================================
.image_builder:
extends:
- .docker
stage: prepare
image: docker:${DOCKER_VERSION}-git
script:
- apk add --no-cache --upgrade curl
- source ./ci/build_ci_image
prepare ci image:
extends:
- .image_builder
- .rules:prepare:ci:image:merge-requests
variables:
BUILD_IMAGE: $CI_IMAGE
BUILD_DOCKERFILE: ./dockerfiles/ci/Dockerfile
PWSH_VERSION: "7.4.6-1"
prepare alpine-no-root image:
extends:
- .image_builder
- .rules:prepare:alpine-no-root:image:merge-requests
variables:
BUILD_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner/alpine-no-root:latest
BUILD_DOCKERFILE: ./tests/dockerfiles/alpine-no-root/Dockerfile
prepare alpine-entrypoint image:
extends:
- .image_builder
- .rules:prepare:alpine-entrypoint:image:merge-requests
variables:
BUILD_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner/alpine-entrypoint:latest
BUILD_DOCKERFILE: ./tests/dockerfiles/alpine-entrypoint/Dockerfile
prepare alpine-entrypoint-stderr image:
extends:
- .image_builder
- .rules:prepare:alpine-entrypoint:image:merge-requests
variables:
BUILD_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner/alpine-entrypoint-stderr:latest
BUILD_DOCKERFILE: ./tests/dockerfiles/alpine-entrypoint/Dockerfile.stderr
prepare alpine-entrypoint-pre-post-trap image:
extends:
- .image_builder
- .rules:prepare:alpine-entrypoint:image:merge-requests
variables:
BUILD_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner/alpine-entrypoint-pre-post-trap:latest
BUILD_DOCKERFILE: ./tests/dockerfiles/alpine-entrypoint/Dockerfile.pre-post-trap
prepare powershell-entrypoint-pre-post-trap image:
extends:
- .image_builder
- .rules:prepare:powershell-entrypoint:image:merge-requests
variables:
BUILD_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner/powershell-entrypoint-pre-post-trap:latest
BUILD_DOCKERFILE: ./tests/dockerfiles/powershell-entrypoint/Dockerfile.pre-post-trap
prepare alpine-id-overflow image:
extends:
- .image_builder
- .rules:prepare:alpine-id-overflow:image:merge-requests
variables:
BUILD_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner/alpine-id-overflow:latest
BUILD_DOCKERFILE: ./tests/dockerfiles/alpine-id-overflow/Dockerfile
prepare helper-entrypoint image:
extends:
- .docker
- .rules:prepare:gitlab-runner-helper-entrypoint:image:merge-requests
stage: prepare
variables:
BUILD_DOCKERFILE_BASEDIR: ./tests/dockerfiles/gitlab-runner-helper-entrypoint
BUILD_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner/helper-entrypoint:latest
BUILD_DOCKERFILE: "$BUILD_DOCKERFILE_BASEDIR/dockerfile"
script:
- make helper-bin-host
- mkdir -p "$BUILD_DOCKERFILE_BASEDIR/binaries/"
- cp out/binaries/gitlab-runner-helper/gitlab-runner-helper.x86_64 "$BUILD_DOCKERFILE_BASEDIR/binaries/gitlab-runner-helper"
- source ./ci/build_ci_image
prepare go fips:
extends:
- .docker
- .rules:prepare:go-fips:image:merge-requests
stage: prepare
image: docker:${DOCKER_VERSION}-git
variables:
BUILD_IMAGE: $GO_FIPS_IMAGE
GO_VERSION: $GO_FIPS_VERSION
GO_FIPS_BASE_IMAGE: "redhat/${GO_FIPS_UBI_VERSION}-minimal:latest"
script:
- apk add --no-cache --upgrade curl make bash
- make go-fips-docker
prepare ubi base:
extends:
- .docker
- .rules:prepare:ubi-base:image:merge-requests
timeout: 4h
stage: prepare
image: docker:${DOCKER_VERSION}-git
script:
- apk add --no-cache --upgrade curl make bash
- make ubi-fips-base-docker
test ci scripts:
stage: prepare
extends:
- .rules:prepare:test-ci-scripts:merge-requests
needs:
- job: "prepare ci image"
optional: true
script:
- make test_go_scripts
================================================
FILE: .gitlab/ci/qa.gitlab-ci.yml
================================================
check version definition:
stage: qa
extends:
- .rules:merge_request_pipelines
- .kubernetes runner
needs: []
script:
- grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' VERSION
check modules:
stage: qa
extends:
- .rules:merge_request_pipelines:no_docs
- .no_cache_and_dependencies
- .kubernetes runner
needs:
- "prepare done"
script:
- make check_modules
check generated files:
stage: qa
extends:
- .rules:merge_request_pipelines:no_docs
- .no_cache_and_dependencies
- .kubernetes runner
- .check generated files kubernetes limits
needs:
- "prepare done"
script:
- make check_generated_files
check magefiles:
stage: qa
extends:
- .rules:merge_request_pipelines:no_docs
- .no_cache_and_dependencies
- .kubernetes runner
needs:
- "prepare done"
script:
- make check_magefiles
check test directives:
stage: qa
extends:
- .rules:merge_request_pipelines:no_docs
- .no_cache_and_dependencies
- .kubernetes runner
needs:
- "prepare done"
script:
- make check_test_directives
code_quality:
stage: qa
extends:
- .rules:merge_request_pipelines:no_docs
- .no_dependencies
# Use GOCACHE instead of GOLANGCI_LINT_CACHE
# to avoid [false lint positives](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/2187#note_373008672)
- .go-cache
image: registry.gitlab.com/gitlab-org/ci-cd/runner-tools/runner-linters:${GOLANGLINT_VERSION}-go${GO_VERSION}
needs: []
allow_failure: true
variables:
REPORT_FILE: gl-code-quality-report.json
LINT_FLAGS: "--color=never --timeout=15m"
OUT_FORMAT: "--output.code-climate.path=gl-code-quality-report.json"
before_script:
- !reference [.go-cache, before_script]
# Ensure the goargs linter plugin is available at .tmp/bin/goargs.so to suit .golangci.yml
- mkdir -p .tmp/bin && ln -s /usr/lib/goargs.so .tmp/bin/goargs.so
# Copy the Docker image's golangci-lint to the location expected by `make lint` so that it is not built
- cp $(which golangci-lint) .tmp/bin/golangci-lint
script:
- make --silent lint
timeout: 20 minutes
artifacts:
reports:
codequality: ${REPORT_FILE}
paths:
- ${REPORT_FILE}
when: always
expire_in: 7d
mage tests:
extends:
- .rules:merge_request_pipelines:no_docs
- .kubernetes runner
stage: qa
needs:
- "prepare done"
script:
- make mage-test
# Perform documentation linting and link checking on Markdown files
docs:lint markdown:
image: $DOCS_LINT_IMAGE
stage: qa
extends:
- .rules:merge_request_pipelines:docs
- .no_cache_and_dependencies
- .kubernetes runner
needs: []
script:
# Makefiles in this project expect Go to be available
- apk add --quiet go
# Lint content and Markdown, and check links
- make lint-docs VALE_MIN_ALERT_LEVEL=error
docs:lint i18n markdown:
image: $DOCS_LINT_IMAGE
stage: qa
extends:
- .rules:merge_request_pipelines:docs-i18n
- .no_cache_and_dependencies
needs: []
allow_failure: true
script:
# Makefiles in this project expect Go to be available
- apk add --quiet go
# Lint i18n content and Markdown, and check links
- make lint-i18n-docs VALE_MIN_ALERT_LEVEL=error
# Verify localized documentation files have corresponding English versions
docs:lint i18n paths:
image: $DOCS_LINT_IMAGE
stage: qa
extends:
- .rules:merge_request_pipelines:docs-i18n
- .no_cache_and_dependencies
- .kubernetes runner
needs: []
allow_failure: true
script:
# Run the i18n path verification script
- ./scripts/docs-i18n-verify-paths
docs:check feature flags:
stage: qa
extends:
- .rules:merge_request_pipelines
- .no_cache_and_dependencies
- .kubernetes runner
needs: []
script:
- cp docs/configuration/feature-flags.md docs/configuration/feature-flags.md.orig
- make update_feature_flags_docs
- |
diff docs/configuration/feature-flags.md.orig docs/configuration/feature-flags.md || (
echo
echo "Feature Flags list in documentation is not up-to-date"
echo "Run 'make update_feature_flags_docs' to update it"
echo
exit 1
)
docs:check development docs Go version:
extends:
- .rules:merge_request_pipelines:docs
- .no_cache_and_dependencies
- .kubernetes runner
needs: []
stage: qa
script:
- export GO_VERSION=$(cat .gitlab/ci/_common.gitlab-ci.yml | yq '.variables.GO_VERSION')
- export EXIT_CODE=0
- grep $GO_VERSION docs/development/_index.md || EXIT_CODE=$?
- if [ $EXIT_CODE -ne 0 ]; then echo "Make sure to update all Go versions in docs/development/_index.md to $GO_VERSION"; exit 1; fi
docs:check Kubernetes API docs:
extends:
- .rules:merge_request_pipelines:docs
- .no_cache_and_dependencies
- .kubernetes runner
needs: []
stage: qa
script:
- cp docs/executors/kubernetes/_index.md docs/executors/kubernetes/_index.md.orig
- mage k8s:generatePermissionsDocs
- |
diff docs/executors/kubernetes/_index.md.orig docs/executors/kubernetes/_index.md || (
echo
echo "Kubernetes API list in documentation is not up-to-date"
echo "Run 'mage k8s:generatePermissionsDocs' to update it"
echo
exit 1
)
# This jobs is triggered weekly and needs either aq PRIVATE_TOKEN or CI_JOB_TOKEN variable.
docs:check supported distros package docs:
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
stage: qa
script:
- cp docs/install/linux-repository.md docs/install/linux-repository.md.orig
- mage package:docs
- |
diff docs/install/linux-repository.md.orig docs/install/linux-repository.md || (
echo
echo "Supported distributions documentation is not up-to-date"
echo "Run 'mage package:docs' to update it"
echo
exit 1
)
docs:check Hugo build:
image: registry.gitlab.com/gitlab-org/technical-writing/docs-gitlab-com/docs-gitlab-com-builder:hugo-0.150.1
extends:
- .rules:merge_request_pipelines:docs-all
- .no_cache_and_dependencies
- .kubernetes runner
needs: []
stage: qa
variables:
DOCS_BRANCH: "main"
before_script:
# Check if this a release branch, which would be the case for a backport.
# If this is a backport MR, we need to checkout the appropriate version
# of the Docs website.
- |
if [[ $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ [0-9]+-[0-9]+-stable ]]; then
BRANCH_NAME=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
echo "Detected merge request to stable branch: $BRANCH_NAME"
# Check if we're directly on a stable branch (direct push/commit)
elif [[ $CI_COMMIT_BRANCH =~ [0-9]+-[0-9]+-stable ]]; then
BRANCH_NAME=$CI_COMMIT_BRANCH
echo "Detected direct commit to stable branch: $BRANCH_NAME"
fi
# Extract version info if we found a stable branch
if [[ -n $BRANCH_NAME ]]; then
MAJOR=$(echo $BRANCH_NAME | cut -d '-' -f 1)
MINOR=$(echo $BRANCH_NAME | cut -d '-' -f 2)
# Convert GitLab Runner style (17-9-stable) to GitLab Docs style (17.9)
DOCS_BRANCH_CANDIDATE="$MAJOR.$MINOR"
# Check if the branch exists in the Docs website repo, fallback to main if not
if git ls-remote --heads --exit-code https://gitlab.com/gitlab-org/technical-writing/docs-gitlab-com.git "refs/heads/$DOCS_BRANCH_CANDIDATE" >/dev/null 2>&1; then
DOCS_BRANCH="$DOCS_BRANCH_CANDIDATE"
echo "Using docs-gitlab-com branch $DOCS_BRANCH for release branch"
else
DOCS_BRANCH="main"
echo "Branch $DOCS_BRANCH_CANDIDATE does not exist, falling back to main"
fi
fi
# Clone the GitLab Docs project
- echo "Cloning Docs site $DOCS_BRANCH branch..."
- git clone --depth 1 --filter=tree:0 --branch $DOCS_BRANCH https://gitlab.com/gitlab-org/technical-writing/docs-gitlab-com.git
- cd docs-gitlab-com
- make add-latest-icons
script:
# Test that Hugo will build
- hugo --gc --printPathWarnings --panicOnWarning --environment test
# Test for invalid index pages
# See https://gitlab.com/gitlab-org/technical-writing/docs-gitlab-com/-/blob/main/scripts/check-index-filenames.sh
- make check-index-pages SEARCH_DIR="../docs"
- make check-index-pages SEARCH_DIR="../docs-locale"
yaml:lint:
stage: qa
image: node:alpine
needs: []
extends:
- .rules:merge_request_pipelines
- .kubernetes runner
script:
- npm install -g prettier
- echo "Checking YAML formatting in .gitlab/ci/ directory..."
- prettier --check ".gitlab/ci/**/*.{yml,yaml}" --log-level warn
================================================
FILE: .gitlab/ci/rebase.gitlab-ci.yml
================================================
# Rebase branches in $REPO_REBASE_BRANCHES, separated by a comma on top of main
rebase on main:
extends:
- .no_cache_and_dependencies
stage: rebase
rules:
- if: $REPO_REBASE_BRANCHES != "" && $REPO_REBASE_BRANCHES != null && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "gitlab-org/gitlab-runner"
allow_failure: true
script:
- |
git config --global user.email "gitlab-runner-ci-rebase@gitlab.com"
git config --global user.name "GitLab Runner CI Rebase"
git fetch origin $CI_DEFAULT_BRANCH
git checkout -B $CI_DEFAULT_BRANCH origin/$CI_DEFAULT_BRANCH
git remote add push-remote https://oauth2:${REPO_REBASE_PUSH_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git
IFS=',' read -ra BRANCHES <<< "$REPO_REBASE_BRANCHES"
for BRANCH in "${BRANCHES[@]}"; do
echo "Processing branch: $BRANCH"
git fetch origin $BRANCH
git checkout $BRANCH
if ! git rebase $CI_DEFAULT_BRANCH; then
echo "Rebase failed for branch $BRANCH"
exit 1
fi
# --force-with-lease doesn't work on shallow clones
git push push-remote $BRANCH --force
git checkout $CI_DEFAULT_BRANCH
done
================================================
FILE: .gitlab/ci/release.gitlab-ci.yml
================================================
# S3 Releases
#############
.release_s3:
stage: release
dependencies:
- "prebuilt helper images"
- "binaries"
- "package-deb"
- "package-rpm"
- "package-helpers"
before_script:
- ./ci/touch_git
- |
# checking GPG signing support
if [ -f "$GPG_KEY_PATH" ]; then
export GPG_KEY=$(cat ${GPG_KEY_PATH})
export GPG_PASSPHRASE=$(cat ${GPG_PASSPHRASE_PATH})
else
echo -e "\033[0;31m****** GPG signing disabled ******\033[0m"
fi
script:
- make release_s3
tags:
- !reference [.instance-medium]
.release_pulp:
stage: release
dependencies:
- "package-deb"
- "package-rpm"
- "package-helpers"
before_script:
- ./ci/touch_git
- mage pulp:createConfig
script:
- mage pulp:push deb "$CI_JOB_NAME" "$DIST_FLAVOR"
- mage pulp:push rpm "$CI_JOB_NAME" "$DIST_FLAVOR"
.release_artifacts:
artifacts:
paths:
- out/release_artifacts/*
development S3:
extends:
- .release_s3
- .rules:runner-only:release:development:merge-requests
environment:
name: development/s3/${CI_COMMIT_REF_NAME}
url: https://gitlab-runner-downloads.s3.amazonaws.com/${CI_COMMIT_REF_NAME}/index.html
bleeding edge S3:
extends:
- .release_s3
- .rules:release:bleeding-edge
environment:
name: bleeding_edge/s3
url: https://gitlab-runner-downloads.s3.amazonaws.com/${CI_COMMIT_REF_NAME}/index.html
stable S3:
extends:
- .release_s3
- .rules:release:stable:branch
environment:
name: stable/s3
url: https://gitlab-runner-downloads.s3.amazonaws.com/${CI_COMMIT_REF_NAME}/index.html
unstable pulp:
extends:
- .release_pulp
- .rules:release:bleeding-edge
environment:
name: bleeding_edge/pulp
url: https://pulp.gitlab.com/runner/unstable
parallel:
matrix:
- DIST_FLAVOR:
- debian
- ubuntu
- el
- fedora
- amazon
- sles
- opensuse
stable pulp:
extends:
- .release_pulp
- .rules:release:stable:branch
environment:
name: stable/pulp
url: https://pulp.gitlab.com/runner/gitlab-runner
parallel:
matrix:
- DIST_FLAVOR:
- debian
- ubuntu
- raspbian
- linuxmint
- el
- ol
- fedora
- amazon
- sles
- opensuse
# Image Registry Releases
#########################
.overwrite_security_docker_variables: &overwrite_security_docker_variables |
if [[ $CI_COMMIT_REF_NAME =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && [[ $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner" ]]; then
export CI_REGISTRY="registry.gitlab.com"
export CI_REGISTRY_IMAGE="registry.gitlab.com/gitlab-org/gitlab-runner"
export CI_REGISTRY_USER=$CI_REGISTRY_USER_CANONICAL
export CI_REGISTRY_PASSWORD=$CI_REGISTRY_PASSWORD_CANONICAL
fi
development docker images:
stage: release
extends:
- .docker
- .go-cache
- .rules:release:development:merge-requests
needs:
- "helper images"
- "runner images"
artifacts:
paths:
- out/release_artifacts/*
script:
- *overwrite_security_docker_variables
- echo "${CI_REGISTRY_PASSWORD}" | docker login --username "${CI_REGISTRY_USER}" --password-stdin "${CI_REGISTRY}"
- (cd scripts/pusher && go build)
- tags=$(make print_image_tags)
# dev gitlab registry images
- (cd scripts/pusher && ./pusher runner-images.json "${CI_REGISTRY_IMAGE}/gitlab-runner-dev" $tags)
- (cd scripts/pusher && ./pusher helper-images.json "${CI_REGISTRY_IMAGE}/gitlab-runner-helper-dev" $tags)
bleeding edge docker images:
stage: release
extends:
- .docker
- .go-cache
- .rules:release:bleeding-edge
environment:
name: bleeding_edge/docker_images/linux
url: https://hub.docker.com/r/gitlab/gitlab-runner/tags/
needs:
- "helper images"
- "runner images"
artifacts:
paths:
- out/release_artifacts/*
script:
- *overwrite_security_docker_variables
- echo "${CI_REGISTRY_PASSWORD}" | docker login --username "${CI_REGISTRY_USER}" --password-stdin "${CI_REGISTRY}"
- echo "${DOCKER_HUB_PASSWORD}" | docker login --username "${DOCKER_HUB_USER}" --password-stdin "registry.hub.docker.com/gitlab"
- (cd scripts/pusher && go build)
- tags=$(make print_image_tags)
# bleeding gitlab registry images
- (cd scripts/pusher && ./pusher runner-images.json "${CI_REGISTRY_IMAGE}" $tags)
- (cd scripts/pusher && ./pusher helper-images.json "${CI_REGISTRY_IMAGE}/gitlab-runner-helper" $tags)
# bleeding docker hub registry images
- (cd scripts/pusher && ./pusher runner-images.json "registry.hub.docker.com/gitlab/gitlab-runner" $tags)
- (cd scripts/pusher && ./pusher helper-images.json "registry.hub.docker.com/gitlab/gitlab-runner-helper" $tags)
stable docker images:
stage: release
variables:
# Setting the CI_PROJECT_ID and CI_REGISTRY_IMAGE variable explicitly because we're
# running this job also from the https://gitlab.com/gitlab-org/security/gitlab-runner
# fork. But it should still create the release entry in the canonical one.
CI_REGISTRY: registry.gitlab.com
CI_REGISTRY_IMAGE: registry.gitlab.com/gitlab-org/gitlab-runner
extends:
- .docker
- .go-cache
- .rules:release:stable:branch
environment:
name: stable/docker_images/linux
url: https://hub.docker.com/r/gitlab/gitlab-runner/tags/
dependencies:
- "helper images"
- "runner images"
artifacts:
paths:
- out/release_artifacts/*
script:
- *overwrite_security_docker_variables
- echo "${CI_REGISTRY_PASSWORD}" | docker login --username "${CI_REGISTRY_USER}" --password-stdin "${CI_REGISTRY}"
- echo "${DOCKER_HUB_PASSWORD}" | docker login --username "${DOCKER_HUB_USER}" --password-stdin "registry.hub.docker.com/gitlab"
- aws --region us-east-1 ecr-public get-login-password | docker login --username "AWS" --password-stdin "public.ecr.aws/gitlab"
- (cd scripts/pusher && go build)
- tags=$(make print_image_tags)
# stable gitlab registry images
- (cd scripts/pusher && ./pusher runner-images.json "${CI_REGISTRY_IMAGE}" $tags)
- (cd scripts/pusher && ./pusher helper-images.json "${CI_REGISTRY_IMAGE}/gitlab-runner-helper" $tags)
# stable docker hub registry images
- (cd scripts/pusher && ./pusher runner-images.json "registry.hub.docker.com/gitlab/gitlab-runner" $tags)
- (cd scripts/pusher && ./pusher helper-images.json "registry.hub.docker.com/gitlab/gitlab-runner-helper" $tags)
# stable aws registry images
- (cd scripts/pusher && ./pusher runner-images.json "public.ecr.aws/gitlab/gitlab-runner" $tags)
- (cd scripts/pusher && ./pusher helper-images.json "public.ecr.aws/gitlab/gitlab-runner-helper" $tags)
================================================
FILE: .gitlab/ci/test-kubernetes-integration.gitlab-ci.yml
================================================
.integration kubernetes:
extends:
- .rules:merge_request_pipelines:no_docs:no-community-mr:no-security-mr
tags:
- $KUBERNETES_RUNNER_INTEGRATION_TAG
stage: test kubernetes integration
needs:
- "provision integration kubernetes"
- job: "development docker images"
optional: true
- job: "bleeding edge docker images"
optional: true
- job: "stable docker images"
optional: true
variables:
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: "k8s-runner-integration-tests-runner-$CI_PIPELINE_ID"
before_script:
- go install gotest.tools/gotestsum@latest
script:
# Note: We use hide-summary=output due to https://github.com/gotestyourself/gotestsum/issues/423
- >
gotestsum --format=testname --format-hide-empty-pkg --rerun-fails=3 \
--hide-summary=output --packages=gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes \
--junitfile=junit_report.xml --junitfile-hide-empty-pkg -- \
-timeout=10m -parallel=20 $EXTRA_GO_TEST_FLAGS \
-tags=integration,kubernetes ./executors/kubernetes/...
artifacts:
when: always
paths:
- junit_report.xml
reports:
junit: junit_report.xml
provision integration kubernetes:
extends:
- .integration kubernetes
needs:
- "prepare done"
variables:
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: "k8s-runner-integration-tests-provisioner"
script:
- mage k8s:provisionIntegrationKubernetes $CI_PIPELINE_ID
integration kubernetes exec legacy:
extends:
- .integration kubernetes
resource_group: "$CI_COMMIT_REF_SLUG-k8s-integration-exec-legacy"
variables:
CI_RUNNER_TEST_FEATURE_FLAG: "FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY"
CI_RUNNER_TEST_FEATURE_FLAG_VALUE: "true"
EXTRA_GO_TEST_FLAGS: "-run=TestRunIntegrationTestsWithFeatureFlag"
integration kubernetes attach:
extends:
- .integration kubernetes
resource_group: "$CI_COMMIT_REF_SLUG-k8s-integration-attach"
variables:
CI_RUNNER_TEST_FEATURE_FLAG: "FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY"
CI_RUNNER_TEST_FEATURE_FLAG_VALUE: "false"
EXTRA_GO_TEST_FLAGS: "-run=TestRunIntegrationTestsWithFeatureFlag"
integration kubernetes:
extends:
- .integration kubernetes
resource_group: "$CI_COMMIT_REF_SLUG-k8s-integration"
variables:
EXTRA_GO_TEST_FLAGS: "-skip=TestRunIntegrationTestsWithFeatureFlag"
destroy integration kubernetes:
extends:
- .integration kubernetes
needs:
- job: "integration kubernetes"
optional: true
- job: "integration kubernetes exec legacy"
optional: true
- job: "integration kubernetes attach"
optional: true
variables:
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: "k8s-runner-integration-tests-provisioner"
script:
- mage k8s:destroyIntegrationKubernetes $CI_PIPELINE_ID
================================================
FILE: .gitlab/ci/test.gitlab-ci.yml
================================================
include:
- component: ${CI_SERVER_FQDN}/components/dependency-scanning/main@1.1.1
- component: ${CI_SERVER_FQDN}/components/sast/sast@3.4.0
inputs:
run_advanced_sast: true
- template: Security/Coverage-Fuzzing.latest.gitlab-ci.yml
# Overriding security scanning jobs from templates, because
# we need to replace the rules with our own, the same
# as in `.merge_request_pipelines` template.
dependency-scanning:
rules: !reference [".rules:merge_request_pipelines:no_docs", rules]
variables:
FF_SCRIPT_TO_STEP_MIGRATION: "false" # Disable the FF because it breaks the component
gitlab-advanced-sast:
rules: !reference [".rules:merge_request_pipelines:no_docs", rules]
.linux test:
extends:
- .go-cache
stage: test
artifacts:
paths:
- .splitic/
when: always
expire_in: 7d
reports:
junit: .splitic/junit_*.xml
unit test:
extends:
- .linux test
- .rules:merge_request_pipelines:no_docs:unit_test
- .kubernetes runner
- .unit tests kubernetes limits
needs:
- "clone test repo"
- "prepare done"
script:
- make splitic
- >
.tmp/bin/splitic test -race \
-flaky .flaky-tests.txt \
-junit-report .splitic/junit_report.xml \
-cover-report .splitic/cover_0.profile -cover -coverpkg gitlab.com/gitlab-org/gitlab-runner/... \
-tags !integration -env-passthrough ./scripts/envs/allowlist_common.env -env-passthrough ./scripts/envs/allowlist_unix.env ./... \
-- -ldflags "$(make print_test_ldflags)"
.linux integration test:
extends:
- .docker
.with outer token:
variables:
OUTER_CI_JOB_TOKEN: ${CI_JOB_TOKEN}
integration test:
extends:
- .linux test
- .rules:merge_request_pipelines:no_docs:no-community-mr
- .linux integration test
- .with outer token
needs:
- "clone test repo"
- "prebuilt helper images"
- "prepare done"
script:
- docker import out/helper-images/prebuilt-alpine-latest-x86_64.tar.xz registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-latest
- go install gitlab.com/gitlab-org/fleeting/fleeting-plugin-static/cmd/fleeting-plugin-static@latest
- make splitic
- >
.tmp/bin/splitic test \
-flaky .flaky-tests.txt \
-junit-report .splitic/junit_${CI_NODE_INDEX}.xml \
-cover-report .splitic/cover_${CI_NODE_INDEX}.profile -cover -coverpkg gitlab.com/gitlab-org/gitlab-runner/... \
-env-passthrough ./scripts/envs/allowlist_common.env -env-passthrough ./scripts/envs/allowlist_unix.env \
-tags integration \
./... \
-- -ldflags "$(make print_test_ldflags)" -timeout 25m
parallel: 4
integration test (docker, steps):
extends:
- integration test
variables:
RUNNER_TEST_FEATURE_FLAGS: "FF_SCRIPT_TO_STEP_MIGRATION"
script:
- docker import out/helper-images/prebuilt-alpine-latest-x86_64.tar.xz registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-latest
- go install gitlab.com/gitlab-org/fleeting/fleeting-plugin-static/cmd/fleeting-plugin-static@latest
- make splitic
- >
.tmp/bin/splitic test \
-flaky .flaky-tests.txt \
-junit-report .splitic/junit_${CI_NODE_INDEX}_docker_steps.xml \
-cover-report .splitic/cover_${CI_NODE_INDEX}_docker_steps.profile -cover -coverpkg gitlab.com/gitlab-org/gitlab-runner/... \
-env-passthrough ./scripts/envs/allowlist_common.env -env-passthrough ./scripts/envs/allowlist_unix.env \
-tags integration \
./executors/docker \
-- -ldflags "$(make print_test_ldflags)" -timeout 1h
parallel: 1
when: manual
allow_failure: true
integration test (docker, concrete, steps):
extends:
- integration test
variables:
RUNNER_TEST_FEATURE_FLAGS: "FF_CONCRETE"
script:
- docker import out/helper-images/prebuilt-alpine-latest-x86_64.tar.xz registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-latest
- go install gitlab.com/gitlab-org/fleeting/fleeting-plugin-static/cmd/fleeting-plugin-static@latest
- make splitic
- >
.tmp/bin/splitic test \
-flaky .flaky-tests.txt \
-junit-report .splitic/junit_${CI_NODE_INDEX}_docker_concrete_steps.xml \
-cover-report .splitic/cover_${CI_NODE_INDEX}_docker_concrete_steps.profile -cover -coverpkg gitlab.com/gitlab-org/gitlab-runner/... \
-env-passthrough ./scripts/envs/allowlist_common.env -env-passthrough ./scripts/envs/allowlist_unix.env \
-tags integration \
./executors/docker \
-- -ldflags "$(make print_test_ldflags)" -timeout 1h
parallel: 1
when: manual
allow_failure: true
integration test with race:
extends:
- integration test
- .go-cache
variables:
CGO_ENABLED: "1"
script:
- make splitic
- >
.tmp/bin/splitic test \
-flaky .flaky-tests.txt \
-race \
-junit-report .splitic/junit_${CI_NODE_INDEX}.xml \
-cover-report .splitic/cover_${CI_NODE_INDEX}.profile -cover -coverpkg gitlab.com/gitlab-org/gitlab-runner/... \
-env-passthrough ./scripts/envs/allowlist_common.env -env-passthrough ./scripts/envs/allowlist_unix.env \
-tags integration \
./... \
-- -ldflags "$(make print_test_ldflags)" -timeout 40m
fuzz variable mask:
extends:
- .fuzz_base
- .no_dependencies
- .rules:merge_request_pipelines:no_docs
- .kubernetes runner
image: golang:$GO_VERSION
stage: test
variables:
COVFUZZ_SEED_CORPUS: "./common/buildlogger/internal/testdata/corpus"
script:
- apt update && apt install -y clang
- go install github.com/dvyukov/go-fuzz/go-fuzz@latest && go install github.com/dvyukov/go-fuzz/go-fuzz-build@latest && go get github.com/dvyukov/go-fuzz/go-fuzz-dep@latest
- go-fuzz-build -libfuzzer -o fuzz_variable_mask.a -preserve crypto/internal/bigmod ./common/buildlogger/internal
- clang -fsanitize=fuzzer fuzz_variable_mask.a -o fuzz_variable_mask
- ./gitlab-cov-fuzz run -- ./fuzz_variable_mask -only_ascii=1 -max_len=128 -max_total_time=300
allow_failure: false
.windows test:
extends:
- .rules:merge_request_pipelines:no_docs
- .go-cache-windows
stage: test
parallel: 6
before_script:
- !reference [.go-cache-windows, before_script]
- start-service docker
- |
@(
@{DisableRealtimeMonitoring = $true}
) | Foreach-Object {
Set-MpPreference @_
}
- git config --system core.longpaths true
- New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
- $ProgressPreference = 'SilentlyContinue'
- (Measure-Command { curl -o golang-windows-amd64.zip $env:RUNNER_IMAGES_WINDOWS_GO_URL }).TotalSeconds
- if (Test-Path "C:\Program Files\Go") { Remove-Item -Path "C:\Program Files\Go" -Recurse -Force }
- New-Item -Path "C:\Program Files\Go" -ItemType Directory > $null
- (Measure-Command { 7z x .\golang-windows-amd64.zip -o"C:\Program Files\Go" }).TotalSeconds
- rm golang-windows-amd64.zip
- $env:Path = "C:\Program Files\Go\bin;$env:Path"
- go version
- echo $env:GOCACHE
- go env GOCACHE
- go install gitlab.com/ajwalker/splitic@latest
- $env:Path += ";$(go env GOPATH)/bin"
artifacts:
paths:
- .splitic/
when: always
expire_in: 7d
reports:
junit: .splitic/junit_*.xml
allow_failure:
exit_codes: 99
.windows unit test:
extends:
- .windows test
parallel: 2
needs:
- "clone test repo"
#- 'prepare done'
script:
- splitic test -flaky .flaky-tests.txt -junit-report .splitic/junit_${WINDOWS_VERSION}_${CI_NODE_INDEX}.xml -quarantined ci/.test-failures.${WINDOWS_VERSION}.txt -cover-report .splitic/cover_windows_${CI_NODE_INDEX}.profile -cover -coverpkg gitlab.com/gitlab-org/gitlab-runner/... -env-passthrough ./scripts/envs/allowlist_common.env -env-passthrough ./scripts/envs/allowlist_windows.env -fail-exit-code 99 ./... -- -timeout 30m
.windows integration test:
extends:
- .windows test
- .with outer token
parallel: 4
needs:
- "clone test repo"
- "prepare done"
script:
# pre-pull windows images before starting tests
- choco install -y zstandard --version=$ZSTD_VERSION --checksum64=$ZSTD_CHECKSUM
- zstd -d out/helper-images/prebuilt-windows-${WINDOWS_PREBUILT}-x86_64.docker.tar.zst
- $output = docker load --input "out/helper-images/prebuilt-windows-${WINDOWS_PREBUILT}-x86_64.docker.tar" 2>&1
- $image_id = ($output | Select-String "Loaded image ID:").ToString().Split()[3]
- docker tag ${image_id} gitlab/gitlab-runner-helper:x86_64-bleeding-${WINDOWS_VERSION}
- docker tag ${image_id} registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-latest-${WINDOWS_VERSION}
- docker pull registry.gitlab.com/gitlab-org/ci-cd/tests/liveness:0.1.0
- docker network create -d "nat" test-network
- docker network rm test-network
- go install gitlab.com/gitlab-org/fleeting/fleeting-plugin-static/cmd/fleeting-plugin-static@latest
- splitic test -flaky .flaky-tests.txt -junit-report .splitic/junit_${WINDOWS_VERSION}_${CI_NODE_INDEX}.xml -quarantined ci/.test-failures.${WINDOWS_VERSION}.txt -cover-report .splitic/cover_windows_${CI_NODE_INDEX}.profile -cover -coverpkg gitlab.com/gitlab-org/gitlab-runner/... -env-passthrough ./scripts/envs/allowlist_common.env -env-passthrough ./scripts/envs/allowlist_windows.env -fail-exit-code 99 -tags integration ./... -- -timeout 55m
windows 1809 compile tests:
extends:
- .windows unit test
- .windows1809
- .rules:merge_request_pipelines:no_docs:no-community-mr
parallel: null
script:
- go test -count=1 --tags=integration,kubernetes -run=nope ./...
- go test -count=1 --tags=integration,steps -run=nope ./...
- go test -count=1 --tags=integration -run=nope ./...
- go test -count=1 -run=nope ./...
windows 21H2 compile tests:
extends:
- .windows unit test
- .windows21H2
- .rules:merge_request_pipelines:no_docs:no-community-mr
parallel: null
script:
- go test -count=1 --tags=integration,kubernetes -run=nope ./...
- go test -count=1 --tags=integration,steps -run=nope ./...
- go test -count=1 --tags=integration -run=nope ./...
- go test -count=1 -run=nope ./...
# Only test the oldest supported version in merge requests,
# but test all versions in the default branch.
windows 1809 unit tests:
extends:
- .windows unit test
- .windows1809
- .rules:merge_request_pipelines:no_docs:no-community-mr
windows 21H2 unit tests:
extends:
- .windows unit test
- .windows21H2
- .rules:merge_request_pipelines:no_docs:no-community-mr
windows 1809 integration tests:
extends:
- .windows integration test
- .windows1809
- .rules:merge_request_pipelines:no_docs:no-community-mr
needs:
- "clone test repo"
- "prepare done"
- "prebuilt helper images windows 2019"
windows 21H2 integration tests:
extends:
- .windows integration test
- .windows21H2
- .rules:merge_request_pipelines:no_docs:no-community-mr
needs:
- "clone test repo"
- "prepare done"
- "prebuilt helper images windows 2022"
logging-field-validator:
stage: test
image: golang:latest
extends:
- .no_dependencies
- .rules:merge_request_pipelines:no_docs
- .go-cache
script:
- make validate-log-fields
================================================
FILE: .gitlab/dependency_decisions.yml
================================================
---
- - :license
- github.com/ayufan/golang-kardianos-service
- zlib
- :who:
:why:
:versions: []
:when: 2019-05-03 07:43:31.343341000 Z
- - :license
- github.com/pmezard/go-difflib
- New BSD
- :who:
:why:
:versions: []
:when: 2019-05-03 07:56:01.347974000 Z
- - :license
- github.com/pkg/errors
- BSD-2-Clause
- :who:
:why:
:versions: []
:when: 2019-05-03 07:56:16.618717000 Z
- - :license
- github.com/howeyc/gopass
- ISC
- :who:
:why:
:versions: []
:when: 2019-05-03 07:56:49.679855000 Z
- - :license
- github.com/Nvveen/Gotty
- BSD-2-Clause
- :who:
:why:
:versions: []
:when: 2019-05-03 07:57:00.398541000 Z
- - :license
- github.com/gorilla/websocket
- BSD-2-Clause
- :who:
:why:
:versions: []
:when: 2019-05-03 07:57:11.021835000 Z
- - :license
- github.com/gorhill/cronexpr
- Apache-2.0
- :who:
:why:
:versions: []
:when: 2019-05-03 07:57:23.329188000 Z
- - :license
- github.com/golang/glog
- Apache-2.0
- :who:
:why:
:versions: []
:when: 2019-05-03 07:57:34.443986000 Z
- - :license
- github.com/go-ini/ini
- Apache-2.0
- :who:
:why:
:versions: []
:when: 2019-05-03 07:57:59.782275000 Z
- - :license
- github.com/davecgh/go-spew
- ISC
- :who:
:why:
:versions: []
:when: 2019-05-03 07:58:11.728785000 Z
- - :license
- golang.org/x/crypto/ssh/terminal
- BSD-3-clause
- :who:
:why:
:versions: []
:when: 2019-05-03 07:58:23.789185000 Z
================================================
FILE: .gitlab/duo/agent-config.yml
================================================
# Update this tag when go.mod or GOLANGLINT_VERSION in the Makefile changes.
image: registry.gitlab.com/gitlab-org/ci-cd/runner-tools/runner-linters:2.11.4-go1.26.1
setup_script:
- export GOTOOLCHAIN=local
# GOMODCACHE must be project-relative so the cache archiver can reach it.
- export GOMODCACHE="${CI_PROJECT_DIR}/.cache/gomod"
# Remove image's pre-installed node to avoid version conflicts.
- rm -rf /root/.nvm/versions/node/ || true
- NODE_VERSION=20.20.0
- NODE_SHA256=92dfd59fb4837230abba5d6dd717b882ca897e22fde2f9268e1aac2c4bde0f5b
- NODE_DIR="${CI_PROJECT_DIR}/.cache/node"
- |
if ! "${NODE_DIR}/bin/node" --version 2>/dev/null | grep -qF "v${NODE_VERSION}"; then
echo "Installing Node.js ${NODE_VERSION}..."
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" -o /tmp/node.tar.gz
echo "${NODE_SHA256} /tmp/node.tar.gz" | sha256sum -c -
rm -rf "${NODE_DIR}"
mkdir -p "${NODE_DIR}"
tar -xzf /tmp/node.tar.gz -C "${NODE_DIR}" --strip-components=1 --no-same-owner
rm /tmp/node.tar.gz
fi
- export PATH="${NODE_DIR}/bin:${PATH}"
- node --version && npm --version
- npm config set prefix "${CI_PROJECT_DIR}/.cache/npm-global"
- export PATH="${CI_PROJECT_DIR}/.cache/npm-global/bin:${PATH}"
cache:
key:
files:
- go.sum
prefix: gitlab-runner-duo-v2
paths:
- .cache/node/ # Node.js runtime — version-checked, skips download on hit
- .cache/gomod/ # Go module cache (GOMODCACHE redirected here)
- .cache/npm-global/ # duo-cli and other global npm packages
- .tmp/ # make tools: golangci-lint, mockery, etc.
- tmp/ # make development_setup: test git fixtures
================================================
FILE: .gitlab/duo/mr-review-instructions.yaml
================================================
---
# Custom instructions for GitLab Duo Code Review
# Based on GitLab's official code review guidelines
# References:
# - Field Standardisation in Observability: https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/observability_field_standardisation/
# This file defines custom review criteria that will be applied to specific files
# during merge request reviews. Instructions are grouped by name and can target
# multiple file patterns using glob syntax.
instructions:
- name: Log Field Standards
fileFilters:
- "**/*.go"
- "!**/*_test.go"
instructions: |
Backend engineers should be complying with the new field standardisation in observability best practices
1. For any log lines that have been altered:
- Ask: "If you are adding or modifying fields that aren't service specific, please ensure that the field is defined within the LabKit Go Fields package"
- Remind: "All logging fields should be defined within the LabKit fields package and imported from there provided that they aren't specific to this service Examples are GitLabUserID. Link: https://gitlab.com/gitlab-org/labkit/-/tree/master/fields?ref_type=heads"
2. For any new fields being added to log messages:
- Check to ensure that these fields are not dynamically generated
- Remind: "We're aiming to standardise the fields that we emit across all of our services at GitLab through this approach. Read more about this in https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/observability_field_standardisation/"
================================================
FILE: .gitlab/issue_templates/Bug.md
================================================
## Summary
<!--
Briefly summarize the bug
-->
## Steps to reproduce
<!--
What do you need to do to reproduce the bug? Please include job definitions or git repository structure if relevant
-->
<!--
Please add the definition of the job from `.gitlab-ci.yml` that is failing
inside of the code blocks (```) below.
-->
<details>
<summary> .gitlab-ci.yml </summary>
```yml
Add the job definition that is failing here
```
</details>
## Actual behavior
<!--
What actually happens
-->
## Expected behavior
<!--
What you should see instead
-->
## Relevant logs and/or screenshots
<!--
Paste the job logs inside the code blocks (```) below so they are easier to read.
-->
<details>
<summary> job log </summary>
```sh
Add the job log
```
</details>
## Environment description
<!--
Are you using shared Runners on GitLab.com? Or is it a custom installation?
Which executors are used? Please also provide the versions of related tools
like `docker info` if you are using the Docker executor.
-->
<!--
Please add the contents of `config.toml` inside of the code blocks (```)
below, remember to remove any secret tokens!
-->
<details>
<summary> config.toml contents </summary>
```toml
Add your configuration here
```
</details>
### Used GitLab Runner version
<!--
Please run and paste the output of `gitlab-runner --version`. If you are using
a Runner where you don't have access to, please paste at least the first lines
from the build log, like:
```
Running with gitlab-ci-multi-runner 1.4.2 (bcc1794)
Using Docker executor with image golang:1.8 ...
```
-->
## Possible fixes
<!--
(If you can, link to the line of code that might be responsible for the problem)
--->
/label ~bug ~"group::runner" ~"Category:Runner Core"
================================================
FILE: .gitlab/issue_templates/Default.md
================================================
If you experience a problem with CI/CD on GitLab.com, please raise an issue in https://gitlab.com/gitlab-com/support-forum/issues
Before raising an issue here, please read through our guide to help determine the best place to post:
* https://about.gitlab.com/getting-help/
Select the "Bug" or "Feature Proposal" template from the "Description" selector and provide as much information as possible.
Thank you for helping to make GitLab Runner a better product! :heart:
/label ~"group::runner"
<!-- template sourced from https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/.gitlab/issue_templates/Default.md -->
================================================
FILE: .gitlab/issue_templates/Documentation.md
================================================
<!--
* Use this issue template for suggesting new docs or updates to existing docs.
* For issues related to features of the docs.gitlab.com site, see
https://gitlab.com/gitlab-org/gitlab-docs/issues/
* For information about documentation content and process, see
https://docs.gitlab.com/development/documentation/ -->
### Problem to solve
<!-- Include the following detail as necessary:
* What product or feature(s) affected?
* What docs or doc section affected? Include links or paths.
* Is there a problem with a specific document, or a feature/process that's not addressed sufficiently in docs?
* Any other ideas or requests?
-->
### Further details
<!--
* Any concepts, procedures, reference info we could add to make it easier to successfully use GitLab?
* Include use cases, benefits, and/or goals for this work.
* If adding content: What audience is it intended for? (What roles and scenarios?)
For ideas, see personas at https://handbook.gitlab.com/handbook/product/personas/ or the persona labels at
https://gitlab.com/groups/gitlab-org/-/labels?subscribed=&search=persona%3A
-->
### Proposal
<!-- Further specifics for how can we solve the problem. -->
### Who can address the issue
<!-- What special expertise is required to resolve this issue? -->
### Other links/references
<!-- E.g. related GitLab issues/MRs -->
/label ~documentation ~group::runner ~devops::verify
================================================
FILE: .gitlab/issue_templates/Feature Flag Cleanup.md
================================================
<!-- Title suggestion: [Feature flag] Cleanup <feature-flag-name> -->
## Summary
This issue is to clean up the `<feature-flag-name>` feature flag, after the feature flag has been enabled by default for an appropriate amount of time in production.
<!-- Short description of what the feature is about and link to relevant other issues. Ensure to note if the feature will be removed completely or will be productized-->
## Owners
- Team: GitLab Runner
- Most appropriate Slack channel to reach out to: `#g_runner`
- Best individual to reach out to: NAME
- PM: NAME
## Stakeholders
<!--
Are there any other stages or teams involved that need to be kept in the loop?
- Name of a PM
- The Support Team
- The Delivery Team
-->
## Expectations
### What might happen if this goes wrong?
Please list here all the steps that must be taken if something goes wrong:
- Any MRs that need to be rolled back?
- Communication that needs to happen?
- What are some things you can think of that could go wrong in the context of GitLab Runner and the existing setups?
- What settings needs to be changed back, e.g. Feature Flag, or `config.toml` settings ?
### Cleaning up the feature flag
In most use cases, removing a feature flag will be a breaking change. This breaking change must be planned in accordance with the GitLab's policy on breaking changes.
<!-- The checklist here is to help stakeholders keep track of the feature flag status -->
- [ ] Specify in the issue description if this feature will be removed completely or will be productized as part of the Feature Flag cleanup
- [ ] Create a merge request to remove `<feature-flag-name>` feature flag. Ask for review and merge it.
- [ ] Remove all references to the feature flag from the codebase.
- [ ] Remove the documentations for the feature from the repository.
- [ ] Remove the documentations for the feature from related repository (GitLab, GitLab Runner Helm Chart, GitLab Runner Operator).
- [ ] Ensure that the cleanup MR has been deployed at the code cutoff.
- [ ] Close [the feature issue](ISSUE LINK) to indicate the feature will be released in the current milestone.
- [ ] Close this feature flag cleanup issue.
/label ~"feature flag" ~"section::ci" ~"group::runner" ~"DevOps::verify" ~"Category:Runner Core" ~"runner::core"
<!-- Uncomment the appropriate type label
/label ~"type::feature" ~"feature::addition"
/label ~"type::maintenance"
/label ~"type::bug"
-->
================================================
FILE: .gitlab/issue_templates/Feature Flag Roll Out.md
================================================
<!-- Title suggestion: [Feature flag] Enable <feature-flag-name> -->
## Summary
This issue is to roll out [the feature](<feature-issue-link>) on production,
that is currently behind the `<feature-flag-name>` feature flag.
## Owners
- Most appropriate Slack channel to reach out to: `#<slack-channel-of-dri-team>`
- Best individual to reach out to: @<gitlab-username-of-dri>
## Expectations
### What are we expecting to happen?
<!-- Describe the expected outcome when rolling out this feature -->
### What can go wrong and how would we detect it?
<!-- Data loss, broken pages, stability/availability impact? -->
<!-- Which dashboards from https://dashboards.gitlab.net are most relevant? -->
## Rollout Steps
### Rollout on non-production environments
- Verify the MR that adds the feature flag is merged to `main` and has been deployed after code freeze, for the GitLab Runner context, to the privately managed runners. This might require a synchronisation with the appropriate team to make sure that the `config.toml` used by those runners are updated to include the newly added feature flag.
Some feature flags are executor specific and deploying them on the private runners would only make sense if these executors are used. A recommendation should be to make sure that there is an existing runner, using the relevant executor and actively running jobs (GitLab Runner pipeline jobs by example) that exists.
<!-- Delete Incremental roll out if it is not relevant to this deploy -->
- [ ] Deploy the feature flag at a percentage (recommended percentage: 50%) on the concerned private runners managed by the GitLab Runner team
- [ ] Monitor that the error rates did not increase (repeat with a different percentage as necessary).
<!-- End of block for deletes -->
- [ ] Enable the feature globally on all private runners managed by the GitLab Runner team
- [ ] Verify that the feature works as expected.
- [ ] If the feature flag causes end-to-end tests to fail, disable the feature flag on private runners to avoid blocking pipelines
For assistance with end-to-end test failures, please reach out via the [`#g_runner` Slack channel](https://gitlab.enterprise.slack.com/archives/CBQ76ND6W).
### Rollout on production
<!-- The new FF should be well documented so that it can be safely activated -->
<!-- The deployment of the FF flag is automatic - during release. Only the FF switch and related settings is manual -->
<!-- Make sure to choose what is the default state of the FF to prevent breaking of existing setups -->
## Rollback Steps
<!-- At the time of creation, we do not have a process for the rollout on production and rollback steps. -->
<!-- It is therefore recommended to sync with the author of the FeatureFlag to see the impact and necessary steps to disable the FF -->
/label <group-label>
/label ~"feature flag" ~"section::ci" ~"group::runner" ~"DevOps::verify" ~"Category:Runner Core" ~"runner::core"
<!-- Uncomment the appropriate type label
/label ~"type::feature" ~"feature::addition"
/label ~"type::maintenance"
/label ~"type::bug"
-->
/assign @<gitlab-username-of-dri>
/due in 12 weeks
================================================
FILE: .gitlab/issue_templates/Feature Proposal.md
================================================
## Description
<!--
Include problem, use cases, benefits, and/or goals
-->
## Proposal
## Links to related issues and merge requests / references
<!--
Please paste a link of the related issues or/and merge requests
-->
/label ~feature ~"group::runner"
================================================
FILE: .gitlab/issue_templates/Request for test infra feature toggle.md
================================================
# Summary
<!-- Describe the feature you would like toggled in the gitlab-runner's test infra along with a reason. Example: -->
<!-- Toggle the `FF_PRINT_POD_EVENTS` feature flag to `true`. This will allow us to better track down issues in Kubernetes-powered jobs -->
# Feature source merge request
<!-- The merge request that introduced said feature into GitLab Runner -->
# Infra merge request
<!-- Ideally the requester will implement the feature toggle into the [Kubernetes Infra repository](https://gitlab.com/gitlab-org/ci-cd/runner-tools/runner-kubernetes-infra). If you're unable to so, request assistance. -->
<!-- The infra MR should close this issue -->
/label ~"devops::verify"
/label ~"group::runner"
/label ~"section::ci"
/label ~"Runner Kubernetes Dogfooding"
/label ~"Runner Kubernetes Dogfooding::Feature Toggle"
================================================
FILE: .gitlab/issue_templates/Security developer workflow.md
================================================
<!--
# Read Me First!
Create this issue under https://gitlab.com/gitlab-org/security/gitlab-runner
Set the title to: `Description of the original issue`
-->
## Prior to starting the security release work
- [ ] Read the [security process for developers] if you are not familiar with it.
- [ ] Mark this [issue as related] to the [upcoming Security Release Tracking Issue](https://gitlab.com/gitlab-org/gitlab-runner/-/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=security&label_name[]=upcoming%20security%20release).
- Fill out the [Links section](#links):
- [ ] Next to **Issue on GitLab**, add a link to the `gitlab-org/gitlab-runner` issue that describes the security vulnerability.
## Development
- [ ] Run `scripts/security-harness` in your local repository to prevent accidentally pushing to any remote branch besides `gitlab.com/gitlab-org/security`.
- [ ] Create a new branch, prefixing it with `security-`.
- [ ] Create a merge request targeting `main` on `gitlab.com/gitlab-org/security/gitlab-runner` and use the [Security Release merge request template].
After your merge request has been approved according to our [approval guidelines] and by a team member of the AppSec team, you're ready to prepare the backports.
## Backports
- [ ] Once the MR is ready to be merged, create MRs targeting the latest 3 stable branches.
* At this point, it might be easier to squash the commits from the MR into one.
- [ ] Create each MR targeting the stable branch `X-Y-stable`, using the [Security Release merge request template].
* Every merge request has its own set of TODOs, so make sure to complete those.
- [ ] On the "Related merge requests" section, ensure all MRs are linked to this issue.
* This section should only list the merge requests created for this issue: One targeting `main` and the 3 backports.
## Documentation and final details
- [ ] Ensure the [Links section](#links) is completed.
- [ ] Add the GitLab Runner [versions](https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/security/developer.md#versions-affected) and editions affected to the [details section](#details).
* The Git history of the files affected may help you associate the issue with a [release](https://about.gitlab.com/releases/).
- [ ] Fill in any upgrade notes that users may need to take into account in the [details section](#details).
- [ ] Add Yes/No and further details if needed to the migration and settings columns in the [details section](#details).
- [ ] Add the nickname of the external user who found the issue (and/or HackerOne profile) to the Thanks row in the [details section](#details).
## Summary
### Links
| Description | Link |
| -------- | -------- |
| Issue on [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner/issues) | #TODO |
### Details
| Description | Details | Further details|
| -------- | -------- | -------- |
| Versions affected | X.Y | |
| Upgrade notes | | |
| GitLab Runner config updated | Yes/No| |
| Thanks | | |
[security process for developers]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md
[security Release merge request template]: https://gitlab.com/gitlab-org/security/gitlab-runner/blob/main/.gitlab/merge_request_templates/Security%20Release.md
[approval guidelines]: https://docs.gitlab.com/development/code_review/#approval-guidelines
[issue as related]: https://docs.gitlab.com/user/project/issues/related_issues/#add-a-linked-issue
/label ~security ~"Category:Runner" ~"devops::verify" ~"group::runner"
================================================
FILE: .gitlab/issue_templates/bump-golang.md
================================================
<!--
These are the steps we should follow when we want to bump the golang version
-->
### Steps
1. [ ] bump golang in [goargs](https://gitlab.com/gitlab-org/language-tools/go/linters/goargs)
example MR:
- https://gitlab.com/gitlab-org/language-tools/go/linters/goargs/-/merge_requests/8
1. [ ] bump golang in [runner-linters](https://gitlab.com/gitlab-org/ci-cd/runner-tools/runner-linters)
example MR:
- https://gitlab.com/gitlab-org/ci-cd/runner-tools/runner-linters/-/merge_requests/7
1. [ ] bump golang et al in [gitlab-runner](https://gitlab.com/gitlab-org/gitlab-runner)
Things we want to bump:
- the golang version itself
- the version of the runner-linters image
- Update `GO_FIPS_VERSION_SUFFIX`, get the suffix from [here](https://github.com/golang-fips/go/releases)
- Poke some files to force rebuild of images:
```
find . -name '*.rebuild' | xargs -r -n1 "$SHELL" -c 'date -u > "$1"' --
```
example MRs:
- https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/4838/
- https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3889
================================================
FILE: .gitlab/issue_templates/planning_issue.md
================================================
<!--
Update milestone placeholders below
-->
## :paperclips: Cross-Functional Programs
## :runner: Runner Core
#### :bug: Bugs ~"Runner::P1"
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab-runner" and milestone = "%%.%" and label = ("type::bug", "Category:Runner Core")
```
#### :sparkles: Features ~"Runner::P1"
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab-runner" and milestone = "%%.%" and label= "type::feature" and label="Category:Runner Core"
```
#### :tools: Maintenance ~"Runner::P1"
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab-runner" and milestone = "%%.%" and label= "type::maintenance" and label="Category:Runner Core"
```
~Stretch
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab-runner" and milestone = "%%.%" and label= "stretch" and label="Category:Runner Core"
```
## :roller_coaster: Runner Fleet
#### :bug: Bugs ~"Runner::P1"
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab" and milestone = "%%.%" and label= "type::bug" and label="Fleet Visibility"
```
#### :sparkles: Features ~"Runner::P1"
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab" and milestone = "%%.%" and label= "type::feature" and label="Category:Fleet Visibility"
```
#### :tools: Maintenance ~"Runner::P1"
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab" and milestone = "%%.%" and label= "type::maintenance" and label="Category:Fleet Visibility"
```
~Stretch
```glql
---
display: table
fields: title, epic, assignees, healthStatus, state
---
project="gitlab-org/gitlab" and milestone = "%%.%" and label= "stretch" and label="Category:Fleet Visibility"
```
================================================
FILE: .gitlab/issue_templates/trainee-backend-maintainer.md
================================================
<!--
Update the title of this issue to: Trainee BE maintainer (GitLab Runner) - [full name]
-->
## Basic setup
1. [ ] Read the [Becoming a maintainer for one of Runner team projects](https://about.gitlab.com/handbook/engineering/development/ci-cd/verify/runner/#becoming-a-maintainer-for-one-of-our-projects).
1. [ ] Read the [code review page in the handbook](https://about.gitlab.com/handbook/engineering/workflow/code-review/) and the [code review guidelines](https://docs.gitlab.com/development/code_review/).
1. [ ] Understand [how to become a maintainer](https://about.gitlab.com/handbook/engineering/workflow/code-review/#how-to-become-a-maintainer).
1. [ ] Add yourself as a [trainee maintainer](https://about.gitlab.com/handbook/engineering/workflow/code-review/#trainee-maintainer) on the [team page](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/team.yml).
1. [ ] Ask your manager to set up a check-in on this issue every six weeks or so.
## Working towards becoming a maintainer
There is no checklist here, only guidelines. There is no specific timeline on
this, but historically most backend trainee maintainers have become maintainers
five to seven months after starting their training.
You are free to discuss your progress with your manager or any
maintainer at any time. As in the list above, your manager should review
this issue with you roughly every six weeks; this is useful to track
your progress, and see if there are any changes you need to make to move
forward.
It is up to you to ensure that you are getting enough MRs to review, and of
varied types. All engineers are reviewers, so you should already be receiving
regular reviews from Reviewer Roulette. You could also seek out more reviews
from your team, or #backend Slack channels.
Your reviews should aim to cover maintainer responsibilities as well as reviewer
responsibilities. Your approval means you think it is ready to merge.
After each MR is merged or closed, add a discussion to this issue using this
template:
```markdown
### (Merge request title): (Merge request URL)
During review:
- (List anything of note, or a quick summary. "I suggested/identified/noted...")
Post-review:
- (List anything of note, or a quick summary. "I missed..." or "Merged as-is")
(Maintainer who reviewed this merge request) Please add feedback, and compare
this review to the average maintainer review.
```
**Note:** Do not include reviews of security MRs because review feedback might
reveal security issue details.
## When you're ready to make it official
When reviews have accumulated, you can confidently address the majority of the MRs assigned to you,
and recent reviews consistently fulfill maintainer responsibilities, then you can propose yourself as a new maintainer
for the relevant application.
Remember that even when you are a maintainer, you can still request help from other maintainers if you come across an MR
that you feel is too complex or requires a second opinion.
1. [ ] Create a merge request for [team page](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/team.yml) proposing yourself as a maintainer for the relevant application, assigned to your manager.
1. [ ] Ask a maintainer to add you as an Owner to the relevant maintainers list in <https://gitlab.com/gitlab-com/runner-maintainers>
1. [ ] Keep reviewing, start merging :metal:
/label ~"trainee maintainer" ~"devops::verify" ~"group::runner"
================================================
FILE: .gitlab/merge.release.yml
================================================
actions:
- write:
file: VERSION
contents: "{{ .Release.VersionObject.NextMinor.StringNoPrefix }}"
- commit:
files: [VERSION]
message: Bump version to {{ .Release.VersionObject.NextMinor }}
================================================
FILE: .gitlab/merge_request_templates/Default.md
================================================
<!--
This is a general Merge Request template.
Consider choosing a template from the list above if it will match your case more.
-->
## What does this MR do?
%{first_multiline_commit}
## Why was this MR needed?
## What's the best way to test this MR?
## What are the relevant issue numbers?
<!-- template sourced from https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/.gitlab/merge_request_templates/Default.md -->
================================================
FILE: .gitlab/merge_request_templates/Documentation.md
================================================
## What does this MR do?
<!-- Briefly describe what this MR is about. -->
## Related issues
<!-- Link related issues below. -->
## Author's checklist
- [ ] Optional. Consider taking [the GitLab Technical Writing Fundamentals course](https://university.gitlab.com/courses/gitlab-technical-writing-fundamentals).
- [ ] Follow the:
- [Documentation process](https://docs.gitlab.com/development/documentation/workflow/).
- [Documentation guidelines](https://docs.gitlab.com/development/documentation/).
- [Style Guide](https://docs.gitlab.com/development/documentation/styleguide/).
- [ ] If you're adding or changing the main heading of the page (H1), ensure that the [product availability details](https://docs.gitlab.com/development/documentation/styleguide/availability_details/) are added.
- [ ] If you are a GitLab team member, [request a review](https://docs.gitlab.com/development/code_review/#dogfooding-the-reviewers-feature) based on:
- The documentation page's [metadata](https://docs.gitlab.com/development/documentation/metadata/).
- The [associated Technical Writer](https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments).
If you are a GitLab team member and only adding documentation, do not add any of the following labels:
- `~"frontend"`
- `~"backend"`
- `~"type::bug"`
- `~"database"`
These labels cause the MR to be added to code verification QA issues.
## Reviewer's checklist
Documentation-related MRs should be reviewed by a Technical Writer for a non-blocking review, based on [Documentation Guidelines](https://docs.gitlab.com/development/documentation/) and the [Style Guide](https://docs.gitlab.com/development/documentation/styleguide/).
If you aren't sure which tech writer to ask, use [roulette](https://gitlab-org.gitlab.io/gitlab-roulette/?sortKey=stats.avg30&order=-1&hourFormat24=true&visible=maintainer%7Cdocs) or ask in the [#docs](https://gitlab.slack.com/archives/C16HYA2P5) Slack channel.
- [ ] If the content requires it, ensure the information is reviewed by a subject matter expert.
- Technical writer review items:
- [ ] Ensure docs metadata is present and up-to-date.
- [ ] Ensure the appropriate [labels](https://docs.gitlab.com/development/documentation/workflow/#labels) are added to this MR.
- [ ] Ensure a release milestone is set.
- If relevant to this MR, ensure [content topic type](https://docs.gitlab.com/development/documentation/topic_types/) principles are in use, including:
- [ ] The headings should be something you'd do a Google search for. Instead of `Default behavior`, say something like `Default behavior when you close an issue`.
- [ ] The headings (other than the page title) should be active. Instead of `Configuring GDK`, say something like `Configure GDK`.
- [ ] Any task steps should be written as a numbered list.
- If the content still needs to be edited for topic types, you can create a follow-up issue with the ~"docs-technical-debt" label.
- [ ] Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review.
/label ~documentation ~"devops::verify" ~"group::runner-core" ~"Category:Runner" ~"type::maintenance" ~"maintenance::refactor"
/assign me
================================================
FILE: .gitlab/merge_request_templates/Security Release.md
================================================
<!--
# README first!
This MR should be created on `gitlab.com/gitlab-org/security/gitlab-runner`.
See [the general developer security release guidelines](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md).
-->
## Related issues
<!-- Mention the GitLab Security issue this MR is related to -->
## Developer checklist
- [ ] **In the "Related issues" section, write down the [GitLab Runner Security] issue it belongs to (i.e. `Related to <issue_id>`).**
- [ ] Merge request targets `main`, or a versioned stable branch (`X-Y-stable`).
- [ ] Milestone is set for the version this merge request applies to. A closed milestone can be assigned via [quick actions].
- [ ] Title of this merge request is the same as for all backports.
- [ ] For the MR targeting `main`:
- [ ] Assign to a reviewer and maintainer, per our [Code Review process].
- [ ] Ensure it's approved according to our [Approval Guidelines].
- [ ] Ensure it's approved by an AppSec engineer.
- If you're unsure who should approve, find the AppSec engineer associated to the issue in the [Canonical repository], or ask #sec-appsec on Slack.
- [ ] When approving, the AppSec engineer should mention this MR on the [security release tracking issue] in the `gitlab-org/gitlab` project for awareness
- [ ] Merge request _must_ close the corresponding security issue.
- [ ] Ensure that a backport MR targeting a versioned stable branch (`X-Y-stable`) is approved by a maintainer.
**Note:** Reviewer/maintainer should not be a Release Manager
## Maintainer checklist
- [ ] Correct milestone is applied and the title is matching across all backports.
- [ ] Assign the merge request to the release manager of the [upcoming
security
release](https://gitlab.com/gitlab-org/gitlab-runner/-/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=security&label_name[]=upcoming%20security%20release)
with passing CI pipelines and **when all backports including the MR
targeting main are ready.**
## AppSec checklist
- [ ] Assign the right [AppSecWeight](https://handbook.gitlab.com/handbook/security/product-security/application-security/milestone-planning/#weight-labels) label
/label ~security ~"Category:Runner" ~"devops::verify" ~"group::runner"
/label ~"Division::Security" ~"Department::Product Security" ~"Application Security Team"
/label ~"AppSecWorkflow::planned" ~"AppSecWorkType::VulnFixVerification"
/label ~"AppSecPriority::1" <!-- This is always a priority to review for us to ensure the fix is good and the release is done on time -->
[GitLab Runner Security]: https://gitlab.com/gitlab-org/security/gitlab-runner
[quick actions]: https://docs.gitlab.com/user/project/quick_actions/#quick-actions-for-issues-merge-requests-and-epics
[Code Review process]: https://docs.gitlab.com/development/code_review/
[Approval Guidelines]: https://docs.gitlab.com/development/code_review/#approval-guidelines
[Canonical repository]: https://gitlab.com/gitlab-org/gitlab-runner
[security release tracking issue]: https://gitlab.com/gitlab-org/gitlab/-/issues/?scope=all&utf8=%E2%9C%93&state=opened&label_name%5B%5D=upcoming%20security%20release
================================================
FILE: .gitlab/renovate.json
================================================
{
"extends": [
":disableMajorUpdates"
],
"regexManagers": [
{
"fileMatch": [
"\\.gitlab\\/ci\\/_common\\.gitlab-ci\\.yml",
"\\.tool-versions",
"dockerfiles\\/ci\\/Dockerfile"
],
"matchStrings": [
"# renovate: (datasource=(?<datasource>\\S+))?\\s?(depName=(?<depName>\\S+))?\\s?(registryUrl=(?<registryUrl>\\S+))?\\s?(versioning=(?<versioning>\\S+))?\\s?(allowedVersions=(?<allowedVersions>\\S+))?\\s?.*?_VERSION:\\s?\\\"?(?<currentValue>[\\w+\\.\\-]*)",
"# renovate: (datasource=(?<datasource>\\S+))?\\s?(depName=(?<depName>\\S+))?\\s?(registryUrl=(?<registryUrl>\\S+))?\\s?(versioning=(?<versioning>\\S+))?\\s?(allowedVersions=(?<allowedVersions>\\S+))?\\s\\w+\\s(?<currentValue>[\\w+\\.\\-]*)",
"# renovate: (datasource=(?<datasource>\\S+))?\\s?(depName=(?<depName>\\S+))?\\s?(registryUrl=(?<registryUrl>\\S+))?\\s?(versioning=(?<versioning>\\S+))?\\s?(allowedVersions=(?<allowedVersions>\\S+))?\\sFROM\\s\\w+\\:(?<currentValue>[\\w+\\.\\-]*)"
],
"allowedVersionsTemplate": "{{allowedVersions}}"
}
],
"enabledManagers": ["regex"],
"reviewers": ["ggeorgiev_gitlab"],
"recreateClosed": true
}
================================================
FILE: .gitlab/route-map.yml
================================================
# Documentation
- source: /docs/(.+?/)_index\.md/ # docs/configuration/_index.md
public: '\1' # configuration/
- source: /docs/(.+?)\.md/ # docs/configuration/page.md
public: '\1/' # configuration/page/
================================================
FILE: .gitlab-ci.yml
================================================
stages:
- build
- qa
- test
- coverage
- package
- release
- test kubernetes integration
- postrelease
- deploy
- rebase
- docs
include:
- local: /.gitlab/ci/_project_canonical.gitlab-ci.yml
rules:
- if: $CI_PROJECT_PATH == "gitlab-org/gitlab-runner" || $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner"
when: always
- local: /.gitlab/ci/_project_fork.gitlab-ci.yml
rules:
- if: $CI_PROJECT_PATH == "gitlab-org/gitlab-runner" || $CI_PROJECT_PATH == "gitlab-org/security/gitlab-runner"
when: never
- if: $CI_PROJECT_PATH
- local: /.gitlab/ci/_common.gitlab-ci.yml
- local: /.gitlab/ci/_rules.gitlab-ci.yml
- local: /.gitlab/ci/_kubernetes.gitlab-ci.yml
- local: /.gitlab/ci/build.gitlab-ci.yml
- local: /.gitlab/ci/qa.gitlab-ci.yml
- local: /.gitlab/ci/test.gitlab-ci.yml
- local: /.gitlab/ci/test-kubernetes-integration.gitlab-ci.yml
- local: /.gitlab/ci/coverage.gitlab-ci.yml
- local: /.gitlab/ci/package.gitlab-ci.yml
- local: /.gitlab/ci/release.gitlab-ci.yml
- local: /.gitlab/ci/postrelease.gitlab-ci.yml
- local: /.gitlab/ci/deploy.gitlab-ci.yml
- local: /.gitlab/ci/docs.gitlab-ci.yml
- local: /.gitlab/ci/rebase.gitlab-ci.yml
- local: /.gitlab/ci/hosted-runners-bridge.gitlab-ci.yml
- component: ${CI_SERVER_FQDN}/gitlab-org/components/danger-review/danger-review@2.1.0
inputs:
job_stage: qa
rules:
- if: '$CI_SERVER_HOST == "gitlab.com" && ($CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == "gitlab-org/gitlab-runner" || $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == "gitlab-org/security/gitlab-runner" || $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == "gitlab-community/gitlab-org/gitlab-runner")'
- project: gitlab-com/gl-security/security-operations/infrastructure-security-public/oidc-modules
ref: 3.4.0
file: templates/gcp_auth.yaml
================================================
FILE: .golangci.yml
================================================
version: "2"
run:
concurrency: 8
linters:
default: none
enable:
- bodyclose
- dogsled
- errcheck
- errorlint
- gocognit
- goconst
- gocritic
- goprintffuncname
- govet
- ineffassign
- misspell
- nakedret
- nestif
- revive
- staticcheck
- unconvert
- unparam
- usetesting
- whitespace
settings:
errcheck:
check-type-assertions: true
errorlint:
asserts: false
comparison: false
gocognit:
min-complexity: 15
gocritic:
enabled-checks:
- appendCombine
- boolExprSimplify
- commentedOutCode
- dupImport
- emptyFallthrough
- emptyStringTest
- equalFold
- evalOrder
- hexLiteral
- indexAlloc
- initClause
- methodExprCall
- nestingReduce
- nilValReturn
- ptrToRefParam
- rangeExprCopy
- regexpPattern
- sloppyReassign
- stringXbytes
- truncateCmp
- typeAssertChain
- typeUnparen
- unnecessaryBlock
- weakCond
- yodaStyleExpr
gocyclo:
min-complexity: 10
revive:
rules:
- name: unused-parameter
disabled: true
staticcheck:
checks: ["all", "-ST1000", "-ST1003", "-ST1005", "-ST1012", "-ST1016", "-ST1020", "-ST1021", "-ST1022", "-QF1001", "-QF1008", "-QF1011"]
usetesting:
os-create-temp: false
os-mkdir-temp: false
os-setenv: false
os-temp-dir: false
os-chdir: false
context-background: true
context-todo: true
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
- linters:
- gocyclo
path: helpers/shell_escape.go
- linters:
- gocyclo
path: executors/kubernetes/kubernetes_test.go
- linters:
- gocyclo
path: executors/kubernetes/util_test.go
- linters:
- gocyclo
path: executors/kubernetes/exec_test.go
- linters:
- gocyclo
path: executors/parallels/
- linters:
- gocyclo
path: executors/virtualbox/
- linters:
- revive
text: don't use ALL_CAPS in Go names; use CamelCase
- linters:
- revive
text: don't use an underscore in package name
- linters:
- bodyclose
- gocognit
- goconst
path: .*_test.go
- linters:
- errcheck
path: .*_test.go
text: Error return value is not checked
- linters:
- errcheck
- gocritic
path: .*_test.go
text: regexpMust
- linters:
- gocritic
path: .*_test.go
text: typeUnparen
- linters:
- unused
path: executors/docker/docker_command_test.go # Ignore until https://gitlab.com/gitlab-org/gitlab-runner/-/issues/25385 is solved
paths:
- mock_*.go
- third_party$
- builtin$
- examples$
formatters:
enable:
- goimports
exclusions:
generated: lax
paths:
- mock_*.go
- third_party$
- builtin$
- examples$
================================================
FILE: .labkit_logging_todo.yml
================================================
# LabKit Logging Field Standardization TODO
# AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.
#
# This file tracks deprecated logging fields that need to be migrated to
# standard fields defined in gitlab.com/gitlab-org/labkit/v2/fields.
# Each offense represents a file using a deprecated field name.
#
# How to fix:
# Replace the string literal with the constant from the fields package.
# e.g. log.WithField("source_ip", ...) → log.WithField(fields.RemoteIP, ...)
#
# Adding offenses when an immediate fix is not possible:
# go get gitlab.com/gitlab-org/labkit/v2/cmd/validate-log-fields
# go run gitlab.com/gitlab-org/labkit/v2/cmd/validate-log-fields -update-todo
# go mod tidy
#
# Regenerate entire TODO:
# Delete this file, then run the command above.
---
offenses:
- callsite: common/build.go
deprecated_field: error
standard_field: fields.ErrorMessage
- callsite: executors/docker/docker.go
deprecated_field: error
standard_field: fields.ErrorMessage
- callsite: executors/docker/machine/provider.go
deprecated_field: duration
standard_field: fields.DurationS
- callsite: network/retry_requester.go
deprecated_field: duration
standard_field: fields.DurationS
================================================
FILE: .markdownlint-cli2.yaml
================================================
---
# Base Markdownlint configuration
# Extended Markdownlint configuration in docs/.markdownlint/
# See https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md for explanations of each rule
customRules:
- "./docs/.markdownlint/rules/unnecessary_traversal.js"
config:
# First, set the default
default: true
# Per-rule settings in alphabetical order
code-block-style: # MD046
style: "fenced"
emphasis-style: false # MD049
header-style: # MD003
style: "atx"
hr-style: # MD035
style: "---"
line-length: # MD013
code_blocks: false
tables: false
headings: true
heading_line_length: 100
line_length: 800
no-duplicate-heading: # MD024
siblings_only: true
no-emphasis-as-heading: false # MD036
no-inline-html: false # MD033
no-trailing-punctuation: # MD026
punctuation: ".,;:!。,;:!"
no-trailing-spaces: false # MD009
ol-prefix: # MD029
style: "one"
reference-links-images: false # MD052
ul-style: # MD004
style: "dash"
table-column-style: false # MD060
# Keep this item last due to length
proper-names: # MD044
code_blocks: false
html_elements: false
names: [
"Akismet",
"Alertmanager",
"AlmaLinux",
"API",
"Asana",
"Auth0",
"Azure",
"Bamboo",
"Bitbucket",
"Bugzilla",
"CAS",
"CentOS",
"Consul",
"Debian",
"DevOps",
"Docker",
"DockerSlim",
"Elasticsearch",
"Facebook",
"fastlane",
"fluent-plugin-redis-slowlog",
"GDK",
"Geo",
"Git LFS",
"git-annex",
"git-credential-oauth",
"git-sizer",
"Git",
"Gitaly",
"GitHub",
"gitlab-duo",
"gitlab.vim",
"GitLab chart",
"GitLab Geo",
"GitLab Monitor",
"GitLab Operator",
"GitLab Pages",
"GitLab Rails",
"GitLab Runner",
"GitLab Shell",
"GitLab Workhorse",
"GitLab",
"Gitleaks",
"Gmail",
"Google",
"Grafana",
"Gzip",
"Helm",
"HipChat",
"ID",
"IP",
"Ingress",
"jasmine-jquery",
"JavaScript",
"Jaeger",
"Jenkins",
"Jira",
"Jira Cloud",
"Jira Server",
"jQuery",
"JSON",
"JupyterHub",
"Karma",
"Kerberos",
"Knative",
"Kubernetes",
"LDAP",
"Let's Encrypt",
"Markdown",
"markdownlint",
"Mattermost",
"Microsoft",
"minikube",
"MinIO",
"ModSecurity",
"Neovim",
"NGINX Ingress",
"NGINX",
"OAuth",
"OAuth 2",
"OmniAuth",
"OpenID",
"OpenShift",
"PgBouncer",
"Postfix",
"PostgreSQL",
"PowerShell",
"Praefect",
"Prometheus",
"Puma",
"puma-worker-killer",
"Python",
"Rake",
"Redis",
"Redmine",
"reCAPTCHA",
"Ruby",
"runit",
"Salesforce",
"SAML",
"Sendmail",
"Sentry",
"Service Desk",
"Sidekiq",
"Shibboleth",
"Slack",
"SMTP",
"SpotBugs",
"SSH",
"Tiller",
"Tiptap",
"TOML",
"Trello",
"Trello Power-Ups",
"TypeScript",
"Twitter",
"Ubuntu",
"Ultra Auth",
"Unicorn",
"unicorn-worker-killer",
"URL",
"WebdriverIO",
"YAML",
"YouTrack"
]
================================================
FILE: .mockery.yaml
================================================
all: true
dir: '{{.InterfaceDir}}'
filename: 'mocks.go'
structname: "{{.Mock}}{{.InterfaceName | firstUpper}}"
pkgname: '{{.SrcPackageName}}'
template: testify
template-data:
unroll-variadic: true
packages:
gitlab.com/gitlab-org/gitlab-runner:
config:
exclude-subpkg-regex:
- executors/internal/autoscaler
recursive: true
================================================
FILE: .tool-versions
================================================
# renovate: datasource=docker depName=golang allowedVersions=/1\.26\..+/
golang 1.26.1
yq 4.44.3
mockery 2.53.3
mage 1.15.0
# For linting documentation
markdownlint-cli2 0.19.0
lychee 0.21.0
vale 3.13.0
================================================
FILE: .vale.ini
================================================
# Vale configuration file.
#
# For more information, see https://vale.sh/docs/vale-ini.
StylesPath = docs/.vale
MinAlertLevel = suggestion
IgnoredScopes = code, text.frontmatter.redirect_to
[*.md]
BasedOnStyles = gitlab_base, gitlab_docs
# Ignore SVG markup
TokenIgnores = (\*\*\{\w*\}\*\*)
================================================
FILE: AGENTS.md
================================================
# GitLab Runner — AI Agent Instructions
This file provides context for AI agents operating on this repository.
All agent reasoning, analysis, and action plans should be written to stdout.
Do not post comments to issues or merge requests during the fix process.
## Codebase overview
**Language:** Go | **Min version:** see `go.mod` | **Default branch:** `main`
| Package | Purpose |
|---|---|
| `executors/` | Executor implementations: `docker`, `kubernetes`, `shell`, `ssh`, `instance`, `custom` |
| `commands/` | CLI entry points: `run`, `register`, `exec`, `artifacts-downloader`, etc. |
| `network/` | GitLab API client: job polling, artifact upload, trace streaming |
| `helpers/` | Shared utilities, retry logic, process management, file operations |
| `shells/` | Shell script generation: Bash, PowerShell, CMD |
| `cache/` | Cache backends: S3, GCS, Azure |
| `common/` | Core types: `Config`, `Runner`, `Build`, `JobResponse`, `Network`, `Executor` |
| `referees/` | Metric collection during job execution |
## Deprecated features — do not invest in fixes
- **docker+machine executor** — deprecated GitLab 17.5, removal GitLab 20.0 (May 2027)
- **`gitlab-runner exec` command** — deprecated, scheduled for removal
When asked to fix a bug in these features: log the deprecation status and
migration path to stdout, then exit. Do not create branches or MRs.
## Coding standards
- Follow existing patterns in the file you are editing
- Error wrapping: `fmt.Errorf("context: %w", err)` not `errors.Wrap`
- Logging: use the structured logger (`logrus`) already imported in the file
- Tests: table-driven tests using `testify/require` and `testify/assert`
- Mocks: generated with `mockery` — check `//go:generate` directives before writing manual mocks
- Do not modify `go.mod` / `go.sum` unless the fix genuinely requires a new dependency
- Do not refactor code unrelated to the bug being fixed
### Fix the root cause, not a downstream symptom
Before writing any code, identify the specific function, call site, and ordering where the
invariant breaks. State it in your commit message. Do not patch a proxy or downstream layer
when the root cause is accessible — downstream patches leave the original bug in place and
create two code paths to maintain.
### Fix the general case, not just the reported input
When a bug is reported for one specific value (e.g. a variable name with a dash, or one
specific `GIT_STRATEGY`), examine the full input domain and fix the general case. Patching
only the reported example creates false confidence and deferred failures for inputs in the
same class. Your fix must be at least as broad as the problem domain.
### Reuse existing helpers — search before adding
Before writing a new helper function, search the package for an existing one:
`grep -rn "concept\|related_term" ./package/`. If a correct helper already exists, use it.
If you do introduce a new function, state in a comment why the existing helpers were
insufficient. Duplicating logic is a maintenance liability and a code smell.
### Match the nil-vs-zero-value return contract
In Go, `nil` and `&ZeroStruct{}` are semantically distinct. Before adding a return statement
to an existing function, audit every other return site and confirm the contract: does the
caller distinguish error from success via a nil check or by inspecting fields? Returning a
non-nil zero-value struct where callers expect nil on error can trigger downstream panics
(e.g. `if result.ID == 0 { logrus.Panicln(...) }`). When in doubt, return `nil` on failure.
## Verification
After making changes, always run these in order before pushing. All must pass:
- `make tools` — installs golangci-lint and other dev tools into `.tmp/bin/` (required before linting)
- `make development_setup` — sets up local git repo fixtures needed by some tests (idempotent)
- `go build ./...` — must compile clean
- `go vet ./...` — must pass clean
- `go test -race ./... -count=1 -timeout 30m` — fix any failures your changes introduced; `-race` adds ~10× overhead so the timeout must be generous
- `make lint` — runs golangci-lint via the Makefile (version is pinned in `GOLANGLINT_VERSION` in the Makefile; always use `make lint` rather than calling the binary directly so the pinned version is used)
Do not log `CI_JOB_TOKEN`, API tokens, or any secret value to stdout. If you need to
diagnose an authentication failure, log the HTTP status code and response body only.
Some tests require a live Docker daemon, Kubernetes cluster, or real GitLab instance
and will fail in CI. These are expected — log them explicitly and continue.
Do not treat pre-existing infrastructure-dependent failures as blockers.
## Commit and branch conventions
- Branch name: `fix/issue-{IID}-short-kebab-description`
- Commit message: `fix: imperative description (closes #{IID})`
- MR description must explain root cause and the fix, not just what changed
## Bug triage — when to stop
Stop and log reasoning without creating an MR when:
- The bug affects a deprecated executor or command (see above)
- The root cause cannot be determined from available context
- The fix would require changes across more than 5 files or touches core architecture
- The issue has a `security` label — these require human review
- The issue has a `customer` or `priority::1` / `priority::2` label — flag for @adebayo_a
## Focus discipline
**Do not fix unrelated CI pipeline failures.** If the repository's CI pipeline is
failing for a reason unrelated to the issue you were assigned, note it in the MR
description and continue with the assigned fix. Do not open branches to repair CI
unless the failing pipeline was explicitly introduced by your own changes.
## Patterns from past fixes
Use this section during research to recognise familiar bug classes before diving into code.
### Context handling
- Always return the deadline context error, not the parent context error.
In retry/backoff loops, `ctx.Err()` on the wrong context is a recurring mistake.
- Replace `time.After` in loops with `time.NewTimer` + explicit `Stop()`. `time.After`
leaks timers until they fire; in retry loops this causes unnecessary allocations
and delayed cancellation. (MR !6064)
### Data races
- Shared state accessed from goroutines must be protected with a mutex or communicated
via channels. The WebSocket tunnel and the runner fleet scheduler are known areas
where races have occurred. Always run `go test -race` before pushing. (MR !6237)
### String encoding and filenames
- File names passed to archive headers (gzip, zip, tar) must be sanitised before use.
Non-ASCII characters cause latin-1 encoding errors in gzip headers. Use the existing
sanitisation helper in `helpers/` rather than passing raw paths. (MR !6487)
### Configuration changes
- New config fields that change existing behaviour must default to preserving the old
behaviour. Never change the meaning of an existing field's zero value — that is a
breaking change. (MR !6081)
### S3 / cache errors
- S3 403 errors often mean missing session token, not bad credentials. Check whether
the credentials chain includes a session token and ensure it is forwarded. (MR !6376, !6472)
### Nil guards
- `filepath.Walk` can pass a nil `FileInfo` when it encounters a permission error.
Always nil-check `FileInfo` before accessing its methods. (MR !6050)
### PowerShell variable name escaping
- When generating PowerShell variable references, any name containing characters
outside `[a-zA-Z0-9_]` (dashes, dots, spaces, etc.) must use `${name}` syntax.
Bare `$name` is invalid for such names — PowerShell parses `$MY-VAR` as
`($MY) - (VAR)`, producing a syntax error or wrong value.
- Use a regex guard `[^a-zA-Z0-9_]` — not just `strings.Contains(name, "-")`.
Dots, spaces, and other special characters trigger the same problem.
### Symlink traversal
- `filepath.Walk` does not follow directory symlinks. When walking artifact paths,
glob results, or any user-specified path, check whether the walk root is a symlink
and resolve it with `filepath.EvalSymlinks` before calling Walk.
- **Always include cycle detection**: use a `visited map[string]struct{}` keyed on
real (resolved) paths. A circular symlink without detection causes an infinite loop.
Failing to detect cycles is a correctness bug, not a performance concern.
- **Always add a cycle termination test**: name it `Test<Function>_CycleDoesNotHang`,
construct an actual circular symlink in a temp dir, and assert the function returns
within a reasonable deadline. An untested cycle path is a production denial-of-service
risk in multi-tenant CI environments.
### Feature flags and git strategy completeness
- When a feature flag controls behaviour that runs in a switch over `GetGitStrategy()`,
check that every strategy branch (`GitClone`, `GitFetch`, `GitEmpty`, `GitNone`)
is handled. A branch that returns early or logs "skipping" without doing the work
silently breaks the feature flag for that strategy.
### Error return semantics — nil beats zero-value struct
- When a network call fails or returns undecodable data, return `nil`, not a
zero-value struct. Callers use nil checks to detect failure; a non-nil struct
with all-zero fields (e.g. `ID: 0`) can be mistaken for success and trigger
downstream panics in code that expects non-nil only on success.
- When adding a guard to a legacy fallback path (e.g. content-type checks before
re-issuing a request), ensure the guarded-off path returns `nil`, not the fallback
result.
### Runtime identity over compile-time config
- When guarding privileged shell operations (e.g. `chown`), prefer a runtime check
(`[ "$(id -u)" = "0" ]`) over a compile-time check of Kubernetes security context
fields. Security context fields may not reflect reality: pods can run as non-root
via Docker `--user`, admission webhooks, or other mechanisms not captured in the
runner config. The runtime check is always ground truth.
### Git config file ownership
- `git config --global` resolves to `$HOME/.gitconfig`. When jobs run as non-root
users, `$HOME` is often `/root` (owned by root), causing "Permission denied".
Before any `git config --global` call, export `GIT_CONFIG_GLOBAL` pointing to a
writable temp file under the runner's temp directory. Clean it up in the job
cleanup script alongside other temp files.
### Variable expansion in secrets and external paths
- CI/CD variable references (`$VAR_NAME`) in fields like Vault secret paths, clone
paths, and external URLs must be expanded before the value is used. Search the
call site for an existing `ExpandVariables` / `Expand` utility — do not inline
string replacement. If the expansion happens inside a shared interface method,
move it there so all callers benefit and the contract is enforced centrally.
- When a path read from an env file is used as a working directory or as the
argument to `os.RemoveAll`, validate it with `filepath.Rel(rootDir, path)` and
reject paths that escape the root (i.e. `strings.HasPrefix(rel, "..")`). This
guards against path-traversal via a malicious or misconfigured pre-clone script.
### Scope of a typical fix
Most merged bug fixes change 1–3 files and under 30 lines net. If your proposed
fix is larger than this, re-examine whether you are solving the right problem or
inadvertently refactoring. Flag it in the log and stop if scope has grown beyond
a targeted fix.
================================================
FILE: CHANGELOG.md
================================================
## v18.11.1 (2026-04-20)
### Bug fixes
- Merge branch 'security-fix-k8s-uid-gid-root-bypass' into 'main' [!6643](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6643)
## v18.11.0 (2026-04-16)
### New features
- Consolidate the HTTP Status Code field [!6492](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6492)
- Change the concrete helper image to use shell-form CMD [!6591](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6591)
- Cache AssumeRole credentials to reduce STS requests [!6549](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6549)
- Implement Concrete CI Function [!6410](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6410)
- Add logging field validator CI job [!6580](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6580)
- Fix default artifacts upload timeout values [!6584](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6584)
- Add k8s nodename to pod phase output [!6311](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6311) (Thorsten Banhart @banhartt)
- Add native steps job counter metric [!6369](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6369)
- Bundle git and CA certificates for concrete runner [!6504](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6504)
- Update builtins to use step-runner BuiltinContext interface [!6616](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6616)
- Add seccomp and AppArmor profile support to Kubernetes executor security context [!6512](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6512) (Marc Ullman @MarcUllman)
- Kubernetes: add PodDisruptionBudget support for job pods [!6331](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6331)
- Pass socket path from step-runner serve to proxy command [!6507](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6507)
- Resolve "Windows Runners: Document "session 0" restrictions (screen resolution statically set to 1024x768)" [!4994](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/4994)
- Kubernetes: autoscaler for idle capacity via pause pods [!6334](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6334)
### Bug fixes
- Update FF_SCRIPT_SECTIONS documentation to reflect current behavior [!6519](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6519) (Pishel65 @pishel65)
- Rate-limit and instrument S3 AssumeRole calls [!6528](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6528)
- Cache/s3v2: cache S3 client to reduce IMDS requests [!6530](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6530)
- PowerShell/Pwsh environment variables can't process special characters in their names. [!6502](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6502) (Pishel65 @pishel65)
- Fix proxy-mask credential store file permissions on Unix [!6510](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6510)
- Fix disable_cache disabling all volumes instead of only cache [!6552](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6552) (Aaron Döppner @aarondpn-sp)
- Restore fixed runner command path [!6529](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6529)
- Use custom endpoint in detectBucketLocation [!6532](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6532)
- Log warning when DOCKER_AUTH_CONFIG credentials resolution fails [!6578](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6578)
- Properly escape ANSI color codes in shell scripts [!6527](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6527)
- Improve step_script to bring it on part with Runner legacy path [!6596](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6596)
- Revert "Remove GPG signing color" [!6554](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6554)
### Maintenance
- No global executors [!6508](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6508)
- Patch(cache): ensure cache exists before uploading [!6569](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6569)
- Highlight actively developed executors [!6585](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6585)
- Bump up runner images version to 0.0.38 [!6541](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6541)
- Cache: rename local artifact when FF_HASH_CACHE_KEYS is toggled [!6546](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6546)
- Update Windows backward compatibility support [!6523](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6523) (Pishel65 @pishel65)
- Add Support for Windows Server 24H2 [!6522](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6522) (Pishel65 @pishel65)
- Add Pipeline Security group as code owners for secrets managers [!6474](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6474)
- Link to main branch for runner-helper Dockerfiles [!6533](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6533) (Sven Hoexter @hoexter)
- Standardize runner capitalization in Docker Machine autoscale docs [!6615](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6615)
- Adding test for new alert format [!6550](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6550)
- Update CI components [!6517](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6517)
- Fix autoscale documentation typos [!6611](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6611) (Bob Singh @bobsingh.dev)
- Add boundary test cases for statusClass [!6551](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6551) (Bob Singh @bobsingh.dev)
- Pilot runners failover [!6536](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6536)
- Remove all references to PackageCloud [!6514](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6514)
- Add Duo Workflow agent configuration and instructions [!6588](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6588)
- Properly support Job Router FF from runner config [!6545](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6545)
- AI Translated Documentation Push: GITTECHA-610 [!6577](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6577)
- Docs(docker-machine): update docs [!6534](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6534)
- Creating documentation about Windows helper images [!6525](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6525) (Pishel65 @pishel65)
- Documented fallback correlation ID [!6531](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6531)
- Docs maintenance: Fix and update broken URLs [!6526](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6526)
- Revert "Merge branch 'malvarez-consolidate-http-status-code-field' into 'main'" [!6524](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6524)
- Removing the mention of packagecloud [!6582](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6582)
- Fix alert boxes in translated documentation [!6595](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6595)
- Changing warning format [!6539](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6539)
- Rename Kubernetes Agent Server to GitLab Relay (KAS) [!6583](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6583)
- Document interactive desktop requirement for Windows GUI tests [!6571](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6571)
- Clarify post_build_script and after_script execution behavior [!6573](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6573)
- Update RPM package naming from amd64 to x86_64 [!6543](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6543)
- Updating note format [!6537](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6537)
- Tidy up Markdown in documentation [!6520](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6520)
## v18.10.1 (2026-04-05)
### New features
- Fix default artifacts upload timeout values [!6584](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6584)
## v18.10.0 (2026-03-16)
### New features
- Upgrade step-runner to v0.30.0 [!6441](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6441)
- Add volume_keep option to Docker executor [!6490](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6490)
- Ensure subprocess termination if GitLab Runner exits on Windows [!6500](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6500) (Ilan Godik @NightRa)
- Update policy-related logs to be more generic [!6445](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6445)
- Docker+machine: add shutdown drain for idle machines [!6330](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6330)
- Support environment variable expansion in runner token and URL [!6068](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6068)
- Add artifact upload timeouts [!5900](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5900)
- Teach runner how to set pod-level resources for build pods [!5922](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5922) (Stéphane Talbot @stalb)
- Add support for interactive web terminal in docker for PowerShell and Pwsh [!6363](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6363) (Pishel65 @pishel65)
- Add install instructions for the step-runner [!6420](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6420)
- Build gitlab-runner-windows-arm64 executable [!6495](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6495) (Bruno @brunvonlope)
### Bug fixes
- Fix failing tests for autoscaler due to taskscaler udpate [!6434](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6434)
- [Commander]: Fix process handle leak when using Windows Jobs [!6498](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6498) (Ilan Godik @NightRa)
- Bump runner images version [!6429](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6429)
- Fix proxy-mask credential store file permissions on Unix [!6510](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6510)
- Runner-wrapper: buffer errCh to avoid goroutine leak on shutdown [!6337](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6337) (Emmanuel 326 @Emmanuel326)
- Force authenticated calls to Gitaly on public projects [!6444](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6444)
- Add helpful error message for S3 403 Forbidden in cache extractor [!6472](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6472)
- Fix non-latin-1 string error when uploading artifact [!6487](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6487)
- Avoid breaking change when script syntax is invalid when no inputs used [!6417](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6417)
- Upgrade gitlab.com/gitlab-org/moa to fix unmatched template expressions [!6513](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6513)
### Maintenance
- Go: Update module github.com/Azure/azure-sdk-for-go/sdk/storage/azblob to v1.6.4 [!6405](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6405)
- Update alert box style, runner docs 1 [!6451](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6451)
- Go: Update module github.com/aws/aws-sdk-go-v2/service/secretsmanager to v1.41.1 [!6403](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6403)
- Go: Update module github.com/aws/aws-sdk-go-v2 to v1.41.1 [!6394](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6394)
- Go: Update module github.com/klauspost/compress to v1.18.4 [!6406](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6406)
- AI Translated Documentation Push: GITTECHA-581 [!6501](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6501)
- Add Troubleshooting mention for errors caused by azure overprovisioning [!6430](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6430)
- AI Translated Documentation Push: GITTECHA-563 [!6470](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6470)
- Consolidate build URL helpers into helpers/url with auth flag [!6483](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6483)
- Make hosted-runners-bridge job dependent on pulp release [!6467](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6467)
- Go: Update module github.com/sirupsen/logrus to v1.9.4 [!6408](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6408)
- Go: Update module github.com/aws/aws-sdk-go-v2/service/sts to v1.41.7 [!6404](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6404)
- Go: Update module cloud.google.com/go/storage to v1.60.0 [!6416](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6416)
- Go: Update module github.com/openbao/openbao/api/v2 to v2.5.1 [!6407](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6407)
- Go: Update gitlab.com/gitlab-org/fleeting/fleeting digest to 1389ec0 [!6421](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6421)
- Prevent bleeding-edge jobs from running on CC [!6437](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6437) (Touni Atchadé @oratchade)
- Go: Update gitlab.com/gitlab-org/fleeting/fleeting/metrics/prometheus digest to 5362476 [!6384](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6384)
- AI Translated Documentation Push: GITTECHA-549 [!6435](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6435)
- Update module google.golang.org/protobuf/cmd/protoc-gen-go to v1.36.11 [!6415](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6415)
- Go: Update module github.com/bmatcuk/doublestar/v4 to v4.10.0 [!6425](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6425)
- Go: Update module github.com/aws/aws-sdk-go-v2/credentials to v1.19.10 [!6396](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6396)
- Go: Update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.96.0 [!6419](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6419)
- Go: Update gitlab.com/gitlab-org/fleeting/fleeting/metrics/prometheus digest to 9c980c4 [!6402](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6402)
- Remove automaxprocs since it's not necessary with Go 1.25 [!6479](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6479)
- Prevent CACHE_FALLBACK_KEY from bypassing protection on Windows [!6440](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6440)
- Go: Update github.com/johannesboyne/gofakes3 digest to 4c385a1 [!6380](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6380)
- Log collection cleanups [!6373](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6373)
- Update github.com/santhosh-tekuri/jsonschema to v6 [!6499](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6499)
- Update module github.com/vektra/mockery to v3.6.4 [!6413](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6413)
- Update localization team owners in CODEOWNERS [!6355](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6355)
- Update dependency danger-review to v2.1.0 [!5936](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5936)
- Go: Update gitlab.com/gitlab-org/fleeting/fleeting/metrics/prometheus digest to 1389ec0 [!6422](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6422)
- Remove all references to PackageCloud [!6514](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6514)
- Refactor extract cache key sanitization into dedicated package [!6509](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6509)
- Update LabKit Version [!6491](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6491)
- Go: Update gitlab.com/gitlab-org/fleeting/taskscaler digest to b5a1223 [!6385](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6385)
- Go: Update gitlab.com/gitlab-org/fleeting/taskscaler/metrics/prometheus digest to 3fd95b0 [!6386](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6386)
- Exclude image and development files from docs-locale link validation [!6464](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6464)
- Chore(metrics): gitlab_runner_jobs_total init value [!6469](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6469)
- Update in-toto library [!6481](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6481)
- Update dependency ruby to v3.4.8 [!6460](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6460)
- Improve macOS runner installation page [!6438](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6438)
- Go: Update gitlab.com/gitlab-org/fleeting/taskscaler/metrics/prometheus digest to 891f7bc [!6423](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6423)
- Avoid bare URLs in YAML frontmatter in documentation [!6397](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6397)
- Refactor cache functionality to remove common package dependency [!6366](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6366)
- Update GPG public key [!6468](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6468)
- Remove GPG signing color to allow pilot runners to execute package jobs [!6486](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6486)
- Go: Update module k8s.io/client-go to v0.35.1 [!6412](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6412)
- Go: Update gitlab.com/gitlab-org/fleeting/fleeting digest to 7f6dd45 [!6462](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6462)
- Align definition of concurent ID [!6476](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6476)
- Fix indentation of list continuation text and link in documentation [!6478](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6478)
- Cleanup go.mod and go.sum [!6471](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6471)
- Update module google.golang.org/grpc/cmd/protoc-gen-go-grpc to v1.6.1 [!6414](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6414)
## v18.9.0 (2026-02-19)
### New features
- Allow passing `env` and `labels` options to `json-file` Docker logging driver [!5638](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5638) (Patrick Decat @pdecat)
- Enable Job Inputs feature flag by default [!6275](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6275)
- Add CI Jobs to push packages to Pulp [!6073](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6073)
- Retry pulp content push commands on specific errors [!6197](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6197)
- Instrument input interpolations [!6047](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6047)
- Add support for Google Cloud Service universe domain [!6338](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6338)
- Upgrade step-runner to version 0.24.0 [!6056](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6056)
- Push runner linux packages to Pulp [!6062](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6062)
- Add user agent to AWS Secrets Manager integration [!6060](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6060) (derikwang @derik01)
- Script function [!6029](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6029)
- Filter out obsolete distro releases [!6042](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6042)
- Pass job timeout in steps RunRequest so server can also enforce job timeouts [!6375](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6375)
- Implement user script to step [!6069](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6069)
- Helpers/retry: interrupt backoff sleep on context cancellation [!6061](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6061) (Emmanuel 326 @Emmanuel326)
- Update the libvirt use doc [!6034](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6034) (Funning @FunningC0217)
- Add zos build tags [!5835](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5835) (Joon Lee @jlee_ibm)
- Avoid interpolation without defined job inputs [!6374](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6374)
- Job Router client - WebSocket support [!6020](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6020)
- Upgrade step-runner to version 0.26.0 [!6351](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6351)
### Security fixes
- Update RUNNER_IMAGES_VERSION to 0.0.34 [!6066](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6066)
### Bug fixes
- Pass S3 session token for access key credentials [!6376](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6376)
- Fix FD exhaustion during retry requests [!6041](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6041)
- Fix proxy_exec secret masking permissions [!6044](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6044)
- Update pkcs7 library [!6016](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6016)
- Refactor Connector to allow setup before connection [!6359](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6359)
- Fix WebSocket tunnel data race [!6237](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6237)
- Avoid breaking change when script syntax is invalid when no inputs used [!6417](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6417)
- Add service container ID hostname when emulating links functionality [!6043](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6043)
- Runner_wrapper: fix backoff retry context cancellation handling [!6064](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6064) (Emmanuel 326 @Emmanuel326)
- Update the logic for comparing the urls and tokens [!6296](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6296) (Aayush @Aayush-Saini)
- Ensure check_interval takes effect and eliminate race condition between fleet of runners [!6081](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6081) (Pishel65 @pishel65)
- Guard against nil FileInfo in filepath.Walk [!6050](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6050) (Bob Singh @bobsingh.dev)
### Maintenance
- Adds MR Review instructions focused around Log Field Standardisation [!6353](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6353)
- Rename job router RPC package [!6049](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6049)
- Update linting configuration from GitLab project [!6352](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6352)
- De-duplicate kube warning events [!5926](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5926)
- Add command to sync go version in other files [!6378](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6378)
- Bump Go to 1.25.7 and RUNNER_IMAGES_VERSION to 0.0.35 [!6370](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6370)
- Update crosslink pointing to docs [!6346](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6346)
- Correct runner linux package archs [!6038](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6038)
- Add status check to launchctl I/O error troubleshooting [!6358](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6358)
- Add mage to project dependencies [!6348](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6348)
- Move JobResponse to spec.Job [!6058](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6058)
- Update go packages [!6032](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6032)
- Switch to a maintained YAML library go.yaml.in/yaml/v3 [!6065](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6065)
- Move versions to variables [!6368](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6368)
- Add UniverseDomain configuration for GCS cache [!6362](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6362)
- Network: stop retry backoff timer on context cancellation [!6063](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6063) (Emmanuel 326 @Emmanuel326)
- Clarify Bash requirement for GitLab Runner shell executor on macOS [!6350](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6350)
- Fix miscellaneous Markdown formatting issues [!6347](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6347)
- Update redirecting links [!6327](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6327)
- Fix supported distros documentation [!6048](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6048)
- Kubernetes executor GPU configuration requirements [!6077](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6077)
- Use chunk size of 10MB for pulp uploads [!6078](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6078)
- Fix headers passed when using CI_JOB_TOKEN [!6075](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6075)
- Rename GITLAB_TOKEN to GITLAB_TEST_TOKEN in test utilities [!6045](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6045) (Aayush @Aayush-Saini)
- AI Translated Documentation Push: GITTECHA-544 [!6360](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6360)
- Include runner_name in all relevant log lines [!5883](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5883)
- Add pod/container name to build logger fields [!5891](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5891)
- Add diagnostics logging for S3 cache AssumeRole operations [!6345](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6345)
- Remove EOL spaces in doc files - 2026-01-28 [!6326](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6326)
- Incorporate additional change from GitLab project [!6357](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6357)
- Document emulated docker links caveats [!6054](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6054)
- Restore environment variables to build container [!6333](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6333)
## v18.8.0 (2026-01-15)
### New features
- Job Router [!5945](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5945)
- Implement mage pulp:supportedOSVersions target [!6024](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6024)
- Improve Portability of Git Version Check for z/OS [!6001](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6001) (Kai McGregor @kmcgreg-ibm)
- Introduce better job inputs interpolation error [!6014](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6014)
- Emulate deprecated Docker links functionality with ExtraHosts [!5980](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5980)
- Mage target to create Pulp CLI configuration [!6039](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6039)
### Bug fixes
- Ensure buildlogger uses available masks (issue reported by Christian Sousa from Blue Origin Manufacturing, LLC) [!5909](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5909)
- Support Git submodules with different hosts via RepoURL insteadOf [!6025](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6025)
- Add IPv6 address when emulating links functionality [!6027](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6027)
- Cleanup dangling virtualbox resources [!5941](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5941)
- Add `-protected` suffix to docker cache volumes if any of the cache keys include the `-protected` suffix [!6021](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6021)
- Fix connector interface not being exposed for docker+machine and docker-autoscaler executors [!6015](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6015)
### Maintenance
- Fix service container log collection wait time [!6019](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6019)
- Fix race condition in TestDockerCommandWithRunnerServiceEnvironmentVariables [!6018](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6018)
- Fix a typo in the GitLab Runner system requirements page [!6031](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6031)
- Fix privileged setting for general Podman usage [!6023](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6023)
- Update Golang to 1.25.3 [!5978](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5978)
- Make Alpine 3.21 the default base for helper images [!5995](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5995)
- docs: Replace `curl | bash` commands with safer steps [!6036](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6036) (Yasssmiine @Yasssmiine-x)
- Remove alpine 3.19 [!5993](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5993)
- Restructure GitLab Runner installation documentation with card-based navigation [!6030](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6030)
- Clarify details about arm helper image, cleanup extra wording, fix link [!6012](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6012) (Ben Bodenmiller @bbodenmiller)
- Allow the i18n lint paths job to fail [!6017](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6017)
## v18.7.2 (2026-01-08)
### Bug fixes
- Support Git submodules with different hosts via RepoURL insteadOf [!6025](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6025)
## v18.7.1 (2025-12-23)
### Bug fixes
- Add IPv6 address when emulating links functionality [!6027](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6027)
## v18.7.0 (2025-12-18)
### New features
- Add reservation throttling config option [!6010](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6010)
- Introduce first iteration of job inputs interpolation behind FF [!5855](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5855)
- Emulate deprecated Docker links functionality with ExtraHosts [!5980](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5980)
### Bug fixes
- Fix connector interface not being exposed for docker+machine and docker-autoscaler executors [!6015](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6015)
- Do not fail install if gitlab-runner service commands not available [!5948](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5948)
- Fix shell executor not working with variables that use file variables [!5958](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5958)
- Configure submodules to inherit parent repository credentials [!5962](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5962)
- Fix "unable to get password from user" errors in shell executor [!5961](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5961)
- Fix handling of relative builds dir [!5977](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5977)
- Ensure buildlogger uses available masks (issue reported by Christian Sousa from Blue Origin Manufacturing, LLC) [!5909](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5909)
- Fix clear-docker-cache script for Docker 29 [!5969](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5969)
- Fix bash shell cleanup to support variable expansion in paths [!5966](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5966)
- Ignore user-defined AWS_PROFILE variable in cache uploads [!5986](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5986)
- Fix misleading retry message when GET_SOURCES_ATTEMPTS=1 [!5998](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5998)
- Support resolving Windows 10.0.26200 helper image [!5984](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5984)
### Maintenance
- Add dashboard generation process and usage guidance [!5989](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5989)
- Remove CertificateDirectory global [!5956](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5956)
- Docs metadata update for group change from Deploy/Environments -> Verify/Runner Core [!5955](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5955)
- Bump golang.org/x/crypto [!5991](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5991)
- Enable log timestamps by default [!5861](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5861)
- AI Translated Documentation Push: GITTECHA-373 [!5934](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5934)
- Bump gitlab.com/gitlab-org/fleeting/taskscaler to pull a fix [!5999](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5999)
- Fix flaky tests [!5994](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5994)
- Regenerate mocks [!5974](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5974)
- Bump runner image version [!6007](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6007)
- Recursively set up Git submodules credentials [!5997](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5997)
- Roll documentation linting tool versions forward [!5954](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5954)
- Shorten headers to avoid markdownlint exclusion code (Runnner) [!5951](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5951)
- Use CI_RUNNER_VERSION for arm helper image [!6004](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6004) (Ben Bodenmiller @bbodenmiller)
- Bump step-runner to v0.20.0 [!5970](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5970)
- AI Translated Documentation Push: GITTECHA-371 [!5932](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5932)
- Fix typo of libvirt [!5953](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5953)
- Remove EOL spaces in doc files - 2025-11-17 [!5952](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5952)
- Fix service container log collection wait time [!6019](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6019)
- Document architecture support in `gitlab-runner-helper-images` package [!5976](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5976)
- Update GitLab Runner developer docs [!5853](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5853)
- Ensure `stable docker images` only runs after all tests pass [!5990](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5990)
- Update Kubernetes client-go library to 0.32.10 [!5929](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5929) (Stéphane Talbot @stalb)
- Refactor commands, construct a single GitLab client in a single place [!5950](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5950)
- Fix race condition in TestDockerServiceHealthcheckOverflow [!5985](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5985)
- Tidy go mod [!5973](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5973)
- AI Translated Documentation Push: GITTECHA-375 GITTECHA-420 [!5938](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5938)
- Docs(docker-machine): update docs [!6006](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6006)
- Fix a teeny-tiny typo in runner `common/config.go` [!5967](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5967) (Sadra Barikbin @s.barikbin)
- Misc refactors [!5949](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5949)
- Include go.mod changes when checking modules in pipeline [!5975](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5975)
- Fix toml spacing inconsistencies in k8s runner docs [!6003](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6003) (Ben Bodenmiller @bbodenmiller)
- Update instructions after UI redesign [!6000](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/6000)
- Warn users about legacy /ci URL suffix in runner configuration [!5988](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5988)
- Update to Go 1.24.11 [!5992](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5992)
- Update supported OS distro/version docs [!5959](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5959)
- Fix flaky TestCredSetup with -race by removing CI_DEBUG_TRACE [!5987](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5987)
- AI Translated Documentation Push: GITTECHA-372 [!5933](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5933)
- Allow overriding git credentials in shell integration tests [!5982](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5982)
### Documentation changes
- Clarify documentation describing configuration for AWS ASGs with Docker autoscaler [!5996](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5996) (Dan Puttick @dan_oklo)
## v18.6.6 (2025-12-09)
### Bug fixes
- Ignore user-defined AWS_PROFILE variable in cache uploads [!5986](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5986)
### Maintenance
- Fix flaky tests [!5994](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5994)
- Update to Go 1.24.11 [!5992](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5992)
- Ensure `stable docker images` only runs after all tests pass [!5990](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5990)
## v18.6.4 (2025-12-05)
### Bug fixes
- Fix handling of relative builds dir [!5977](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5977)
## v18.6.3 (2025-11-28)
### Bug fixes
- Configure submodules to inherit parent repository credentials [!5962](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5962)
- Fix bash shell cleanup to support variable expansion in paths [!5966](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5966)
## v18.6.2 (2025-11-25)
### Bug fixes
- Fix "unable to get password from user" errors in shell executor [!5961](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5961)
## v18.6.0 (2025-11-17)
### New features
- Functions subcommands in runner binary [!5875](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5875)
- Add namespace support to GitLab Secrets Manager [!5918](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5918)
- Disallow shim execution mode if executor supports native steps execution [!5898](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5898)
- Add MachineOptionsWithName configuration option [!5920](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5920)
- Add slot-based cgroup support for Docker executor [!5870](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5870)
- Add LoongArch (loong64) build support [!5800](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5800) (Mingcong Bai @MingcongBai)
- Bootstrap gitlab-helper-binary for Docker [!5892](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5892)
- Add correlation_id to "Update job..." log line [!5887](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5887)
### Bug fixes
- Retry etcd request timeout error in Kubernetes executor [!5877](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5877)
- Always pass as a file for custom executor [!5904](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5904)
- Handle unexpected panics in trace buffer [!5890](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5890)
- Fix removing files recursively for bash on z/OS [!5623](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5623) (Kai McGregor @kmcgreg-ibm)
- Externalize git configuration [!5912](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5912)
- Fix job logs duplicating as service logs [!5863](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5863) (Markus Kaihola @makeri89)
- Expand variables in `image.docker.platform` before pulling images [!5897](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5897) (Bert Wesarg @bertwesarg)
### Maintenance
- Update Vale rules from GitLab project [!5884](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5884)
- AI Translated Documentation Push: GITTECHA-374 [!5935](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5935)
- Add troubleshooting docs for services on windows k8s executor [!5913](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5913) (Erik Petzold @erik.petzold1)
- Move build execute prepare/user scripts to their own functions [!5893](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5893)
- Docs: Add note for PowerShell versions in the custom executor [!5894](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5894)
- Steps execution via Connect() [!5927](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5927)
- Clarify docs for supported caching feature [!5910](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5910)
- Pull in fixes for CVEs [!5895](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5895)
- Translation Push - All - For English Anchor LInks [!5896](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5896)
- Integration Tests for GCP Secrets Manager [!5881](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5881)
- Use passed context in NewStepsDocker.Exec() [!5915](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5915)
- Remove obsolete code [!5902](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5902)
- Build linux/riscv64 platform for registry.gitlab.com/gitlab-org/gitlab-runner image [!5923](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5923) (Ludovic Henry @luhenry)
- docs(docker.md): add podman selinux mcs section [!5879](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5879) (vtardiveau @vtardiveau)
- Verify all: only use creds for local images [!5914](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5914)
- Update cache S3 SSE Key ID docs [!5919](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5919)
- Add warning regarding podman and GPUs [!5937](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5937)
- AI Translated Documentation Push: GITTECHA-370 [!5917](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5917)
- Fix typo [!5924](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5924)
- Make structured "job finished" log line with failure_reason and exit_code [!5885](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5885)
- [steps] Deflake steps command tests [!5905](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5905)
- Add s3:ListBucket to the required permissions for IAM role to access S3 bucket [!5903](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5903)
- docs: Update docker-machine version [!5899](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5899)
- Add link to UI redesign doc [!5925](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5925)
- Document error when performing sts:AssumeRoleWithWebIdentity for s3 cache [!5921](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5921)
- Minor copy edits in runner docs [!5944](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5944)
- Add link checking to i18n docs linting [!5943](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5943)
- Document Kubernetes CI [!5786](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5786)
- Copy edits to runner docs [!5911](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5911)
- Pull in some changes from the security fork [!5906](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5906)
- Use RFC3339Nano timestamp format for JSON logs [!5888](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5888)
- Remove curly brackets from example [!5942](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5942)
- chore: refactor TestAttach using canonical client [!5838](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5838) (Muhammad Daffa Dinaya @mdaffad)
## v18.5.0 (2025-10-13)
### New features
- Add Kubernetes context support for executor [!5859](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5859)
- Add label support to runner configuration [!5802](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5802)
- Implement minimal job confirmation API [!5843](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5843)
- Update Usage Log with more job context [!5869](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5869)
- Add project name to build logging fields [!5846](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5846)
### Bug fixes
- Fix logging of duration_s field [!5874](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5874)
- Remove duplicate prefix in docker service containers [!5840](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5840)
### Maintenance
- Refactor autoscaler provider for readability and update dependencies [!5807](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5807) (Sven Geisler @sge70)
- Remove EOL spaces in doc files - 2025-10-07 [!5873](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5873)
- Latest Translation Yaml enhancements [!5842](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5842)
- Reduce over-linking in GitLab Runner registration documentation [!5834](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5834)
- Improve branch selection logic for docs:check Hugo build job [!5866](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5866)
- Update Hugo version for Docs test [!5852](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5852)
- Update the ubuntu version used as a base image [!5845](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5845)
- Docs feedback: Add more context for Parallels executor [!5878](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5878)
- Rename Connect() to TerminalConnect() [!5880](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5880)
- Improve error logging in docker-machine executor [!5862](https://gitlab.com/gitlab-org/
gitextract_595h71_a/
├── .dockerignore
├── .editorconfig
├── .flaky-tests.txt
├── .gitattributes
├── .gitignore
├── .gitlab/
│ ├── .argo/
│ │ └── mr_template_doc_ai.md
│ ├── CODEOWNERS
│ ├── changelog.yml
│ ├── ci/
│ │ ├── _common.gitlab-ci.yml
│ │ ├── _kubernetes.gitlab-ci.yml
│ │ ├── _project_canonical.gitlab-ci.yml
│ │ ├── _project_fork.gitlab-ci.yml
│ │ ├── _rules.gitlab-ci.yml
│ │ ├── build.gitlab-ci.yml
│ │ ├── coverage.gitlab-ci.yml
│ │ ├── deploy.gitlab-ci.yml
│ │ ├── docs.gitlab-ci.yml
│ │ ├── hosted-runners-bridge.gitlab-ci.yml
│ │ ├── package.gitlab-ci.yml
│ │ ├── postrelease.gitlab-ci.yml
│ │ ├── prepare.gitlab-ci.yml
│ │ ├── qa.gitlab-ci.yml
│ │ ├── rebase.gitlab-ci.yml
│ │ ├── release.gitlab-ci.yml
│ │ ├── test-kubernetes-integration.gitlab-ci.yml
│ │ └── test.gitlab-ci.yml
│ ├── dependency_decisions.yml
│ ├── duo/
│ │ ├── agent-config.yml
│ │ └── mr-review-instructions.yaml
│ ├── issue_templates/
│ │ ├── Bug.md
│ │ ├── Default.md
│ │ ├── Documentation.md
│ │ ├── Feature Flag Cleanup.md
│ │ ├── Feature Flag Roll Out.md
│ │ ├── Feature Proposal.md
│ │ ├── Request for test infra feature toggle.md
│ │ ├── Security developer workflow.md
│ │ ├── bump-golang.md
│ │ ├── planning_issue.md
│ │ └── trainee-backend-maintainer.md
│ ├── merge.release.yml
│ ├── merge_request_templates/
│ │ ├── Default.md
│ │ ├── Documentation.md
│ │ └── Security Release.md
│ ├── renovate.json
│ └── route-map.yml
├── .gitlab-ci.yml
├── .golangci.yml
├── .labkit_logging_todo.yml
├── .markdownlint-cli2.yaml
├── .mockery.yaml
├── .tool-versions
├── .vale.ini
├── AGENTS.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dangerfile
├── LICENSE
├── Makefile
├── Makefile.build.mk
├── Makefile.runner_helper.mk
├── NOTICE
├── PROCESS.md
├── PROVENANCE.md
├── Procfile
├── README.md
├── VERSION
├── Vagrantfile
├── apps/
│ └── gitlab-runner-helper/
│ └── main.go
├── argo_translation.yml
├── cache/
│ ├── adapter.go
│ ├── adapter_test.go
│ ├── azure/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── azure.go
│ │ ├── azure_test.go
│ │ ├── credentials_resolver.go
│ │ ├── credentials_resolver_test.go
│ │ └── mocks.go
│ ├── cache.go
│ ├── cache_test.go
│ ├── cacheconfig/
│ │ ├── cacheconfig.go
│ │ └── cacheconfig_test.go
│ ├── cachekey/
│ │ ├── cachekey.go
│ │ └── cachekey_test.go
│ ├── credentials_adapter.go
│ ├── credentials_adapter_test.go
│ ├── gcs/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── credentials_resolver.go
│ │ ├── credentials_resolver_test.go
│ │ └── mocks.go
│ ├── gcsv2/
│ │ ├── adapter.go
│ │ └── adapter_test.go
│ ├── mocks.go
│ ├── s3/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── bucket_location_tripper.go
│ │ ├── credentials_adapter.go
│ │ ├── credentials_adapter_test.go
│ │ ├── minio.go
│ │ ├── minio_test.go
│ │ └── mocks.go
│ ├── s3v2/
│ │ ├── adapter.go
│ │ ├── adapter_test.go
│ │ ├── mocks.go
│ │ ├── s3.go
│ │ └── s3_test.go
│ └── test/
│ └── adapter.go
├── certs/
│ ├── README.md
│ ├── apple-developer-id-app-cert.cer
│ └── gitlab-inc-ssl-com.crt
├── ci/
│ ├── .test-failures.servercore1809.txt
│ ├── .test-failures.servercore21H2.txt
│ ├── prebuilt_helper_image
│ ├── release_dir
│ ├── release_s3
│ ├── rpm_verify_fips
│ ├── touch_git
│ ├── touch_git.ps1
│ └── version
├── commands/
│ ├── builds_helper.go
│ ├── builds_helper_integration_test.go
│ ├── builds_helper_test.go
│ ├── config.go
│ ├── config_unix.go
│ ├── config_windows.go
│ ├── constants.go
│ ├── fleeting/
│ │ ├── fleeting.go
│ │ └── fleeting_integration_test.go
│ ├── health_helper.go
│ ├── helpers/
│ │ ├── archive/
│ │ │ ├── archive.go
│ │ │ ├── archive_test.go
│ │ │ ├── fastzip/
│ │ │ │ ├── options_test.go
│ │ │ │ ├── zip_fastzip_archiver.go
│ │ │ │ └── zip_fastzip_extractor.go
│ │ │ ├── gziplegacy/
│ │ │ │ └── gzip_legacy_archiver.go
│ │ │ ├── mocks.go
│ │ │ ├── raw/
│ │ │ │ └── raw_archiver.go
│ │ │ ├── tarzstd/
│ │ │ │ ├── ops_unix.go
│ │ │ │ ├── ops_windows.go
│ │ │ │ ├── tarzstd_archiver.go
│ │ │ │ └── tarzstd_extractor.go
│ │ │ └── ziplegacy/
│ │ │ ├── zip_legacy_archiver.go
│ │ │ └── zip_legacy_extractor.go
│ │ ├── archiver.go
│ │ ├── archiver_test.go
│ │ ├── artifact_metadata.go
│ │ ├── artifact_metadata_test.go
│ │ ├── artifacts_downloader.go
│ │ ├── artifacts_downloader_test.go
│ │ ├── artifacts_test.go
│ │ ├── artifacts_uploader.go
│ │ ├── artifacts_uploader_integration_test.go
│ │ ├── artifacts_uploader_test.go
│ │ ├── cache_archiver.go
│ │ ├── cache_archiver_integration_test.go
│ │ ├── cache_archiver_test.go
│ │ ├── cache_client.go
│ │ ├── cache_defaults.go
│ │ ├── cache_defaults_test.go
│ │ ├── cache_env.go
│ │ ├── cache_env_test.go
│ │ ├── cache_extractor.go
│ │ ├── cache_extractor_test.go
│ │ ├── cache_init.go
│ │ ├── cache_init_integration_test.go
│ │ ├── cache_metadata.go
│ │ ├── cache_metadata_test.go
│ │ ├── file_archiver.go
│ │ ├── file_archiver_integration_test.go
│ │ ├── file_archiver_test.go
│ │ ├── health_check.go
│ │ ├── health_check_integration_test.go
│ │ ├── helpers_archiver_test.go
│ │ ├── helpers_cache_archiver_test.go
│ │ ├── internal/
│ │ │ └── store/
│ │ │ ├── store.go
│ │ │ ├── store_test.go
│ │ │ ├── store_unix.go
│ │ │ ├── store_unix_test.go
│ │ │ ├── store_windows.go
│ │ │ └── store_windows_test.go
│ │ ├── meter/
│ │ │ ├── formatters.go
│ │ │ ├── formatters_test.go
│ │ │ ├── meter.go
│ │ │ ├── reader.go
│ │ │ ├── reader_test.go
│ │ │ ├── writer.go
│ │ │ └── writer_test.go
│ │ ├── mocks.go
│ │ ├── proxy_exec.go
│ │ ├── proxy_exec_test.go
│ │ ├── read_logs.go
│ │ ├── read_logs_test.go
│ │ ├── retry_helper.go
│ │ ├── retry_helper_test.go
│ │ └── testdata/
│ │ └── test-artifacts/
│ │ ├── file-0
│ │ ├── file-1
│ │ ├── file-2
│ │ ├── file-3
│ │ └── file-4
│ ├── helpers_register_test.go
│ ├── internal/
│ │ └── configfile/
│ │ ├── configfile.go
│ │ ├── configfile_test.go
│ │ ├── metrics.go
│ │ ├── options.go
│ │ ├── system_id_state.go
│ │ ├── system_id_state_test.go
│ │ └── validation.go
│ ├── list.go
│ ├── mocks.go
│ ├── multi.go
│ ├── multi_test.go
│ ├── register.go
│ ├── register_integration_test.go
│ ├── register_test.go
│ ├── register_windows_test.go
│ ├── reset_token.go
│ ├── service.go
│ ├── service_darwin.go
│ ├── service_integration_test.go
│ ├── service_linux.go
│ ├── service_portable.go
│ ├── service_windows.go
│ ├── single.go
│ ├── single_test.go
│ ├── steps/
│ │ ├── steps.go
│ │ └── steps_test.go
│ ├── testdata/
│ │ ├── .runner_system_id
│ │ └── test-config.toml
│ ├── tracing.go
│ ├── tracing_test.go
│ ├── unregister.go
│ ├── unregister_test.go
│ ├── user_mode_warning.go
│ ├── verify.go
│ ├── wrapper.go
│ └── wrapper_test.go
├── common/
│ ├── allowed_images.go
│ ├── allowed_images_test.go
│ ├── build.go
│ ├── build_settings.go
│ ├── build_settings_test.go
│ ├── build_step_dispatch.go
│ ├── build_step_dispatch_test.go
│ ├── build_test.go
│ ├── buildlogger/
│ │ ├── build_logger.go
│ │ ├── build_logger_test.go
│ │ ├── internal/
│ │ │ ├── build_logger_fuzz.go
│ │ │ ├── masker/
│ │ │ │ ├── masker.go
│ │ │ │ └── masker_test.go
│ │ │ ├── nopcloser.go
│ │ │ ├── sync.go
│ │ │ ├── tee.go
│ │ │ ├── testdata/
│ │ │ │ └── corpus/
│ │ │ │ ├── ipsum
│ │ │ │ ├── log-1
│ │ │ │ ├── log-2
│ │ │ │ ├── log-3
│ │ │ │ ├── log-4
│ │ │ │ ├── log-5
│ │ │ │ └── small-random
│ │ │ ├── timestamper/
│ │ │ │ ├── timestamper.go
│ │ │ │ └── timestamper_test.go
│ │ │ ├── tokensanitizer/
│ │ │ │ ├── token_masker.go
│ │ │ │ └── token_masker_test.go
│ │ │ ├── unique.go
│ │ │ └── urlsanitizer/
│ │ │ ├── urlsanitizer.go
│ │ │ └── urlsanitizer_test.go
│ │ └── mocks.go
│ ├── buildtest/
│ │ ├── abort.go
│ │ ├── binary.go
│ │ ├── cleanup.go
│ │ ├── job_output_limit.go
│ │ ├── masking.go
│ │ ├── sections.go
│ │ ├── test.go
│ │ └── variables.go
│ ├── command.go
│ ├── config/
│ │ └── runner/
│ │ ├── monitoring/
│ │ │ ├── job_queuing_durations.go
│ │ │ └── job_queuing_durations_test.go
│ │ └── monitoring.go
│ ├── config.go
│ ├── config_log_options_test.go
│ ├── config_test.go
│ ├── consts.go
│ ├── executor.go
│ ├── executor_test.go
│ ├── exit_code.go
│ ├── exit_code_test.go
│ ├── failure_reason_mapper.go
│ ├── failure_reason_mapper_test.go
│ ├── labels.go
│ ├── mocks.go
│ ├── network.go
│ ├── network_test.go
│ ├── process_logger_adaptor.go
│ ├── reset_token.go
│ ├── secrets.go
│ ├── secrets_test.go
│ ├── shell.go
│ ├── spec/
│ │ ├── inputs.go
│ │ ├── inputs_metrics.go
│ │ ├── inputs_metrics_test.go
│ │ ├── inputs_test.go
│ │ ├── mocks.go
│ │ ├── spec.go
│ │ ├── spec_test.go
│ │ ├── variables.go
│ │ └── variables_test.go
│ ├── steps.go
│ ├── support.go
│ ├── test.go
│ ├── trace.go
│ ├── usage_log.go
│ └── version.go
├── config.toml.example
├── dockerfiles/
│ ├── runner/
│ │ ├── Dockerfile
│ │ └── docker-bake.hcl
│ └── runner-helper/
│ ├── Dockerfile
│ ├── Dockerfile.concrete
│ └── docker-bake.hcl
├── docs/
│ ├── .markdownlint/
│ │ ├── .markdownlint-cli2.yaml
│ │ └── rules/
│ │ └── unnecessary_traversal.js
│ ├── .vale/
│ │ ├── gitlab_base/
│ │ │ ├── Ability.yml
│ │ │ ├── AlertFormat.yml
│ │ │ ├── BadPlurals.yml
│ │ │ ├── British.yml
│ │ │ ├── CIConfigFile.yml
│ │ │ ├── CodeblockFences.yml
│ │ │ ├── CommandStringsQuoted.yml
│ │ │ ├── CurrentStatus.yml
│ │ │ ├── DefaultBranch.yml
│ │ │ ├── Dropdown.yml
│ │ │ ├── EOLWhitespace.yml
│ │ │ ├── ElementDescriptors.yml
│ │ │ ├── FutureTense.yml
│ │ │ ├── GitLabFlavoredMarkdown.yml
│ │ │ ├── HeadingContent.yml
│ │ │ ├── HeadingDepth.yml
│ │ │ ├── HeadingLink.yml
│ │ │ ├── InclusiveLanguage.yml
│ │ │ ├── LatinTerms.yml
│ │ │ ├── Level.yml
│ │ │ ├── ListIndentation.yml
│ │ │ ├── MeaningfulLinkWords.yml
│ │ │ ├── MergeConflictMarkers.yml
│ │ │ ├── MultiLineLinks.yml
│ │ │ ├── NonStandardHyphens.yml
│ │ │ ├── NonStandardListDashes.yml
│ │ │ ├── NonStandardQuotes.yml
│ │ │ ├── NonStandardSpaces.yml
│ │ │ ├── Offerings.yml
│ │ │ ├── OutdatedVersions.yml
│ │ │ ├── OxfordComma.yml
│ │ │ ├── Possessive.yml
│ │ │ ├── PossessiveProperNouns.yml
│ │ │ ├── Prerequisites.yml
│ │ │ ├── ReadingLevel.yml
│ │ │ ├── Repetition.yml
│ │ │ ├── SelfReferential.yml
│ │ │ ├── SentenceLength.yml
│ │ │ ├── SentenceSpacing.yml
│ │ │ ├── Simplicity.yml
│ │ │ ├── Spelling.yml
│ │ │ ├── SubstitutionWarning.yml
│ │ │ ├── Substitutions.yml
│ │ │ ├── TableDelimiterRows.yml
│ │ │ ├── ToDo.yml
│ │ │ ├── UnclearAntecedent.yml
│ │ │ ├── Units.yml
│ │ │ ├── Uppercase.yml
│ │ │ ├── WordSlashWord.yml
│ │ │ ├── Wordy.yml
│ │ │ ├── Zip.yml
│ │ │ └── spelling-exceptions.txt
│ │ ├── gitlab_docs/
│ │ │ ├── Badges-Offerings.yml
│ │ │ ├── Badges-Tiers.yml
│ │ │ ├── FrontMatter.yml
│ │ │ ├── HTMLShortcodes.yml
│ │ │ ├── HistoryItems.yml
│ │ │ ├── HistoryItemsOrder.yml
│ │ │ ├── ImagesOld.yml
│ │ │ ├── InternalLinkCase.yml
│ │ │ ├── InternalLinkExtension.yml
│ │ │ ├── InternalLinkFormat.yml
│ │ │ ├── InternalLinksCode.yml
│ │ │ ├── ReferenceLinks.yml
│ │ │ ├── RelativeLinks.yml
│ │ │ ├── ShortCodeFormat.yml
│ │ │ ├── ShortCodeSyntax.yml
│ │ │ ├── TabsLinks.yml
│ │ │ └── UIText.yml
│ │ ├── vale-json.tmpl
│ │ └── vale.tmpl
│ ├── _index.md
│ ├── commands/
│ │ └── _index.md
│ ├── configuration/
│ │ ├── _index.md
│ │ ├── advanced-configuration.md
│ │ ├── autoscale.md
│ │ ├── configuring_runner_operator.md
│ │ ├── feature-flags.md
│ │ ├── gpus.md
│ │ ├── init.md
│ │ ├── macos_setup.md
│ │ ├── oracle_cloud_performance.md
│ │ ├── proxy.md
│ │ ├── runner_autoscale_aws/
│ │ │ └── _index.md
│ │ ├── runner_autoscale_aws_fargate/
│ │ │ └── _index.md
│ │ ├── slot_based_cgroups.md
│ │ ├── speed_up_job_execution.md
│ │ └── tls-self-signed.md
│ ├── development/
│ │ ├── _index.md
│ │ ├── add-windows-version.md
│ │ ├── internal/
│ │ │ ├── ci/
│ │ │ │ ├── kubernetes_integration_tests.md
│ │ │ │ └── packages_iteration.md
│ │ │ └── engineering/
│ │ │ └── executor_interface/
│ │ │ └── _index.md
│ │ └── reviewing-gitlab-runner.md
│ ├── executors/
│ │ ├── _index.md
│ │ ├── custom.md
│ │ ├── custom_examples/
│ │ │ ├── libvirt.md
│ │ │ └── lxd.md
│ │ ├── docker.md
│ │ ├── docker_autoscaler.md
│ │ ├── docker_machine.md
│ │ ├── instance.md
│ │ ├── kubernetes/
│ │ │ ├── _index.md
│ │ │ ├── troubleshooting.md
│ │ │ └── use_podman_with_kubernetes.md
│ │ ├── parallels.md
│ │ ├── shell.md
│ │ ├── ssh.md
│ │ └── virtualbox.md
│ ├── faq/
│ │ └── _index.md
│ ├── fleet_scaling/
│ │ ├── _index.md
│ │ └── fleeting.md
│ ├── grit/
│ │ └── _index.md
│ ├── install/
│ │ ├── _index.md
│ │ ├── bleeding-edge.md
│ │ ├── docker.md
│ │ ├── environment_variables_in_helm_charts.md
│ │ ├── freebsd.md
│ │ ├── gpg-keys/
│ │ │ ├── 49F16C5CC3A0F81F.pub.gpg
│ │ │ ├── 9CE45ABC880721D4.pub.gpg
│ │ │ └── A674BF8135DFA027.pub.gpg
│ │ ├── kubernetes-agent.md
│ │ ├── kubernetes.md
│ │ ├── kubernetes_helm_chart_configuration.md
│ │ ├── kubernetes_troubleshooting.md
│ │ ├── linux-manually.md
│ │ ├── linux-repository.md
│ │ ├── operator.md
│ │ ├── osx.md
│ │ ├── requirements.md
│ │ ├── step-runner.md
│ │ ├── support-policy.md
│ │ ├── windows.md
│ │ └── z-os.md
│ ├── monitoring/
│ │ └── _index.md
│ ├── register/
│ │ └── _index.md
│ ├── runner_autoscale/
│ │ ├── _index.md
│ │ └── gitlab-runner-autoscaler.md
│ ├── security/
│ │ └── _index.md
│ └── shells/
│ └── _index.md
├── docs-locale/
│ ├── .markdownlint/
│ │ └── .markdownlint-cli2.yaml
│ └── ja-jp/
│ ├── _index.md
│ ├── commands/
│ │ └── _index.md
│ ├── configuration/
│ │ ├── _index.md
│ │ ├── advanced-configuration.md
│ │ ├── autoscale.md
│ │ ├── configuring_runner_operator.md
│ │ ├── feature-flags.md
│ │ ├── gpus.md
│ │ ├── init.md
│ │ ├── macos_setup.md
│ │ ├── oracle_cloud_performance.md
│ │ ├── proxy.md
│ │ ├── runner_autoscale_aws/
│ │ │ └── _index.md
│ │ ├── runner_autoscale_aws_fargate/
│ │ │ └── _index.md
│ │ ├── slot_based_cgroups.md
│ │ ├── speed_up_job_execution.md
│ │ └── tls-self-signed.md
│ ├── development/
│ │ ├── _index.md
│ │ ├── add-windows-version.md
│ │ ├── internal/
│ │ │ ├── ci/
│ │ │ │ └── packages_iteration.md
│ │ │ └── engineering/
│ │ │ └── executor_interface/
│ │ │ └── _index.md
│ │ └── reviewing-gitlab-runner.md
│ ├── executors/
│ │ ├── _index.md
│ │ ├── custom.md
│ │ ├── custom_examples/
│ │ │ ├── libvirt.md
│ │ │ └── lxd.md
│ │ ├── docker.md
│ │ ├── docker_autoscaler.md
│ │ ├── docker_machine.md
│ │ ├── instance.md
│ │ ├── kubernetes/
│ │ │ ├── _index.md
│ │ │ ├── troubleshooting.md
│ │ │ └── use_podman_with_kubernetes.md
│ │ ├── parallels.md
│ │ ├── shell.md
│ │ ├── ssh.md
│ │ └── virtualbox.md
│ ├── faq/
│ │ └── _index.md
│ ├── fleet_scaling/
│ │ ├── _index.md
│ │ └── fleeting.md
│ ├── grit/
│ │ └── _index.md
│ ├── install/
│ │ ├── _index.md
│ │ ├── bleeding-edge.md
│ │ ├── docker.md
│ │ ├── environment_variables_in_helm_charts.md
│ │ ├── freebsd.md
│ │ ├── kubernetes-agent.md
│ │ ├── kubernetes.md
│ │ ├── kubernetes_helm_chart_configuration.md
│ │ ├── kubernetes_troubleshooting.md
│ │ ├── linux-manually.md
│ │ ├── linux-repository.md
│ │ ├── operator.md
│ │ ├── osx.md
│ │ ├── requirements.md
│ │ ├── step-runner.md
│ │ ├── support-policy.md
│ │ ├── windows.md
│ │ └── z-os.md
│ ├── monitoring/
│ │ └── _index.md
│ ├── register/
│ │ └── _index.md
│ ├── runner_autoscale/
│ │ ├── _index.md
│ │ └── gitlab-runner-autoscaler.md
│ ├── security/
│ │ └── _index.md
│ └── shells/
│ └── _index.md
├── executors/
│ ├── abstract.go
│ ├── custom/
│ │ ├── api/
│ │ │ ├── config.go
│ │ │ └── const.go
│ │ ├── command/
│ │ │ ├── command.go
│ │ │ ├── command_test.go
│ │ │ ├── errors.go
│ │ │ └── mocks.go
│ │ ├── config.go
│ │ ├── config_test.go
│ │ ├── consts.go
│ │ ├── custom.go
│ │ ├── custom_test.go
│ │ ├── integration_test.go
│ │ ├── terminal.go
│ │ ├── terminal_test.go
│ │ └── testdata/
│ │ └── test_executor/
│ │ ├── .gitignore
│ │ └── main.go
│ ├── default_executor_provider.go
│ ├── docker/
│ │ ├── autoscaler/
│ │ │ ├── autoscaler.go
│ │ │ ├── autoscaler_integration_test.go
│ │ │ ├── autoscaler_integration_unix_test.go
│ │ │ └── autoscaler_integration_windows_test.go
│ │ ├── config_updater.go
│ │ ├── config_updater_test.go
│ │ ├── consts.go
│ │ ├── docker.go
│ │ ├── docker_command.go
│ │ ├── docker_command_integration_test.go
│ │ ├── docker_log_options_integration_test.go
│ │ ├── docker_steps_integration_test.go
│ │ ├── docker_test.go
│ │ ├── internal/
│ │ │ ├── exec/
│ │ │ │ ├── exec.go
│ │ │ │ ├── exec_test.go
│ │ │ │ └── mocks.go
│ │ │ ├── labels/
│ │ │ │ ├── labels.go
│ │ │ │ ├── labels_test.go
│ │ │ │ └── mocks.go
│ │ │ ├── networks/
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_integration_test.go
│ │ │ │ ├── manager_test.go
│ │ │ │ ├── mocks.go
│ │ │ │ └── utils.go
│ │ │ ├── omitwriter/
│ │ │ │ ├── omit_writer.go
│ │ │ │ └── omit_writer_test.go
│ │ │ ├── prebuilt/
│ │ │ │ └── prebuilt.go
│ │ │ ├── pull/
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_test.go
│ │ │ │ └── mocks.go
│ │ │ ├── user/
│ │ │ │ ├── mocks.go
│ │ │ │ ├── user.go
│ │ │ │ └── user_test.go
│ │ │ ├── volumes/
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_integration_test.go
│ │ │ │ ├── manager_integration_unix_test.go
│ │ │ │ ├── manager_integration_windows_test.go
│ │ │ │ ├── manager_test.go
│ │ │ │ ├── manager_windows_test.go
│ │ │ │ ├── mocks.go
│ │ │ │ ├── parser/
│ │ │ │ │ ├── base_parser.go
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── linux_parser.go
│ │ │ │ │ ├── linux_parser_test.go
│ │ │ │ │ ├── mocks.go
│ │ │ │ │ ├── parser.go
│ │ │ │ │ ├── volume.go
│ │ │ │ │ ├── volume_test.go
│ │ │ │ │ ├── windows_parser.go
│ │ │ │ │ ├── windows_parser_test.go
│ │ │ │ │ ├── windows_path.go
│ │ │ │ │ ├── windows_path_test.go
│ │ │ │ │ └── windows_path_windows.go
│ │ │ │ ├── permission/
│ │ │ │ │ ├── linux_set.go
│ │ │ │ │ ├── linux_set_integration_test.go
│ │ │ │ │ ├── linux_set_test.go
│ │ │ │ │ ├── mocks.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ └── windows_set.go
│ │ │ │ ├── utils.go
│ │ │ │ ├── utils_test.go
│ │ │ │ └── utils_windows_test.go
│ │ │ └── wait/
│ │ │ ├── mocks.go
│ │ │ ├── wait.go
│ │ │ └── wait_test.go
│ │ ├── labeler.go
│ │ ├── machine/
│ │ │ ├── collector.go
│ │ │ ├── collector_test.go
│ │ │ ├── consts.go
│ │ │ ├── coordinator.go
│ │ │ ├── coordinator_test.go
│ │ │ ├── data.go
│ │ │ ├── details.go
│ │ │ ├── details_test.go
│ │ │ ├── idle_limit_strategy.go
│ │ │ ├── idle_limit_strategy_test.go
│ │ │ ├── machine.go
│ │ │ ├── machine_test.go
│ │ │ ├── name.go
│ │ │ ├── name_test.go
│ │ │ ├── provider.go
│ │ │ ├── provider_test.go
│ │ │ ├── shutdown.go
│ │ │ ├── shutdown_test.go
│ │ │ └── state.go
│ │ ├── mocks.go
│ │ ├── network.go
│ │ ├── provider.go
│ │ ├── pull.go
│ │ ├── services.go
│ │ ├── services_test.go
│ │ ├── steps.go
│ │ ├── terminal.go
│ │ ├── terminal_integration_test.go
│ │ ├── terminal_test.go
│ │ ├── tty.go
│ │ └── volume.go
│ ├── environment.go
│ ├── executors.go
│ ├── init.go
│ ├── instance/
│ │ ├── instance.go
│ │ └── instance_integration_test.go
│ ├── internal/
│ │ ├── autoscaler/
│ │ │ ├── acquisition.go
│ │ │ ├── acquisition_test.go
│ │ │ ├── executor.go
│ │ │ ├── executor_test.go
│ │ │ ├── logger/
│ │ │ │ ├── logger.go
│ │ │ │ └── logger_test.go
│ │ │ ├── nesting_init.go
│ │ │ ├── nesting_init_test.go
│ │ │ ├── provider.go
│ │ │ └── provider_test.go
│ │ └── readywriter/
│ │ ├── readywriter.go
│ │ └── readywriter_test.go
│ ├── kubernetes/
│ │ ├── autoscaler/
│ │ │ ├── metrics.go
│ │ │ ├── pause_pod_manager.go
│ │ │ ├── pause_pod_manager_test.go
│ │ │ ├── policy.go
│ │ │ ├── policy_test.go
│ │ │ ├── provider.go
│ │ │ └── provider_test.go
│ │ ├── container_entrypoint_forwarder.go
│ │ ├── container_entrypoint_forwarder_test.go
│ │ ├── exec.go
│ │ ├── exec_test.go
│ │ ├── feature.go
│ │ ├── feature_test.go
│ │ ├── helpers_kubernetes_test.go
│ │ ├── host_aliases.go
│ │ ├── host_aliases_test.go
│ │ ├── internal/
│ │ │ ├── pull/
│ │ │ │ ├── errors.go
│ │ │ │ ├── manager.go
│ │ │ │ ├── manager_test.go
│ │ │ │ └── mocks.go
│ │ │ └── watchers/
│ │ │ ├── informer_factory.go
│ │ │ ├── mocks.go
│ │ │ ├── pod.go
│ │ │ ├── pod_integration_test.go
│ │ │ └── pod_test.go
│ │ ├── kubernetes.go
│ │ ├── kubernetes_integration_test.go
│ │ ├── kubernetes_test.go
│ │ ├── log_processor.go
│ │ ├── log_processor_test.go
│ │ ├── mocks.go
│ │ ├── overwrites.go
│ │ ├── overwrites_test.go
│ │ ├── provider.go
│ │ ├── service_proxy.go
│ │ ├── service_proxy_test.go
│ │ ├── terminal.go
│ │ ├── util.go
│ │ └── util_test.go
│ ├── mocks.go
│ ├── parallels/
│ │ ├── parallels.go
│ │ └── parallels_integration_test.go
│ ├── shell/
│ │ ├── shell.go
│ │ ├── shell_integration_test.go
│ │ ├── shell_terminal.go
│ │ └── shell_test.go
│ ├── ssh/
│ │ ├── ssh.go
│ │ └── ssh_test.go
│ ├── virtualbox/
│ │ ├── virtualbox.go
│ │ └── virtualbox_integration_test.go
│ └── vm/
│ ├── vm.go
│ └── vm_test.go
├── functions/
│ ├── concrete/
│ │ ├── builder/
│ │ │ ├── builder.go
│ │ │ ├── builder_test.go
│ │ │ ├── options.go
│ │ │ └── variables/
│ │ │ ├── mocks.go
│ │ │ ├── variables.go
│ │ │ └── variables_test.go
│ │ ├── concrete.go
│ │ └── run/
│ │ ├── cacheprovider/
│ │ │ └── descriptor.go
│ │ ├── env/
│ │ │ ├── env.go
│ │ │ └── env_test.go
│ │ ├── runner.go
│ │ ├── runner_test.go
│ │ └── stages/
│ │ ├── artifact_download.go
│ │ ├── artifact_upload.go
│ │ ├── cache_archive.go
│ │ ├── cache_extract.go
│ │ ├── cleanup.go
│ │ ├── get_sources.go
│ │ ├── get_sources_git_integration_test.go
│ │ ├── get_sources_test.go
│ │ ├── internal/
│ │ │ └── scriptwriter/
│ │ │ ├── scriptwriter.go
│ │ │ └── scriptwriter_test.go
│ │ ├── step.go
│ │ └── step_test.go
│ └── script_legacy/
│ ├── internal/
│ │ ├── command_formatter.go
│ │ ├── command_formatter_test.go
│ │ ├── command_processor.go
│ │ ├── command_processor_test.go
│ │ ├── escape.go
│ │ ├── escape_test.go
│ │ ├── executor.go
│ │ ├── executor_test.go
│ │ ├── script_generator.go
│ │ ├── script_generator_test.go
│ │ ├── script_header.go
│ │ ├── script_header_test.go
│ │ ├── shell.go
│ │ ├── shell_test.go
│ │ ├── trace_section.go
│ │ └── trace_section_test.go
│ ├── script_legacy.go
│ └── script_legacy_test.go
├── go.mod
├── go.sum
├── helpers/
│ ├── ansi_colors.go
│ ├── archives/
│ │ ├── gzip_create.go
│ │ ├── gzip_create_test.go
│ │ ├── os_unix.go
│ │ ├── os_windows.go
│ │ ├── path_check_helper.go
│ │ ├── path_check_helper_test.go
│ │ ├── path_error_tracker.go
│ │ ├── path_error_tracker_test.go
│ │ ├── zip_create.go
│ │ ├── zip_create_test.go
│ │ ├── zip_create_unix_test.go
│ │ ├── zip_create_windows_test.go
│ │ ├── zip_extra.go
│ │ ├── zip_extra_test.go
│ │ ├── zip_extra_unix.go
│ │ ├── zip_extra_windows.go
│ │ ├── zip_extract.go
│ │ └── zip_extract_test.go
│ ├── aws/
│ │ └── service/
│ │ ├── aws_service.go
│ │ ├── aws_service_test.go
│ │ └── mocks.go
│ ├── azure_key_vault/
│ │ └── service/
│ │ ├── azure_key_vault.go
│ │ └── mocks.go
│ ├── build_section.go
│ ├── build_section_test.go
│ ├── certificate/
│ │ ├── certificate.go
│ │ ├── mocks.go
│ │ ├── x509.go
│ │ └── x509_test.go
│ ├── cli/
│ │ ├── cpuprofile.go
│ │ ├── fix_home.go
│ │ ├── init_cli.go
│ │ ├── init_cli_windows.go
│ │ ├── runtime_platform.go
│ │ ├── runtime_platform_test.go
│ │ └── warn_on_bool.go
│ ├── container/
│ │ ├── helperimage/
│ │ │ ├── info.go
│ │ │ ├── info_test.go
│ │ │ ├── linux_info.go
│ │ │ ├── linux_info_test.go
│ │ │ ├── mocks.go
│ │ │ ├── windows_info.go
│ │ │ └── windows_info_test.go
│ │ ├── services/
│ │ │ ├── services.go
│ │ │ ├── services_test.go
│ │ │ └── test/
│ │ │ └── test.go
│ │ └── windows/
│ │ ├── version.go
│ │ └── version_test.go
│ ├── converter.go
│ ├── converter_test.go
│ ├── dns/
│ │ ├── test/
│ │ │ └── test.go
│ │ ├── utils.go
│ │ └── utils_test.go
│ ├── docker/
│ │ ├── auth/
│ │ │ ├── auth.go
│ │ │ ├── auth_test.go
│ │ │ ├── mocks.go
│ │ │ └── testdata/
│ │ │ ├── docker-credential-bin.sh
│ │ │ └── docker-credential-windows.cmd
│ │ ├── client.go
│ │ ├── credentials.go
│ │ ├── errors/
│ │ │ └── errors.go
│ │ ├── machine.go
│ │ ├── machine_command.go
│ │ ├── machine_command_test.go
│ │ ├── mocks.go
│ │ ├── official_docker_client.go
│ │ ├── official_docker_client_test.go
│ │ ├── options.go
│ │ └── test/
│ │ └── error.go
│ ├── fatal_panic.go
│ ├── featureflags/
│ │ ├── flags.go
│ │ └── flags_test.go
│ ├── gcp_secret_manager/
│ │ └── service/
│ │ ├── gcp_secret_manager.go
│ │ └── gcp_secret_manager_test.go
│ ├── gitlab_secrets_manager/
│ │ └── service/
│ │ ├── gitlab_secrets_manager.go
│ │ └── gitlab_secrets_manager_test.go
│ ├── homedir/
│ │ ├── homedir.go
│ │ └── homedir_test.go
│ ├── integration_tests.go
│ ├── limitwriter/
│ │ ├── limit_writer.go
│ │ └── limit_writer_test.go
│ ├── mocks.go
│ ├── observability/
│ │ ├── multi_exporter.go
│ │ └── multi_exporter_test.go
│ ├── os/
│ │ ├── other.go
│ │ └── windows.go
│ ├── parallels/
│ │ └── control.go
│ ├── path/
│ │ ├── unix_path.go
│ │ ├── unix_path_test.go
│ │ ├── windows_path.go
│ │ └── windows_path_test.go
│ ├── path.go
│ ├── path_test.go
│ ├── process/
│ │ ├── commander.go
│ │ ├── commander_unix_test.go
│ │ ├── ensure_subprocess_termination_integration_test.go
│ │ ├── group_unix_test.go
│ │ ├── group_windows_test.go
│ │ ├── helpers_killer_test.go
│ │ ├── job_unix.go
│ │ ├── job_windows.go
│ │ ├── killer.go
│ │ ├── killer_integration_test.go
│ │ ├── killer_test.go
│ │ ├── killer_unix.go
│ │ ├── killer_unix_integration_test.go
│ │ ├── killer_unix_test.go
│ │ ├── killer_windows.go
│ │ ├── killer_windows_integration_test.go
│ │ ├── logger.go
│ │ ├── mocks.go
│ │ └── testdata/
│ │ ├── ensure_subprocess_termination/
│ │ │ └── main.go
│ │ └── sleep/
│ │ └── main.go
│ ├── prometheus/
│ │ ├── failures_collector.go
│ │ ├── failures_collector_test.go
│ │ ├── log_hook.go
│ │ └── log_hook_test.go
│ ├── pull_policies/
│ │ ├── pull_policies.go
│ │ └── pull_policies_test.go
│ ├── random_uuid.go
│ ├── retry/
│ │ ├── mocks.go
│ │ ├── retry.go
│ │ └── retry_test.go
│ ├── runner_wrapper/
│ │ ├── api/
│ │ │ ├── 000_proto_generate.go
│ │ │ ├── client/
│ │ │ │ ├── backoff.go
│ │ │ │ ├── client.go
│ │ │ │ ├── options.go
│ │ │ │ ├── target.go
│ │ │ │ └── target_test.go
│ │ │ ├── errors.go
│ │ │ ├── go.mod
│ │ │ ├── go.sum
│ │ │ ├── init_graceful_shutdown_request.go
│ │ │ ├── mocks.go
│ │ │ ├── proto/
│ │ │ │ ├── mocks.go
│ │ │ │ ├── wrapper.pb.go
│ │ │ │ ├── wrapper.proto
│ │ │ │ └── wrapper_grpc.pb.go
│ │ │ ├── server/
│ │ │ │ ├── mocks.go
│ │ │ │ ├── server.go
│ │ │ │ └── server_test.go
│ │ │ ├── shutdown_callback.go
│ │ │ ├── shutdown_callback_test.go
│ │ │ └── status.go
│ │ ├── commander.go
│ │ ├── commander_test.go
│ │ ├── commander_unix.go
│ │ ├── commander_windows.go
│ │ ├── mocks.go
│ │ ├── testdata/
│ │ │ └── commander-binary/
│ │ │ └── main.go
│ │ ├── wrapper.go
│ │ ├── wrapper_test.go
│ │ ├── wrapper_unix.go
│ │ └── wrapper_windows.go
│ ├── secrets/
│ │ ├── errors.go
│ │ ├── errors_test.go
│ │ └── resolvers/
│ │ ├── aws/
│ │ │ ├── aws_secrets_manager_resolver.go
│ │ │ ├── aws_secrets_manager_resolver_integration_test.go
│ │ │ ├── aws_secrets_manager_resolver_test.go
│ │ │ └── mocks.go
│ │ ├── azure_key_vault/
│ │ │ ├── azure_key_vault_resolver.go
│ │ │ └── azure_key_vault_resolver_test.go
│ │ ├── gcp_secret_manager/
│ │ │ ├── mocks.go
│ │ │ ├── resolver.go
│ │ │ ├── resolver_integration_test.go
│ │ │ └── resolver_test.go
│ │ ├── gitlab_secrets_manager/
│ │ │ ├── resolver.go
│ │ │ └── resolver_test.go
│ │ └── vault/
│ │ ├── resolver.go
│ │ └── resolver_test.go
│ ├── sentry/
│ │ ├── log_hook.go
│ │ └── log_hook_test.go
│ ├── service/
│ │ ├── logger.go
│ │ ├── logger_test.go
│ │ ├── mocks.go
│ │ ├── scripts.go
│ │ ├── service_factory.go
│ │ ├── simple.go
│ │ └── simple_test.go
│ ├── shell_escape.go
│ ├── shell_escape_test.go
│ ├── shorten_token.go
│ ├── shorten_token_test.go
│ ├── ssh/
│ │ ├── consts.go
│ │ ├── ssh_command.go
│ │ ├── ssh_command_test.go
│ │ ├── stub_ssh_server.go
│ │ ├── stub_ssh_server_unix.go
│ │ └── stub_ssh_server_windows.go
│ ├── test/
│ │ └── helpers.go
│ ├── timeperiod/
│ │ ├── period.go
│ │ └── period_test.go
│ ├── tls/
│ │ ├── ca_chain/
│ │ │ ├── builder.go
│ │ │ ├── builder_test.go
│ │ │ ├── helpers.go
│ │ │ ├── helpers_test.go
│ │ │ ├── mocks.go
│ │ │ ├── resolver.go
│ │ │ ├── resolver_chain.go
│ │ │ ├── resolver_chain_test.go
│ │ │ ├── resolver_url.go
│ │ │ ├── resolver_url_test.go
│ │ │ ├── resolver_verify.go
│ │ │ └── resolver_verify_test.go
│ │ └── consts.go
│ ├── toml_test.go
│ ├── trace/
│ │ ├── buffer.go
│ │ ├── buffer_fd0_test.go
│ │ └── buffer_test.go
│ ├── transfer/
│ │ ├── content_range.go
│ │ ├── content_range_test.go
│ │ ├── parallel_download.go
│ │ └── parallel_download_test.go
│ ├── url/
│ │ ├── clean_url.go
│ │ ├── clean_url_test.go
│ │ ├── gitauth.go
│ │ └── gitauth_test.go
│ ├── usage_log/
│ │ ├── logrotate/
│ │ │ ├── options.go
│ │ │ ├── writer.go
│ │ │ └── writer_test.go
│ │ ├── mocks.go
│ │ ├── options.go
│ │ ├── record.go
│ │ ├── storage.go
│ │ └── storage_test.go
│ ├── vault/
│ │ ├── auth.go
│ │ ├── auth_methods/
│ │ │ ├── data.go
│ │ │ ├── data_test.go
│ │ │ ├── jwt/
│ │ │ │ ├── auth.go
│ │ │ │ └── auth_test.go
│ │ │ ├── registry.go
│ │ │ └── registry_test.go
│ │ ├── client.go
│ │ ├── client_test.go
│ │ ├── internal/
│ │ │ └── registry/
│ │ │ ├── mocks.go
│ │ │ ├── registry.go
│ │ │ └── registry_test.go
│ │ ├── mocks.go
│ │ ├── result.go
│ │ ├── result_test.go
│ │ ├── secret_engine.go
│ │ ├── secret_engines/
│ │ │ ├── generic/
│ │ │ │ ├── engine.go
│ │ │ │ └── engine_test.go
│ │ │ ├── kv_v2/
│ │ │ │ ├── engine.go
│ │ │ │ └── engine_test.go
│ │ │ ├── operations.go
│ │ │ ├── operations_test.go
│ │ │ ├── registry.go
│ │ │ └── registry_test.go
│ │ ├── service/
│ │ │ ├── mocks.go
│ │ │ ├── vault.go
│ │ │ └── vault_test.go
│ │ ├── utils.go
│ │ └── utils_test.go
│ ├── virtualbox/
│ │ ├── control.go
│ │ ├── control_test.go
│ │ └── control_windows.go
│ └── warning_panic.go
├── log/
│ ├── configuration.go
│ ├── configuration_test.go
│ ├── dump_unix.go
│ ├── dump_unix_test.go
│ ├── dump_windows.go
│ ├── mocks.go
│ ├── runner_formatter.go
│ ├── runner_formatter_test.go
│ ├── system_logger.go
│ ├── system_logger_test.go
│ └── test/
│ ├── hook.go
│ └── hook_test.go
├── magefiles/
│ ├── build/
│ │ ├── blueprint.go
│ │ ├── checker.go
│ │ ├── components.go
│ │ ├── exporter.go
│ │ ├── mocks.go
│ │ └── variables.go
│ ├── ci/
│ │ └── variables.go
│ ├── docker/
│ │ └── buildx.go
│ ├── docs/
│ │ └── writing_mage_targets.md
│ ├── docutils/
│ │ ├── section_replacer.go
│ │ ├── section_replacer_test.go
│ │ └── testdata/
│ │ ├── source.md
│ │ └── source_rewritten.md
│ ├── env/
│ │ ├── mocks.go
│ │ └── var.go
│ ├── hosted_runners/
│ │ ├── bridge.go
│ │ ├── bridge_test.go
│ │ ├── testdata/
│ │ │ ├── table.md
│ │ │ └── table_rewritten.md
│ │ └── wiki_client.go
│ ├── hosted_runners.go
│ ├── k8s.go
│ ├── kubernetes/
│ │ ├── docs/
│ │ │ ├── analyzer.go
│ │ │ ├── analyzer_test.go
│ │ │ ├── generate_permissions.go
│ │ │ ├── mocks.go
│ │ │ ├── role.yaml.tpl
│ │ │ └── testdata/
│ │ │ ├── kubernetes_analyzer_api_declaration.go
│ │ │ ├── kubernetes_analyzer_api_declaration_reassigned.go
│ │ │ ├── kubernetes_analyzer_api_fn_arg.go
│ │ │ ├── kubernetes_analyzer_api_nonpointer_call.go
│ │ │ ├── kubernetes_analyzer_api_pointer_call.go
│ │ │ └── kubernetes_analyzer_api_unnamed_field.go
│ │ ├── docs.go
│ │ ├── provision/
│ │ │ ├── manifests/
│ │ │ │ ├── rolebinding.yaml.tpl
│ │ │ │ └── serviceaccount.yaml.tpl
│ │ │ └── provisioner.go
│ │ └── provisioner.go
│ ├── magefile.go
│ ├── mageutils/
│ │ └── mageutils.go
│ ├── package.go
│ ├── package_deb.go
│ ├── package_rpm.go
│ ├── packages/
│ │ ├── blueprint.go
│ │ ├── create.go
│ │ ├── docs.go
│ │ ├── mocks.go
│ │ ├── package.go
│ │ ├── verify.go
│ │ └── verify_test.go
│ ├── pulp/
│ │ ├── mocks.go
│ │ ├── push.go
│ │ ├── push_test.go
│ │ └── releases.go
│ ├── pulp.go
│ └── resources.go
├── main.go
├── main_test.go
├── network/
│ ├── api_requests_collector.go
│ ├── api_requests_collector_test.go
│ ├── client.go
│ ├── client_test.go
│ ├── gitlab.go
│ ├── gitlab_test.go
│ ├── mocks.go
│ ├── patch_response.go
│ ├── remote_job_state_response.go
│ ├── remote_job_state_response_test.go
│ ├── requester.go
│ ├── retry_requester.go
│ ├── retry_requester_test.go
│ ├── trace.go
│ └── trace_test.go
├── packaging/
│ ├── root/
│ │ └── usr/
│ │ └── share/
│ │ └── gitlab-runner/
│ │ ├── clear-docker-cache
│ │ ├── post-install
│ │ └── pre-remove
│ └── scripts/
│ ├── postinst.deb
│ ├── postinst.rpm
│ ├── prerm.deb
│ └── prerm.rpm
├── referees/
│ ├── metrics.go
│ ├── metrics_test.go
│ ├── mocks.go
│ ├── prometheus_api.go
│ ├── referees.go
│ └── referees_test.go
├── router/
│ ├── client.go
│ ├── client_conn_factory.go
│ ├── client_test.go
│ ├── internal/
│ │ └── wstunnel/
│ │ ├── client.go
│ │ ├── netconn.go
│ │ └── netconn_test.go
│ ├── mocks.go
│ ├── rpc/
│ │ ├── generate.go
│ │ ├── mocks.go
│ │ ├── rpc.pb.go
│ │ ├── rpc.proto
│ │ └── rpc_grpc.pb.go
│ └── token_creds.go
├── scripts/
│ ├── check-test-directives/
│ │ └── main.go
│ ├── common-pkcs11.sh
│ ├── docs-i18n-verify-paths
│ ├── envs/
│ │ ├── README.md
│ │ ├── allowlist_common.env
│ │ ├── allowlist_unix.env
│ │ └── allowlist_windows.env
│ ├── lint-docs
│ ├── lint-i18n-docs
│ ├── local-env
│ ├── pusher/
│ │ ├── go.mod
│ │ ├── go.sum
│ │ ├── helper-images.json
│ │ ├── main.go
│ │ └── runner-images.json
│ ├── security-harness
│ ├── sign-macos-binaries
│ ├── sign-windows-binaries
│ ├── update-feature-flags-docs/
│ │ └── main.go
│ └── vagrant/
│ └── provision/
│ ├── base.ps1
│ ├── enable_developer_mode.ps1
│ ├── enable_sshd.ps1
│ ├── install_PSWindowsUpdate.ps1
│ └── windows_update.ps1
├── session/
│ ├── proxy/
│ │ ├── mocks.go
│ │ ├── proxy.go
│ │ └── proxy_test.go
│ ├── server.go
│ ├── server_test.go
│ ├── session.go
│ ├── session_test.go
│ └── terminal/
│ ├── mocks.go
│ └── terminal.go
├── shells/
│ ├── abstract.go
│ ├── abstract_test.go
│ ├── bash.go
│ ├── bash_test.go
│ ├── consts.go
│ ├── git_credentials_helper_integration_test.go
│ ├── mocks.go
│ ├── powershell.go
│ ├── powershell_integration_test.go
│ ├── powershell_test.go
│ ├── proxy_exec.go
│ ├── shell_writer.go
│ ├── shell_writer_integration_test.go
│ ├── shell_writer_test.go
│ ├── shellstest/
│ │ └── utils.go
│ ├── trap_command_exit_status.go
│ └── trap_command_exit_status_test.go
├── steps/
│ ├── execute.go
│ ├── execute_test.go
│ ├── mocks.go
│ ├── steps.go
│ ├── steps_test.go
│ └── stepstest/
│ └── server.go
└── tests/
├── dockerfiles/
│ ├── README.md
│ ├── alpine-entrypoint/
│ │ ├── Dockerfile
│ │ ├── Dockerfile.pre-post-trap
│ │ ├── Dockerfile.stderr
│ │ ├── entrypoint-stderr.sh
│ │ ├── entrypoint.pre-post-trap.sh
│ │ └── entrypoint.sh
│ ├── alpine-id-overflow/
│ │ └── Dockerfile
│ ├── alpine-no-root/
│ │ └── Dockerfile
│ ├── counter-service/
│ │ └── Dockerfile
│ ├── docker-bake.hcl
│ ├── gitlab-runner-helper-entrypoint/
│ │ ├── dockerfile
│ │ ├── entrypoint.sh
│ │ └── scripts/
│ │ └── gitlab-runner-build
│ └── powershell-entrypoint/
│ ├── Dockerfile.pre-post-trap
│ └── entrypoint.pre-post-trap.ps1
├── test_installation.sh
├── test_script.sh
└── ubuntu/
├── Makefile
└── Vagrantfile
Showing preview only (1,044K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (10688 symbols across 823 files)
FILE: apps/gitlab-runner-helper/main.go
function init (line 17) | func init() {
function main (line 21) | func main() {
function newCommands (line 55) | func newCommands() []cli.Command {
FILE: cache/adapter.go
type PresignedURL (line 16) | type PresignedURL struct
type GoCloudURL (line 21) | type GoCloudURL struct
type Adapter (line 27) | type Adapter interface
type Factory (line 35) | type Factory
type FactoriesMap (line 37) | type FactoriesMap struct
method Register (line 42) | func (m *FactoriesMap) Register(typeName string, factory Factory) error {
method Find (line 60) | func (m *FactoriesMap) Find(typeName string) (Factory, error) {
function Factories (line 74) | func Factories() *FactoriesMap {
function RegisterCollector (line 85) | func RegisterCollector(c prometheus.Collector) {
function Collectors (line 92) | func Collectors() []prometheus.Collector {
function getCreateAdapter (line 98) | func getCreateAdapter(cacheConfig *cacheconfig.Config, timeout time.Dura...
FILE: cache/adapter_test.go
type factorizeTestCase (line 16) | type factorizeTestCase struct
function prepareMockedFactoriesMap (line 23) | func prepareMockedFactoriesMap() func() {
function makeTestFactory (line 32) | func makeTestFactory(test factorizeTestCase) Factory {
function TestCreateAdapter (line 42) | func TestCreateAdapter(t *testing.T) {
function TestDoubledRegistration (line 101) | func TestDoubledRegistration(t *testing.T) {
FILE: cache/azure/adapter.go
type signedURLGenerator (line 17) | type signedURLGenerator
type blobTokenGenerator (line 18) | type blobTokenGenerator
type azureAdapter (line 20) | type azureAdapter struct
method GetDownloadURL (line 31) | func (a *azureAdapter) GetDownloadURL(ctx context.Context) cache.Presi...
method GetHeadURL (line 36) | func (a *azureAdapter) GetHeadURL(ctx context.Context) cache.Presigned...
method GetUploadURL (line 43) | func (a *azureAdapter) GetUploadURL(ctx context.Context) cache.Presign...
method WithMetadata (line 49) | func (a *azureAdapter) WithMetadata(metadata map[string]string) {}
method GetGoCloudURL (line 51) | func (a *azureAdapter) GetGoCloudURL(ctx context.Context, upload bool)...
method getEnv (line 81) | func (a *azureAdapter) getEnv(ctx context.Context, upload bool) (map[s...
method generateSASToken (line 97) | func (a *azureAdapter) generateSASToken(ctx context.Context, upload bo...
method getSigner (line 122) | func (a *azureAdapter) getSigner() sasSigner {
function New (line 138) | func New(config *cacheconfig.Config, timeout time.Duration, objectName s...
function init (line 161) | func init() {
FILE: cache/azure/adapter_test.go
function defaultAzureCache (line 30) | func defaultAzureCache() *cacheconfig.Config {
type adapterOperationInvalidConfigTestCase (line 44) | type adapterOperationInvalidConfigTestCase struct
function prepareMockedCredentialsResolverInitializer (line 57) | func prepareMockedCredentialsResolverInitializer(tc adapterOperationInva...
function prepareMockedCredentialsResolverForInvalidConfig (line 72) | func prepareMockedCredentialsResolverForInvalidConfig(t *testing.T, adap...
function testGoCloudURLWithInvalidConfig (line 94) | func testGoCloudURLWithInvalidConfig(
function testUploadEnvWithInvalidConfig (line 121) | func testUploadEnvWithInvalidConfig(
function TestAdapterOperation_InvalidConfig (line 139) | func TestAdapterOperation_InvalidConfig(t *testing.T) {
type adapterOperationTestCase (line 220) | type adapterOperationTestCase struct
function prepareMockedSignedURLGenerator (line 227) | func prepareMockedSignedURLGenerator(
function TestAdapterOperation (line 246) | func TestAdapterOperation(t *testing.T) {
FILE: cache/azure/azure.go
constant DefaultAzureServer (line 19) | DefaultAzureServer = "blob.core.windows.net"
type sasSigner (line 21) | type sasSigner interface
type accountKeySigner (line 27) | type accountKeySigner struct
method ServiceURL (line 197) | func (s *accountKeySigner) ServiceURL() string {
method Prepare (line 201) | func (s *accountKeySigner) Prepare(ctx context.Context, o *signedURLOp...
method Sign (line 205) | func (s *accountKeySigner) Sign(values sas.BlobSignatureValues) (sas.Q...
type userDelegationKeySigner (line 32) | type userDelegationKeySigner struct
method ServiceURL (line 215) | func (s *userDelegationKeySigner) ServiceURL() string {
method Prepare (line 219) | func (s *userDelegationKeySigner) Prepare(ctx context.Context, o *sign...
method Sign (line 230) | func (s *userDelegationKeySigner) Sign(values sas.BlobSignatureValues)...
method retrieveUserCredentials (line 240) | func (s *userDelegationKeySigner) retrieveUserCredentials(ctx context....
type userDelegationKeyOption (line 40) | type userDelegationKeyOption
type signedURLOptions (line 42) | type signedURLOptions struct
function withBlobServiceEndpoint (line 51) | func withBlobServiceEndpoint(endpoint string) userDelegationKeyOption {
function withBlobServiceTransport (line 59) | func withBlobServiceTransport(transport *http.Transport) userDelegationK...
function withDefaultCredentialTransporter (line 65) | func withDefaultCredentialTransporter(transporter policy.Transporter) us...
type transportAdapter (line 72) | type transportAdapter struct
method Do (line 76) | func (t *transportAdapter) Do(req *http.Request) (*http.Response, erro...
function presignedURL (line 80) | func presignedURL(ctx context.Context, name string, o *signedURLOptions)...
function getSASToken (line 103) | func getSASToken(ctx context.Context, name string, o *signedURLOptions) ...
function getBlobServiceURL (line 112) | func getBlobServiceURL(config *cacheconfig.CacheAzureConfig) string {
function newAccountKeySigner (line 120) | func newAccountKeySigner(config *cacheconfig.CacheAzureConfig) (sasSigne...
function newUserDelegationKeySigner (line 141) | func newUserDelegationKeySigner(config *cacheconfig.CacheAzureConfig, op...
function getSASQueryParameters (line 168) | func getSASQueryParameters(ctx context.Context, name string, o *signedUR...
function generateBlobSignatureValues (line 179) | func generateBlobSignatureValues(name string, o *signedURLOptions) sas.B...
FILE: cache/azure/azure_test.go
type azureSigningTest (line 22) | type azureSigningTest struct
constant mockClientInfo (line 35) | mockClientInfo = "my-client"
constant mockIDToken (line 36) | mockIDToken = "my-idt"
type mockSTS (line 39) | type mockSTS struct
method Do (line 43) | func (m *mockSTS) Do(req *http.Request) (*http.Response, error) {
function TestAccountKeySigning (line 66) | func TestAccountKeySigning(t *testing.T) {
function TestUserDelegationSigning (line 158) | func TestUserDelegationSigning(t *testing.T) {
FILE: cache/azure/credentials_resolver.go
type credentialsResolver (line 10) | type credentialsResolver interface
type defaultCredentialsResolver (line 15) | type defaultCredentialsResolver struct
method Resolve (line 19) | func (cr *defaultCredentialsResolver) Resolve() error {
method Credentials (line 23) | func (cr *defaultCredentialsResolver) Credentials() *cacheconfig.Cache...
method Signer (line 27) | func (cr *defaultCredentialsResolver) Signer() (sasSigner, error) {
method readCredentialsFromConfig (line 41) | func (cr *defaultCredentialsResolver) readCredentialsFromConfig() error {
function newDefaultCredentialsResolver (line 49) | func newDefaultCredentialsResolver(config *cacheconfig.CacheAzureConfig)...
FILE: cache/azure/credentials_resolver_test.go
type credentialsResolverTestCase (line 13) | type credentialsResolverTestCase struct
type signerTestCase (line 20) | type signerTestCase struct
function getCredentialsConfig (line 26) | func getCredentialsConfig(accountName string, accountKey string) *cachec...
function getExpectedCredentials (line 36) | func getExpectedCredentials(accountName string, accountKey string) *cach...
function TestDefaultCredentialsResolver (line 43) | func TestDefaultCredentialsResolver(t *testing.T) {
function TestSigner (line 84) | func TestSigner(t *testing.T) {
FILE: cache/azure/mocks.go
function newMockSasSigner (line 16) | func newMockSasSigner(t interface {
type mockSasSigner (line 29) | type mockSasSigner struct
method EXPECT (line 37) | func (_m *mockSasSigner) EXPECT() *mockSasSigner_Expecter {
method Prepare (line 42) | func (_mock *mockSasSigner) Prepare(ctx context.Context, o *signedURLO...
method ServiceURL (line 99) | func (_mock *mockSasSigner) ServiceURL() string {
method Sign (line 143) | func (_mock *mockSasSigner) Sign(values sas.BlobSignatureValues) (sas....
type mockSasSigner_Expecter (line 33) | type mockSasSigner_Expecter struct
method Prepare (line 66) | func (_e *mockSasSigner_Expecter) Prepare(ctx interface{}, o interface...
method ServiceURL (line 121) | func (_e *mockSasSigner_Expecter) ServiceURL() *mockSasSigner_ServiceU...
method Sign (line 175) | func (_e *mockSasSigner_Expecter) Sign(values interface{}) *mockSasSig...
type mockSasSigner_Prepare_Call (line 59) | type mockSasSigner_Prepare_Call struct
method Run (line 70) | func (_c *mockSasSigner_Prepare_Call) Run(run func(ctx context.Context...
method Return (line 88) | func (_c *mockSasSigner_Prepare_Call) Return(err error) *mockSasSigner...
method RunAndReturn (line 93) | func (_c *mockSasSigner_Prepare_Call) RunAndReturn(run func(ctx contex...
type mockSasSigner_ServiceURL_Call (line 116) | type mockSasSigner_ServiceURL_Call struct
method Run (line 125) | func (_c *mockSasSigner_ServiceURL_Call) Run(run func()) *mockSasSigne...
method Return (line 132) | func (_c *mockSasSigner_ServiceURL_Call) Return(s string) *mockSasSign...
method RunAndReturn (line 137) | func (_c *mockSasSigner_ServiceURL_Call) RunAndReturn(run func() strin...
type mockSasSigner_Sign_Call (line 169) | type mockSasSigner_Sign_Call struct
method Run (line 179) | func (_c *mockSasSigner_Sign_Call) Run(run func(values sas.BlobSignatu...
method Return (line 192) | func (_c *mockSasSigner_Sign_Call) Return(queryParameters sas.QueryPar...
method RunAndReturn (line 197) | func (_c *mockSasSigner_Sign_Call) RunAndReturn(run func(values sas.Bl...
function newMockCredentialsResolver (line 204) | func newMockCredentialsResolver(t interface {
type mockCredentialsResolver (line 217) | type mockCredentialsResolver struct
method EXPECT (line 225) | func (_m *mockCredentialsResolver) EXPECT() *mockCredentialsResolver_E...
method Resolve (line 230) | func (_mock *mockCredentialsResolver) Resolve() error {
method Signer (line 274) | func (_mock *mockCredentialsResolver) Signer() (sasSigner, error) {
type mockCredentialsResolver_Expecter (line 221) | type mockCredentialsResolver_Expecter struct
method Resolve (line 252) | func (_e *mockCredentialsResolver_Expecter) Resolve() *mockCredentials...
method Signer (line 307) | func (_e *mockCredentialsResolver_Expecter) Signer() *mockCredentialsR...
type mockCredentialsResolver_Resolve_Call (line 247) | type mockCredentialsResolver_Resolve_Call struct
method Run (line 256) | func (_c *mockCredentialsResolver_Resolve_Call) Run(run func()) *mockC...
method Return (line 263) | func (_c *mockCredentialsResolver_Resolve_Call) Return(err error) *moc...
method RunAndReturn (line 268) | func (_c *mockCredentialsResolver_Resolve_Call) RunAndReturn(run func(...
type mockCredentialsResolver_Signer_Call (line 302) | type mockCredentialsResolver_Signer_Call struct
method Run (line 311) | func (_c *mockCredentialsResolver_Signer_Call) Run(run func()) *mockCr...
method Return (line 318) | func (_c *mockCredentialsResolver_Signer_Call) Return(sasSignerMoqPara...
method RunAndReturn (line 323) | func (_c *mockCredentialsResolver_Signer_Call) RunAndReturn(run func()...
FILE: cache/cache.go
type nopAdapter (line 15) | type nopAdapter struct
method GetDownloadURL (line 17) | func (nopAdapter) GetDownloadURL(context.Context) PresignedURL { retur...
method GetHeadURL (line 18) | func (nopAdapter) GetHeadURL(context.Context) PresignedURL { retur...
method WithMetadata (line 19) | func (nopAdapter) WithMetadata(map[string]string) {}
method GetUploadURL (line 20) | func (nopAdapter) GetUploadURL(context.Context) PresignedURL { retur...
method GetGoCloudURL (line 21) | func (nopAdapter) GetGoCloudURL(ctx context.Context, upload bool) (GoC...
function GetAdapter (line 27) | func GetAdapter(config *cacheconfig.Config, timeout time.Duration, short...
FILE: cache/cache_test.go
type cacheOperationTest (line 20) | type cacheOperationTest struct
function prepareFakeCreateAdapter (line 31) | func prepareFakeCreateAdapter(t *testing.T, operationName string, tc cac...
function prepareFakeConfig (line 64) | func prepareFakeConfig(tc cacheOperationTest) *cacheconfig.Config {
function testCacheOperation (line 77) | func testCacheOperation(
function TestCacheOperations (line 106) | func TestCacheOperations(t *testing.T) {
function defaultCacheConfig (line 175) | func defaultCacheConfig() *cacheconfig.Config {
type generateObjectNameTestCase (line 181) | type generateObjectNameTestCase struct
function TestGenerateObjectName (line 191) | func TestGenerateObjectName(t *testing.T) {
FILE: cache/cacheconfig/cacheconfig.go
type Config (line 13) | type Config struct
method GetPath (line 24) | func (c *Config) GetPath() string {
method GetShared (line 28) | func (c *Config) GetShared() bool {
type CacheS3Config (line 32) | type CacheS3Config struct
method AuthType (line 68) | func (c *CacheS3Config) AuthType() S3AuthType {
method EncryptionType (line 87) | func (c *CacheS3Config) EncryptionType() S3EncryptionType {
method GetEndpoint (line 105) | func (c *CacheS3Config) GetEndpoint() string {
method GetEndpointURL (line 130) | func (c *CacheS3Config) GetEndpointURL() *url.URL {
method PathStyleEnabled (line 149) | func (c *CacheS3Config) PathStyleEnabled() bool {
method DualStackEnabled (line 163) | func (c *CacheS3Config) DualStackEnabled() bool {
type S3AuthType (line 52) | type S3AuthType
constant S3AuthTypeAccessKey (line 55) | S3AuthTypeAccessKey S3AuthType = "access-key"
constant S3AuthTypeIAM (line 56) | S3AuthTypeIAM S3AuthType = "iam"
type S3EncryptionType (line 59) | type S3EncryptionType
constant S3EncryptionTypeNone (line 62) | S3EncryptionTypeNone S3EncryptionType = ""
constant S3EncryptionTypeAes256 (line 63) | S3EncryptionTypeAes256 S3EncryptionType = "S3"
constant S3EncryptionTypeKms (line 64) | S3EncryptionTypeKms S3EncryptionType = "KMS"
constant S3EncryptionTypeDsseKms (line 65) | S3EncryptionTypeDsseKms S3EncryptionType = "DSSE-KMS"
type CacheGCSCredentials (line 170) | type CacheGCSCredentials struct
type CacheGCSConfig (line 175) | type CacheGCSConfig struct
type CacheAzureCredentials (line 182) | type CacheAzureCredentials struct
type CacheAzureConfig (line 187) | type CacheAzureConfig struct
FILE: cache/cacheconfig/cacheconfig_test.go
function TestCacheGCSConfig_UniverseDomain (line 16) | func TestCacheGCSConfig_UniverseDomain(t *testing.T) {
function TestCacheS3Config_AuthType (line 64) | func TestCacheS3Config_AuthType(t *testing.T) {
function TestCacheS3Config_DualStack (line 199) | func TestCacheS3Config_DualStack(t *testing.T) {
function TestCacheS3Config_Encryption (line 228) | func TestCacheS3Config_Encryption(t *testing.T) {
function TestCacheS3Config_Endpoint (line 282) | func TestCacheS3Config_Endpoint(t *testing.T) {
FILE: cache/cachekey/cachekey.go
function Sanitize (line 27) | func Sanitize(cacheKey string) (string, error) {
FILE: cache/cachekey/cachekey_test.go
function TestSanitize (line 13) | func TestSanitize(t *testing.T) {
function TestSanitizeInvariants (line 120) | func TestSanitizeInvariants(t *testing.T) {
function TestSanitizeIdempotent (line 149) | func TestSanitizeIdempotent(t *testing.T) {
FILE: cache/credentials_adapter.go
type CredentialsAdapter (line 10) | type CredentialsAdapter interface
function CredentialsFactories (line 16) | func CredentialsFactories() *CredentialsFactoriesMap {
type CredentialsFactory (line 20) | type CredentialsFactory
type CredentialsFactoriesMap (line 22) | type CredentialsFactoriesMap struct
method Register (line 27) | func (m *CredentialsFactoriesMap) Register(typeName string, factory Cr...
method Find (line 45) | func (m *CredentialsFactoriesMap) Find(typeName string) (CredentialsFa...
function CreateCredentialsAdapter (line 57) | func CreateCredentialsAdapter(cacheConfig *cacheconfig.Config) (Credenti...
FILE: cache/credentials_adapter_test.go
type credentialsFactoryTestCase (line 13) | type credentialsFactoryTestCase struct
function prepareMockedCredentialsFactoriesMap (line 20) | func prepareMockedCredentialsFactoriesMap() func() {
function makeTestCredentialsFactory (line 29) | func makeTestCredentialsFactory(test credentialsFactoryTestCase) Credent...
function TestCreateCredentialsAdapter (line 39) | func TestCreateCredentialsAdapter(t *testing.T) {
function TestCredentialsFactoryDoubledRegistration (line 98) | func TestCredentialsFactoryDoubledRegistration(t *testing.T) {
FILE: cache/gcs/adapter.go
type signedURLGenerator (line 18) | type signedURLGenerator
type gcsAdapter (line 20) | type gcsAdapter struct
method GetDownloadURL (line 31) | func (a *gcsAdapter) GetDownloadURL(ctx context.Context) cache.Presign...
method GetHeadURL (line 35) | func (a *gcsAdapter) GetHeadURL(ctx context.Context) cache.PresignedURL {
method GetUploadURL (line 39) | func (a *gcsAdapter) GetUploadURL(ctx context.Context) cache.Presigned...
method GetUploadHeaders (line 46) | func (a *gcsAdapter) GetUploadHeaders() http.Header {
method GetGoCloudURL (line 60) | func (a *gcsAdapter) GetGoCloudURL(_ context.Context, _ bool) (cache.G...
method WithMetadata (line 64) | func (a *gcsAdapter) WithMetadata(metadata map[string]string) {
method presignURL (line 68) | func (a *gcsAdapter) presignURL(ctx context.Context, method string, co...
function New (line 118) | func New(config *cacheconfig.Config, timeout time.Duration, objectName s...
function init (line 141) | func init() {
FILE: cache/gcs/adapter_test.go
function defaultGCSCache (line 59) | func defaultGCSCache() *cacheconfig.Config {
type adapterOperationInvalidConfigTestCase (line 68) | type adapterOperationInvalidConfigTestCase struct
function prepareMockedCredentialsResolverInitializer (line 80) | func prepareMockedCredentialsResolverInitializer(t *testing.T, tc adapte...
function prepareMockedCredentialsResolverForInvalidConfig (line 95) | func prepareMockedCredentialsResolverForInvalidConfig(t *testing.T, adap...
function testAdapterOperationWithInvalidConfig (line 117) | func testAdapterOperationWithInvalidConfig(
function TestAdapterOperation_InvalidConfig (line 137) | func TestAdapterOperation_InvalidConfig(t *testing.T) {
type adapterOperationTestCase (line 204) | type adapterOperationTestCase struct
function mockSignBytesFunc (line 214) | func mockSignBytesFunc(_ context.Context) func([]byte) ([]byte, error) {
function prepareMockedCredentialsResolver (line 220) | func prepareMockedCredentialsResolver(t *testing.T, adapter *gcsAdapter,...
function prepareMockedSignedURLGenerator (line 237) | func prepareMockedSignedURLGenerator(
function testAdapterOperation (line 260) | func testAdapterOperation(
function TestAdapterOperation (line 290) | func TestAdapterOperation(t *testing.T) {
FILE: cache/gcs/credentials_resolver.go
type credentialsResolver (line 17) | type credentialsResolver interface
type IamCredentialsClient (line 23) | type IamCredentialsClient interface
type MetadataClient (line 31) | type MetadataClient interface
constant TypeServiceAccount (line 35) | TypeServiceAccount = "service_account"
type credentialsFile (line 37) | type credentialsFile struct
type defaultCredentialsResolver (line 43) | type defaultCredentialsResolver struct
method Credentials (line 50) | func (cr *defaultCredentialsResolver) Credentials() *cacheconfig.Cache...
method Resolve (line 54) | func (cr *defaultCredentialsResolver) Resolve() error {
method SignBytesFunc (line 65) | func (cr *defaultCredentialsResolver) SignBytesFunc(ctx context.Contex...
method readCredentialsFromFile (line 86) | func (cr *defaultCredentialsResolver) readCredentialsFromFile() error {
method readCredentialsFromConfig (line 110) | func (cr *defaultCredentialsResolver) readCredentialsFromConfig() error {
method readAccessIDFromMetadataServer (line 121) | func (cr *defaultCredentialsResolver) readAccessIDFromMetadataServer()...
method iamCredentialsClient (line 130) | func (cr *defaultCredentialsResolver) iamCredentialsClient(ctx context...
function newDefaultCredentialsResolver (line 142) | func newDefaultCredentialsResolver(config *cacheconfig.CacheGCSConfig) (...
FILE: cache/gcs/credentials_resolver_test.go
type credentialsResolverTestCase (line 22) | type credentialsResolverTestCase struct
function getCredentialsConfig (line 33) | func getCredentialsConfig(accessID string, privateKey string) *cacheconf...
function getCredentialsFileContent (line 42) | func getCredentialsFileContent(fileType string, clientEmail string, priv...
function getExpectedCredentials (line 50) | func getExpectedCredentials(accessID string, privateKey string) *cacheco...
function TestDefaultCredentialsResolver (line 57) | func TestDefaultCredentialsResolver(t *testing.T) {
type signBytesOperationTestCase (line 167) | type signBytesOperationTestCase struct
function TestSignBytesOperation (line 172) | func TestSignBytesOperation(t *testing.T) {
FILE: cache/gcs/mocks.go
function newMockCredentialsResolver (line 18) | func newMockCredentialsResolver(t interface {
type mockCredentialsResolver (line 31) | type mockCredentialsResolver struct
method EXPECT (line 39) | func (_m *mockCredentialsResolver) EXPECT() *mockCredentialsResolver_E...
method Credentials (line 44) | func (_mock *mockCredentialsResolver) Credentials() *cacheconfig.Cache...
method Resolve (line 90) | func (_mock *mockCredentialsResolver) Resolve() error {
method SignBytesFunc (line 134) | func (_mock *mockCredentialsResolver) SignBytesFunc(context1 context.C...
type mockCredentialsResolver_Expecter (line 35) | type mockCredentialsResolver_Expecter struct
method Credentials (line 68) | func (_e *mockCredentialsResolver_Expecter) Credentials() *mockCredent...
method Resolve (line 112) | func (_e *mockCredentialsResolver_Expecter) Resolve() *mockCredentials...
method SignBytesFunc (line 159) | func (_e *mockCredentialsResolver_Expecter) SignBytesFunc(context1 int...
type mockCredentialsResolver_Credentials_Call (line 63) | type mockCredentialsResolver_Credentials_Call struct
method Run (line 72) | func (_c *mockCredentialsResolver_Credentials_Call) Run(run func()) *m...
method Return (line 79) | func (_c *mockCredentialsResolver_Credentials_Call) Return(cacheGCSCre...
method RunAndReturn (line 84) | func (_c *mockCredentialsResolver_Credentials_Call) RunAndReturn(run f...
type mockCredentialsResolver_Resolve_Call (line 107) | type mockCredentialsResolver_Resolve_Call struct
method Run (line 116) | func (_c *mockCredentialsResolver_Resolve_Call) Run(run func()) *mockC...
method Return (line 123) | func (_c *mockCredentialsResolver_Resolve_Call) Return(err error) *moc...
method RunAndReturn (line 128) | func (_c *mockCredentialsResolver_Resolve_Call) RunAndReturn(run func(...
type mockCredentialsResolver_SignBytesFunc_Call (line 153) | type mockCredentialsResolver_SignBytesFunc_Call struct
method Run (line 163) | func (_c *mockCredentialsResolver_SignBytesFunc_Call) Run(run func(con...
method Return (line 176) | func (_c *mockCredentialsResolver_SignBytesFunc_Call) Return(fn func([...
method RunAndReturn (line 181) | func (_c *mockCredentialsResolver_SignBytesFunc_Call) RunAndReturn(run...
function NewMockIamCredentialsClient (line 188) | func NewMockIamCredentialsClient(t interface {
type MockIamCredentialsClient (line 201) | type MockIamCredentialsClient struct
method EXPECT (line 209) | func (_m *MockIamCredentialsClient) EXPECT() *MockIamCredentialsClient...
method SignBlob (line 214) | func (_mock *MockIamCredentialsClient) SignBlob(context1 context.Conte...
type MockIamCredentialsClient_Expecter (line 205) | type MockIamCredentialsClient_Expecter struct
method SignBlob (line 258) | func (_e *MockIamCredentialsClient_Expecter) SignBlob(context1 interfa...
type MockIamCredentialsClient_SignBlob_Call (line 250) | type MockIamCredentialsClient_SignBlob_Call struct
method Run (line 263) | func (_c *MockIamCredentialsClient_SignBlob_Call) Run(run func(context...
method Return (line 290) | func (_c *MockIamCredentialsClient_SignBlob_Call) Return(signBlobRespo...
method RunAndReturn (line 295) | func (_c *MockIamCredentialsClient_SignBlob_Call) RunAndReturn(run fun...
function NewMockMetadataClient (line 302) | func NewMockMetadataClient(t interface {
type MockMetadataClient (line 315) | type MockMetadataClient struct
method EXPECT (line 323) | func (_m *MockMetadataClient) EXPECT() *MockMetadataClient_Expecter {
method Email (line 328) | func (_mock *MockMetadataClient) Email(serviceAccount string) (string,...
type MockMetadataClient_Expecter (line 319) | type MockMetadataClient_Expecter struct
method Email (line 360) | func (_e *MockMetadataClient_Expecter) Email(serviceAccount interface{...
type MockMetadataClient_Email_Call (line 354) | type MockMetadataClient_Email_Call struct
method Run (line 364) | func (_c *MockMetadataClient_Email_Call) Run(run func(serviceAccount s...
method Return (line 377) | func (_c *MockMetadataClient_Email_Call) Return(s string, err error) *...
method RunAndReturn (line 382) | func (_c *MockMetadataClient_Email_Call) RunAndReturn(run func(service...
FILE: cache/gcsv2/adapter.go
type gcsAdapter (line 19) | type gcsAdapter struct
method GetDownloadURL (line 27) | func (a *gcsAdapter) GetDownloadURL(ctx context.Context) cache.Presign...
method GetHeadURL (line 36) | func (a *gcsAdapter) GetHeadURL(ctx context.Context) cache.PresignedURL {
method GetUploadURL (line 45) | func (a *gcsAdapter) GetUploadURL(ctx context.Context) cache.Presigned...
method GetUploadHeaders (line 54) | func (a *gcsAdapter) GetUploadHeaders() http.Header {
method GetGoCloudURL (line 68) | func (a *gcsAdapter) GetGoCloudURL(_ context.Context, _ bool) (cache.G...
method WithMetadata (line 72) | func (a *gcsAdapter) WithMetadata(metadata map[string]string) {
method presignURL (line 76) | func (a *gcsAdapter) presignURL(ctx context.Context, method string, co...
function New (line 134) | func New(config *cacheconfig.Config, timeout time.Duration, objectName s...
function init (line 148) | func init() {
FILE: cache/gcsv2/adapter_test.go
function TestNew (line 46) | func TestNew(t *testing.T) {
function TestAdapter (line 60) | func TestAdapter(t *testing.T) {
FILE: cache/mocks.go
function NewMockAdapter (line 15) | func NewMockAdapter(t interface {
type MockAdapter (line 28) | type MockAdapter struct
method EXPECT (line 36) | func (_m *MockAdapter) EXPECT() *MockAdapter_Expecter {
method GetDownloadURL (line 41) | func (_mock *MockAdapter) GetDownloadURL(context1 context.Context) Pre...
method GetGoCloudURL (line 92) | func (_mock *MockAdapter) GetGoCloudURL(ctx context.Context, upload bo...
method GetHeadURL (line 158) | func (_mock *MockAdapter) GetHeadURL(context1 context.Context) Presign...
method GetUploadURL (line 209) | func (_mock *MockAdapter) GetUploadURL(context1 context.Context) Presi...
method WithMetadata (line 260) | func (_mock *MockAdapter) WithMetadata(stringToString map[string]strin...
type MockAdapter_Expecter (line 32) | type MockAdapter_Expecter struct
method GetDownloadURL (line 64) | func (_e *MockAdapter_Expecter) GetDownloadURL(context1 interface{}) *...
method GetGoCloudURL (line 125) | func (_e *MockAdapter_Expecter) GetGoCloudURL(ctx interface{}, upload ...
method GetHeadURL (line 181) | func (_e *MockAdapter_Expecter) GetHeadURL(context1 interface{}) *Mock...
method GetUploadURL (line 232) | func (_e *MockAdapter_Expecter) GetUploadURL(context1 interface{}) *Mo...
method WithMetadata (line 272) | func (_e *MockAdapter_Expecter) WithMetadata(stringToString interface{...
type MockAdapter_GetDownloadURL_Call (line 58) | type MockAdapter_GetDownloadURL_Call struct
method Run (line 68) | func (_c *MockAdapter_GetDownloadURL_Call) Run(run func(context1 conte...
method Return (line 81) | func (_c *MockAdapter_GetDownloadURL_Call) Return(presignedURL Presign...
method RunAndReturn (line 86) | func (_c *MockAdapter_GetDownloadURL_Call) RunAndReturn(run func(conte...
type MockAdapter_GetGoCloudURL_Call (line 118) | type MockAdapter_GetGoCloudURL_Call struct
method Run (line 129) | func (_c *MockAdapter_GetGoCloudURL_Call) Run(run func(ctx context.Con...
method Return (line 147) | func (_c *MockAdapter_GetGoCloudURL_Call) Return(goCloudURL GoCloudURL...
method RunAndReturn (line 152) | func (_c *MockAdapter_GetGoCloudURL_Call) RunAndReturn(run func(ctx co...
type MockAdapter_GetHeadURL_Call (line 175) | type MockAdapter_GetHeadURL_Call struct
method Run (line 185) | func (_c *MockAdapter_GetHeadURL_Call) Run(run func(context1 context.C...
method Return (line 198) | func (_c *MockAdapter_GetHeadURL_Call) Return(presignedURL PresignedUR...
method RunAndReturn (line 203) | func (_c *MockAdapter_GetHeadURL_Call) RunAndReturn(run func(context1 ...
type MockAdapter_GetUploadURL_Call (line 226) | type MockAdapter_GetUploadURL_Call struct
method Run (line 236) | func (_c *MockAdapter_GetUploadURL_Call) Run(run func(context1 context...
method Return (line 249) | func (_c *MockAdapter_GetUploadURL_Call) Return(presignedURL Presigned...
method RunAndReturn (line 254) | func (_c *MockAdapter_GetUploadURL_Call) RunAndReturn(run func(context...
type MockAdapter_WithMetadata_Call (line 266) | type MockAdapter_WithMetadata_Call struct
method Run (line 276) | func (_c *MockAdapter_WithMetadata_Call) Run(run func(stringToString m...
method Return (line 289) | func (_c *MockAdapter_WithMetadata_Call) Return() *MockAdapter_WithMet...
method RunAndReturn (line 294) | func (_c *MockAdapter_WithMetadata_Call) RunAndReturn(run func(stringT...
function NewMockCredentialsAdapter (line 301) | func NewMockCredentialsAdapter(t interface {
type MockCredentialsAdapter (line 314) | type MockCredentialsAdapter struct
method EXPECT (line 322) | func (_m *MockCredentialsAdapter) EXPECT() *MockCredentialsAdapter_Exp...
method GetCredentials (line 327) | func (_mock *MockCredentialsAdapter) GetCredentials() map[string]string {
type MockCredentialsAdapter_Expecter (line 318) | type MockCredentialsAdapter_Expecter struct
method GetCredentials (line 351) | func (_e *MockCredentialsAdapter_Expecter) GetCredentials() *MockCrede...
type MockCredentialsAdapter_GetCredentials_Call (line 346) | type MockCredentialsAdapter_GetCredentials_Call struct
method Run (line 355) | func (_c *MockCredentialsAdapter_GetCredentials_Call) Run(run func()) ...
method Return (line 362) | func (_c *MockCredentialsAdapter_GetCredentials_Call) Return(stringToS...
method RunAndReturn (line 367) | func (_c *MockCredentialsAdapter_GetCredentials_Call) RunAndReturn(run...
FILE: cache/s3/adapter.go
type s3Adapter (line 17) | type s3Adapter struct
method GetDownloadURL (line 25) | func (a *s3Adapter) GetDownloadURL(ctx context.Context) cache.Presigne...
method GetHeadURL (line 38) | func (a *s3Adapter) GetHeadURL(ctx context.Context) cache.PresignedURL {
method GetUploadURL (line 51) | func (a *s3Adapter) GetUploadURL(ctx context.Context) cache.PresignedU...
method GetUploadHeaders (line 68) | func (a *s3Adapter) GetUploadHeaders() http.Header {
method GetGoCloudURL (line 109) | func (a *s3Adapter) GetGoCloudURL(_ context.Context, _ bool) (cache.Go...
method WithMetadata (line 113) | func (a *s3Adapter) WithMetadata(metadata map[string]string) {
function New (line 117) | func New(config *cacheconfig.Config, timeout time.Duration, objectName s...
function init (line 138) | func init() {
FILE: cache/s3/adapter_test.go
constant bucketName (line 24) | bucketName = "test"
constant objectName (line 25) | objectName = "key"
constant bucketLocation (line 26) | bucketLocation = "location"
function defaultCacheFactory (line 29) | func defaultCacheFactory() *cacheconfig.Config {
function defaultCacheFactoryEncryptionAES (line 41) | func defaultCacheFactoryEncryptionAES() *cacheconfig.Config {
function defaultCacheFactoryEncryptionKMS (line 47) | func defaultCacheFactoryEncryptionKMS() *cacheconfig.Config {
type cacheOperationTest (line 54) | type cacheOperationTest struct
function onFakeMinioURLGenerator (line 64) | func onFakeMinioURLGenerator(t *testing.T, tc cacheOperationTest) {
function testCacheOperation (line 92) | func testCacheOperation(
function TestCacheOperation (line 144) | func TestCacheOperation(t *testing.T) {
function TestCacheOperationEncryptionAES (line 198) | func TestCacheOperationEncryptionAES(t *testing.T) {
function TestCacheOperationEncryptionKMS (line 259) | func TestCacheOperationEncryptionKMS(t *testing.T) {
function TestNoConfiguration (line 321) | func TestNoConfiguration(t *testing.T) {
FILE: cache/s3/bucket_location_tripper.go
type bucketLocationTripper (line 10) | type bucketLocationTripper struct
method RoundTrip (line 20) | func (b *bucketLocationTripper) RoundTrip(req *http.Request) (res *htt...
method CancelRequest (line 33) | func (b *bucketLocationTripper) CancelRequest(req *http.Request) {
FILE: cache/s3/credentials_adapter.go
type s3CredentialsAdapter (line 10) | type s3CredentialsAdapter struct
method GetCredentials (line 14) | func (a *s3CredentialsAdapter) GetCredentials() map[string]string {
function NewS3CredentialsAdapter (line 28) | func NewS3CredentialsAdapter(config *cacheconfig.Config) (cache.Credenti...
function init (line 41) | func init() {
FILE: cache/s3/credentials_adapter_test.go
function TestGetCredentials (line 13) | func TestGetCredentials(t *testing.T) {
FILE: cache/s3/minio.go
constant DefaultAWSS3Server (line 18) | DefaultAWSS3Server = "s3.amazonaws.com"
type minioClient (line 22) | type minioClient interface
FILE: cache/s3/minio_test.go
type minioClientInitializationTest (line 19) | type minioClientInitializationTest struct
function TestMinioClientInitialization (line 28) | func TestMinioClientInitialization(t *testing.T) {
type minioClientInitializationTestS3Accelerate (line 94) | type minioClientInitializationTestS3Accelerate struct
function TestMinioClientInitializationWithAccelerate (line 102) | func TestMinioClientInitializationWithAccelerate(t *testing.T) {
function insecureCacheFactory (line 158) | func insecureCacheFactory() *cacheconfig.Config {
function emptyCredentialsCacheFactory (line 165) | func emptyCredentialsCacheFactory() *cacheconfig.Config {
function emptyServerAddressFactory (line 174) | func emptyServerAddressFactory() *cacheconfig.Config {
function emptyAccessKeyFactory (line 182) | func emptyAccessKeyFactory() *cacheconfig.Config {
function emptySecretKeyFactory (line 190) | func emptySecretKeyFactory() *cacheconfig.Config {
function onlyServerAddressFactory (line 198) | func onlyServerAddressFactory() *cacheconfig.Config {
function serverAddressAccelerateFactory (line 205) | func serverAddressAccelerateFactory(serverAddress string) *cacheconfig.C...
function onlyAccessKeyFactory (line 212) | func onlyAccessKeyFactory() *cacheconfig.Config {
function onlySecretKeyFactory (line 219) | func onlySecretKeyFactory() *cacheconfig.Config {
function runOnFakeMinio (line 226) | func runOnFakeMinio(t *testing.T, test minioClientInitializationTest) fu...
function runOnFakeMinioWithAccelerateEndpoint (line 254) | func runOnFakeMinioWithAccelerateEndpoint(t *testing.T, accelerated bool...
function runOnFakeMinioWithCredentials (line 273) | func runOnFakeMinioWithCredentials(t *testing.T, test minioClientInitial...
FILE: cache/s3/mocks.go
function newMockMinioClient (line 18) | func newMockMinioClient(t interface {
type mockMinioClient (line 31) | type mockMinioClient struct
method EXPECT (line 39) | func (_m *mockMinioClient) EXPECT() *mockMinioClient_Expecter {
method PresignHeader (line 44) | func (_mock *mockMinioClient) PresignHeader(ctx context.Context, metho...
type mockMinioClient_Expecter (line 35) | type mockMinioClient_Expecter struct
method PresignHeader (line 84) | func (_e *mockMinioClient_Expecter) PresignHeader(ctx interface{}, met...
type mockMinioClient_PresignHeader_Call (line 72) | type mockMinioClient_PresignHeader_Call struct
method Run (line 88) | func (_c *mockMinioClient_PresignHeader_Call) Run(run func(ctx context...
method Return (line 131) | func (_c *mockMinioClient_PresignHeader_Call) Return(uRL *url.URL, err...
method RunAndReturn (line 136) | func (_c *mockMinioClient_PresignHeader_Call) RunAndReturn(run func(ct...
FILE: cache/s3v2/adapter.go
type s3Adapter (line 17) | type s3Adapter struct
method GetDownloadURL (line 25) | func (a *s3Adapter) GetDownloadURL(ctx context.Context) cache.Presigne...
method GetHeadURL (line 35) | func (a *s3Adapter) GetHeadURL(ctx context.Context) cache.PresignedURL {
method GetUploadURL (line 45) | func (a *s3Adapter) GetUploadURL(ctx context.Context) cache.PresignedU...
method WithMetadata (line 64) | func (a *s3Adapter) WithMetadata(metadata map[string]string) {
method getARNForGoCloud (line 68) | func (a *s3Adapter) getARNForGoCloud(upload bool) string {
method GetGoCloudURL (line 80) | func (a *s3Adapter) GetGoCloudURL(ctx context.Context, upload bool) (c...
method presignURL (line 151) | func (a *s3Adapter) presignURL(ctx context.Context, method string) (ca...
function New (line 163) | func New(config *cacheconfig.Config, timeout time.Duration, objectName s...
function init (line 184) | func init() {
FILE: cache/s3v2/adapter_test.go
constant bucketName (line 24) | bucketName = "test"
constant objectName (line 25) | objectName = "key"
constant bucketLocation (line 26) | bucketLocation = "location"
function defaultCacheFactory (line 29) | func defaultCacheFactory() *cacheconfig.Config {
type cacheOperationTest (line 41) | type cacheOperationTest struct
function onFakeS3URLGenerator (line 52) | func onFakeS3URLGenerator(t *testing.T, tc cacheOperationTest) {
function testCacheOperation (line 85) | func testCacheOperation(
function TestCacheOperation (line 132) | func TestCacheOperation(t *testing.T) {
function TestNoConfiguration (line 184) | func TestNoConfiguration(t *testing.T) {
function TestGoCloudURLWithRoleARN (line 194) | func TestGoCloudURLWithRoleARN(t *testing.T) {
function TestGoCloudURLWithUploadRoleARN (line 390) | func TestGoCloudURLWithUploadRoleARN(t *testing.T) {
FILE: cache/s3v2/mocks.go
function newMockS3Presigner (line 17) | func newMockS3Presigner(t interface {
type mockS3Presigner (line 30) | type mockS3Presigner struct
method EXPECT (line 38) | func (_m *mockS3Presigner) EXPECT() *mockS3Presigner_Expecter {
method FetchCredentialsForRole (line 43) | func (_mock *mockS3Presigner) FetchCredentialsForRole(ctx context.Cont...
method PresignURL (line 135) | func (_mock *mockS3Presigner) PresignURL(ctx context.Context, method s...
method ServerSideEncryptionType (line 225) | func (_mock *mockS3Presigner) ServerSideEncryptionType() string {
type mockS3Presigner_Expecter (line 34) | type mockS3Presigner_Expecter struct
method FetchCredentialsForRole (line 82) | func (_e *mockS3Presigner_Expecter) FetchCredentialsForRole(ctx interf...
method PresignURL (line 172) | func (_e *mockS3Presigner_Expecter) PresignURL(ctx interface{}, method...
method ServerSideEncryptionType (line 247) | func (_e *mockS3Presigner_Expecter) ServerSideEncryptionType() *mockS3...
type mockS3Presigner_FetchCredentialsForRole_Call (line 71) | type mockS3Presigner_FetchCredentialsForRole_Call struct
method Run (line 86) | func (_c *mockS3Presigner_FetchCredentialsForRole_Call) Run(run func(c...
method Return (line 124) | func (_c *mockS3Presigner_FetchCredentialsForRole_Call) Return(stringT...
method RunAndReturn (line 129) | func (_c *mockS3Presigner_FetchCredentialsForRole_Call) RunAndReturn(r...
type mockS3Presigner_PresignURL_Call (line 161) | type mockS3Presigner_PresignURL_Call struct
method Run (line 176) | func (_c *mockS3Presigner_PresignURL_Call) Run(run func(ctx context.Co...
method Return (line 214) | func (_c *mockS3Presigner_PresignURL_Call) Return(presignedURL cache.P...
method RunAndReturn (line 219) | func (_c *mockS3Presigner_PresignURL_Call) RunAndReturn(run func(ctx c...
type mockS3Presigner_ServerSideEncryptionType_Call (line 242) | type mockS3Presigner_ServerSideEncryptionType_Call struct
method Run (line 251) | func (_c *mockS3Presigner_ServerSideEncryptionType_Call) Run(run func(...
method Return (line 258) | func (_c *mockS3Presigner_ServerSideEncryptionType_Call) Return(s stri...
method RunAndReturn (line 263) | func (_c *mockS3Presigner_ServerSideEncryptionType_Call) RunAndReturn(...
FILE: cache/s3v2/s3.go
constant DEFAULT_AWS_S3_ENDPOINT (line 29) | DEFAULT_AWS_S3_ENDPOINT = "https://s3.amazonaws.com"
constant fallbackBucketLocation (line 30) | fallbackBucketLocation = "us-east-1"
constant defaultAssumeRoleMaxConcurrency (line 32) | defaultAssumeRoleMaxConcurrency = 5
constant assumeRoleCredCacheSize (line 75) | assumeRoleCredCacheSize = 1000
constant assumeRoleCredCacheTTL (line 81) | assumeRoleCredCacheTTL = time.Hour
type cachedCredential (line 98) | type cachedCredential struct
function assumeRoleCacheKey (line 104) | func assumeRoleCacheKey(roleARN, bucketName, objectName string, upload b...
function FlushCredentialCache (line 115) | func FlushCredentialCache() {
type s3Presigner (line 119) | type s3Presigner interface
type s3Client (line 132) | type s3Client struct
method PresignURL (line 156) | func (c *s3Client) PresignURL(ctx context.Context,
method generateSessionPolicy (line 215) | func (c *s3Client) generateSessionPolicy(bucketName, objectName string...
method cachedCreds (line 263) | func (c *s3Client) cachedCreds(credKey string, minValidity time.Durati...
method acquireAssumeRoleSem (line 278) | func (c *s3Client) acquireAssumeRoleSem(ctx context.Context) (func(), ...
method FetchCredentialsForRole (line 296) | func (c *s3Client) FetchCredentialsForRole(ctx context.Context, roleAR...
method ServerSideEncryptionType (line 398) | func (c *s3Client) ServerSideEncryptionType() string {
type s3ClientOption (line 142) | type s3ClientOption
function withSTSEndpoint (line 144) | func withSTSEndpoint(endpoint string) s3ClientOption {
function withAssumeRoleSem (line 150) | func withAssumeRoleSem(sem chan struct{}) s3ClientOption {
function s3EncryptionType (line 402) | func s3EncryptionType(encryptionType cacheconfig.S3EncryptionType) string {
function newRawS3Client (line 415) | func newRawS3Client(s3Config *cacheconfig.CacheS3Config) (*aws.Config, *...
function detectBucketLocation (line 482) | func detectBucketLocation(s3Config *cacheconfig.CacheS3Config, optFuncs ...
type clientInit (line 538) | type clientInit struct
function buildS3Client (line 548) | func buildS3Client(s3Config *cacheconfig.CacheS3Config, options ...s3Cli...
FILE: cache/s3v2/s3_test.go
type sessionPolicy (line 32) | type sessionPolicy struct
type policyStatement (line 37) | type policyStatement struct
function setupMockS3Server (line 43) | func setupMockS3Server(t *testing.T) *cacheconfig.CacheS3Config {
function TestS3ClientCaching (line 77) | func TestS3ClientCaching(t *testing.T) {
function TestNewS3ClientOptions (line 112) | func TestNewS3ClientOptions(t *testing.T) {
function TestS3Client_PresignURL (line 300) | func TestS3Client_PresignURL(t *testing.T) {
function TestS3Client_PresignURL_UnknownMethodError (line 411) | func TestS3Client_PresignURL_UnknownMethodError(t *testing.T) {
function newMockSTSHandler (line 422) | func newMockSTSHandler(expectedKms bool, expectedDurationSecs int, s3Par...
function TestFetchCredentialsForRole (line 549) | func TestFetchCredentialsForRole(t *testing.T) {
function histogramSampleCount (line 706) | func histogramSampleCount(t *testing.T, h prometheus.Histogram) uint64 {
function TestFetchCredentialsForRole_ConcurrencyLimit (line 715) | func TestFetchCredentialsForRole_ConcurrencyLimit(t *testing.T) {
function TestFetchCredentialsForRole_ContextCancelledWaitingForSemaphore (line 796) | func TestFetchCredentialsForRole_ContextCancelledWaitingForSemaphore(t *...
function TestFetchCredentialsForRole_Metrics (line 825) | func TestFetchCredentialsForRole_Metrics(t *testing.T) {
function TestDetectBucketLocation (line 866) | func TestDetectBucketLocation(t *testing.T) {
function TestFetchCredentialsForRole_CacheHit (line 933) | func TestFetchCredentialsForRole_CacheHit(t *testing.T) {
function TestFetchCredentialsForRole_CacheExpiry (line 987) | func TestFetchCredentialsForRole_CacheExpiry(t *testing.T) {
function TestFetchCredentialsForRole_NoErrorCaching (line 1036) | func TestFetchCredentialsForRole_NoErrorCaching(t *testing.T) {
function TestFlushCredentialCache (line 1063) | func TestFlushCredentialCache(t *testing.T) {
function TestFetchCredentialsForRole_CacheMetrics (line 1084) | func TestFetchCredentialsForRole_CacheMetrics(t *testing.T) {
function TestFetchCredentialsForRole_CacheDisabled (line 1128) | func TestFetchCredentialsForRole_CacheDisabled(t *testing.T) {
function TestChecksumDefaults (line 1173) | func TestChecksumDefaults(t *testing.T) {
function TestFetchCredentialsForRole_FailureMetric (line 1246) | func TestFetchCredentialsForRole_FailureMetric(t *testing.T) {
FILE: cache/test/adapter.go
type testAdapter (line 14) | type testAdapter struct
method GetDownloadURL (line 20) | func (t *testAdapter) GetDownloadURL(ctx context.Context) cache.Presig...
method GetHeadURL (line 24) | func (t *testAdapter) GetHeadURL(ctx context.Context) cache.PresignedU...
method GetUploadURL (line 28) | func (t *testAdapter) GetUploadURL(ctx context.Context) cache.Presigne...
method GetUploadHeaders (line 32) | func (t *testAdapter) GetUploadHeaders() http.Header {
method GetGoCloudURL (line 43) | func (t *testAdapter) GetGoCloudURL(ctx context.Context, _ bool) (cach...
method WithMetadata (line 64) | func (t *testAdapter) WithMetadata(metadata map[string]string) {
method getUploadEnv (line 68) | func (t *testAdapter) getUploadEnv(_ context.Context) map[string]string {
method getURL (line 75) | func (t *testAdapter) getURL(operation string) *url.URL {
function New (line 83) | func New(_ *cacheconfig.Config, _ time.Duration, objectName string) (cac...
function NewGoCloudAdapter (line 87) | func NewGoCloudAdapter(_ *cacheconfig.Config, _ time.Duration, objectNam...
function init (line 91) | func init() {
FILE: commands/builds_helper.go
constant concurrencyIncreaseFactor (line 21) | concurrencyIncreaseFactor = 1.1
constant concurrencyDecreaseFactor (line 22) | concurrencyDecreaseFactor = 0.95
type statePermutation (line 67) | type statePermutation struct
function newStatePermutationFromBuild (line 76) | func newStatePermutationFromBuild(build *common.Build) statePermutation {
type runnerCounter (line 87) | type runnerCounter struct
type buildsHelper (line 100) | type buildsHelper struct
method getRunnerCounter (line 117) | func (b *buildsHelper) getRunnerCounter(runner *common.RunnerConfig) *...
method findSessionByURL (line 131) | func (b *buildsHelper) findSessionByURL(url string) (*session.Session,...
method acquireBuild (line 158) | func (b *buildsHelper) acquireBuild(runner *common.RunnerConfig) bool {
method releaseBuild (line 173) | func (b *buildsHelper) releaseBuild(runner *common.RunnerConfig) bool {
method acquireRequest (line 185) | func (b *buildsHelper) acquireRequest(runner *common.RunnerConfig) bool {
method releaseRequest (line 210) | func (b *buildsHelper) releaseRequest(runner *common.RunnerConfig, has...
method addBuild (line 234) | func (b *buildsHelper) addBuild(build *common.Build) {
method evaluateJobQueuingDuration (line 295) | func (b *buildsHelper) evaluateJobQueuingDuration(runner *common.Runne...
method removeBuild (line 344) | func (b *buildsHelper) removeBuild(deleteBuild *common.Build) bool {
method buildsCount (line 366) | func (b *buildsHelper) buildsCount() int {
method statesAndStages (line 373) | func (b *buildsHelper) statesAndStages() map[statePermutation]int {
method runnersCounters (line 401) | func (b *buildsHelper) runnersCounters() map[string]*runnerCounter {
method initializeBuildStageMetrics (line 413) | func (b *buildsHelper) initializeBuildStageMetrics(build *common.Build) {
method handleOnBuildStageStart (line 436) | func (b *buildsHelper) handleOnBuildStageStart(build *common.Build, st...
method handleOnBuildStageEnd (line 442) | func (b *buildsHelper) handleOnBuildStageEnd(build *common.Build, stag...
method handleOnJobExecutionModeDispatched (line 457) | func (b *buildsHelper) handleOnJobExecutionModeDispatched(mode common....
method Describe (line 466) | func (b *buildsHelper) Describe(ch chan<- *prometheus.Desc) {
method Collect (line 485) | func (b *buildsHelper) Collect(ch chan<- prometheus.Metric) {
method ListJobsHandler (line 554) | func (b *buildsHelper) ListJobsHandler(w http.ResponseWriter, r *http....
function newBuildsHelper (line 575) | func newBuildsHelper() buildsHelper {
FILE: commands/builds_helper_integration_test.go
function TestBuildsHelperCollect (line 21) | func TestBuildsHelperCollect(t *testing.T) {
FILE: commands/builds_helper_test.go
constant testToken (line 27) | testToken = "testoken"
constant testName (line 28) | testName = "qwerty123"
function TestBuildsHelperAcquireRequestWithLimit (line 31) | func TestBuildsHelperAcquireRequestWithLimit(t *testing.T) {
function TestBuildsHelperAcquireRequestWithAdaptiveLimit (line 50) | func TestBuildsHelperAcquireRequestWithAdaptiveLimit(t *testing.T) {
function TestBuildsHelperAcquireRequestWithDefault (line 75) | func TestBuildsHelperAcquireRequestWithDefault(t *testing.T) {
function TestBuildsHelperAcquireBuildWithLimit (line 103) | func TestBuildsHelperAcquireBuildWithLimit(t *testing.T) {
function TestBuildsHelperAcquireBuildUnlimited (line 122) | func TestBuildsHelperAcquireBuildUnlimited(t *testing.T) {
function TestBuildsHelperFindSessionByURL (line 141) | func TestBuildsHelperFindSessionByURL(t *testing.T) {
function TestBuildsHelper_ListJobsHandler (line 180) | func TestBuildsHelper_ListJobsHandler(t *testing.T) {
function TestRestrictHTTPMethods (line 236) | func TestRestrictHTTPMethods(t *testing.T) {
function TestBuildsHelper_evaluateJobQueuingDuration (line 263) | func TestBuildsHelper_evaluateJobQueuingDuration(t *testing.T) {
function TestJobExecutionModeTotal (line 405) | func TestJobExecutionModeTotal(t *testing.T) {
function TestPrepareStageMetrics (line 477) | func TestPrepareStageMetrics(t *testing.T) {
function TestPrepareStageMetricsNoFF (line 518) | func TestPrepareStageMetricsNoFF(t *testing.T) {
function TestEnsureJobsTotalIsZero (line 541) | func TestEnsureJobsTotalIsZero(t *testing.T) {
FILE: commands/config.go
function GetDefaultConfigFile (line 10) | func GetDefaultConfigFile() string {
function GetDefaultCertificateDirectory (line 14) | func GetDefaultCertificateDirectory() string {
function init (line 18) | func init() {
FILE: commands/config_unix.go
function getDefaultConfigDirectory (line 14) | func getDefaultConfigDirectory() string {
FILE: commands/config_windows.go
function getDefaultConfigDirectory (line 7) | func getDefaultConfigDirectory() string {
FILE: commands/constants.go
constant osTypeLinux (line 4) | osTypeLinux = "linux"
constant osTypeDarwin (line 5) | osTypeDarwin = "darwin"
constant osTypeWindows (line 6) | osTypeWindows = "windows"
constant osTypeFreeBSD (line 7) | osTypeFreeBSD = "freebsd"
FILE: commands/fleeting/fleeting.go
type runnerFleetingPlugin (line 21) | type runnerFleetingPlugin struct
function getPlugins (line 26) | func getPlugins(context *cli.Context) []runnerFleetingPlugin {
function install (line 49) | func install(clictx *cli.Context) {
function list (line 74) | func list(clictx *cli.Context) {
function login (line 90) | func login(clictx *cli.Context) error {
function NewCommand (line 112) | func NewCommand() cli.Command {
FILE: commands/fleeting/fleeting_integration_test.go
function init (line 15) | func init() {
function TestInstall (line 24) | func TestInstall(t *testing.T) {
FILE: commands/health_helper.go
type healthData (line 13) | type healthData struct
type healthHelper (line 18) | type healthHelper struct
method getHealth (line 37) | func (mr *healthHelper) getHealth(id string) *healthData {
method isHealthy (line 53) | func (mr *healthHelper) isHealthy(runner *common.RunnerConfig) bool {
method runnerHealthCheckFailures (line 80) | func (mr *healthHelper) runnerHealthCheckFailures(runner *common.Runne...
method markHealth (line 84) | func (mr *healthHelper) markHealth(runner *common.RunnerConfig, health...
method Describe (line 112) | func (mr *healthHelper) Describe(ch chan<- *prometheus.Desc) {
method Collect (line 116) | func (mr *healthHelper) Collect(ch chan<- prometheus.Metric) {
function newHealthHelper (line 25) | func newHealthHelper() healthHelper {
FILE: commands/helpers/archive/archive.go
type CompressionLevel (line 18) | type CompressionLevel
constant FastestCompression (line 23) | FastestCompression CompressionLevel = -2
constant FastCompression (line 24) | FastCompression CompressionLevel = -1
constant DefaultCompression (line 25) | DefaultCompression CompressionLevel = 0
constant SlowCompression (line 26) | SlowCompression CompressionLevel = 1
constant SlowestCompression (line 27) | SlowestCompression CompressionLevel = 2
type Format (line 31) | type Format
constant Raw (line 35) | Raw Format = "raw"
constant Gzip (line 36) | Gzip Format = "gzip"
constant Zip (line 37) | Zip Format = "zip"
constant ZipZstd (line 38) | ZipZstd Format = "zipzstd"
constant TarZstd (line 39) | TarZstd Format = "tarzstd"
type Archiver (line 48) | type Archiver interface
type Extractor (line 53) | type Extractor interface
type NewArchiverFunc (line 59) | type NewArchiverFunc
type NewExtractorFunc (line 63) | type NewExtractorFunc
function Register (line 67) | func Register(
function NewArchiver (line 90) | func NewArchiver(format Format, w io.Writer, dir string, level Compressi...
function NewExtractor (line 102) | func NewExtractor(format Format, r io.ReaderAt, size int64, dir string) ...
FILE: commands/helpers/archive/archive_test.go
function TestDefaultRegistration (line 20) | func TestDefaultRegistration(t *testing.T) {
function TestRegister (line 52) | func TestRegister(t *testing.T) {
function TestRegisterOverride (line 64) | func TestRegisterOverride(t *testing.T) {
FILE: commands/helpers/archive/fastzip/options_test.go
function TestOptionFromEnvValidation (line 16) | func TestOptionFromEnvValidation(t *testing.T) {
function TestArchiverOptionFromEnv (line 36) | func TestArchiverOptionFromEnv(t *testing.T) {
function TestExtractorOptionFromEnv (line 57) | func TestExtractorOptionFromEnv(t *testing.T) {
function archiveTestDir (line 90) | func archiveTestDir(t *testing.T, fn func(string, string, error)) {
function tempEnvOption (line 111) | func tempEnvOption(option, value string) func() {
FILE: commands/helpers/archive/fastzip/zip_fastzip_archiver.go
function init (line 33) | func init() {
constant archiverConcurrency (line 38) | archiverConcurrency = "FASTZIP_ARCHIVER_CONCURRENCY"
constant archiverBufferSize (line 39) | archiverBufferSize = "FASTZIP_ARCHIVER_BUFFER_SIZE"
constant archiverStagingDir (line 41) | archiverStagingDir = "ARCHIVER_STAGING_DIR"
type archiver (line 45) | type archiver struct
method Archive (line 72) | func (a *archiver) Archive(ctx context.Context, files map[string]os.Fi...
function NewArchiver (line 53) | func NewArchiver(w io.Writer, dir string, level archive.CompressionLevel...
function NewZstdArchiver (line 62) | func NewZstdArchiver(w io.Writer, dir string, level archive.CompressionL...
function getArchiverOptionsFromEnvironment (line 115) | func getArchiverOptionsFromEnvironment() ([]fastzip.ArchiverOption, erro...
FILE: commands/helpers/archive/fastzip/zip_fastzip_extractor.go
constant extractorConcurrency (line 16) | extractorConcurrency = "FASTZIP_EXTRACTOR_CONCURRENCY"
type extractor (line 20) | type extractor struct
method Extract (line 33) | func (e *extractor) Extract(ctx context.Context) error {
function NewExtractor (line 27) | func NewExtractor(r io.ReaderAt, size int64, dir string) (archive.Extrac...
function getExtractorOptionsFromEnvironment (line 48) | func getExtractorOptionsFromEnvironment() ([]fastzip.ExtractorOption, er...
FILE: commands/helpers/archive/gziplegacy/gzip_legacy_archiver.go
function init (line 13) | func init() {
type archiver (line 18) | type archiver struct
method Archive (line 29) | func (a *archiver) Archive(ctx context.Context, files map[string]os.Fi...
function NewArchiver (line 24) | func NewArchiver(w io.Writer, dir string, level archive.CompressionLevel...
FILE: commands/helpers/archive/mocks.go
function NewMockArchiver (line 16) | func NewMockArchiver(t interface {
type MockArchiver (line 29) | type MockArchiver struct
method EXPECT (line 37) | func (_m *MockArchiver) EXPECT() *MockArchiver_Expecter {
method Archive (line 42) | func (_mock *MockArchiver) Archive(ctx context.Context, files map[stri...
type MockArchiver_Expecter (line 33) | type MockArchiver_Expecter struct
method Archive (line 66) | func (_e *MockArchiver_Expecter) Archive(ctx interface{}, files interf...
type MockArchiver_Archive_Call (line 59) | type MockArchiver_Archive_Call struct
method Run (line 70) | func (_c *MockArchiver_Archive_Call) Run(run func(ctx context.Context,...
method Return (line 88) | func (_c *MockArchiver_Archive_Call) Return(err error) *MockArchiver_A...
method RunAndReturn (line 93) | func (_c *MockArchiver_Archive_Call) RunAndReturn(run func(ctx context...
function NewMockExtractor (line 100) | func NewMockExtractor(t interface {
type MockExtractor (line 113) | type MockExtractor struct
method EXPECT (line 121) | func (_m *MockExtractor) EXPECT() *MockExtractor_Expecter {
method Extract (line 126) | func (_mock *MockExtractor) Extract(ctx context.Context) error {
type MockExtractor_Expecter (line 117) | type MockExtractor_Expecter struct
method Extract (line 149) | func (_e *MockExtractor_Expecter) Extract(ctx interface{}) *MockExtrac...
type MockExtractor_Extract_Call (line 143) | type MockExtractor_Extract_Call struct
method Run (line 153) | func (_c *MockExtractor_Extract_Call) Run(run func(ctx context.Context...
method Return (line 166) | func (_c *MockExtractor_Extract_Call) Return(err error) *MockExtractor...
method RunAndReturn (line 171) | func (_c *MockExtractor_Extract_Call) RunAndReturn(run func(ctx contex...
FILE: commands/helpers/archive/raw/raw_archiver.go
function init (line 12) | func init() {
type archiver (line 22) | type archiver struct
method Archive (line 35) | func (a *archiver) Archive(ctx context.Context, files map[string]os.Fi...
function NewArchiver (line 28) | func NewArchiver(w io.Writer, dir string, level archive.CompressionLevel...
FILE: commands/helpers/archive/tarzstd/ops_unix.go
function lchmod (line 13) | func lchmod(name string, mode os.FileMode) error {
function lchtimes (line 31) | func lchtimes(name string, mode os.FileMode, atime, mtime time.Time) err...
function lchown (line 49) | func lchown(name string, uid, gid int) error {
FILE: commands/helpers/archive/tarzstd/ops_windows.go
function lchmod (line 10) | func lchmod(name string, mode os.FileMode) error {
function lchtimes (line 18) | func lchtimes(name string, mode os.FileMode, atime, mtime time.Time) err...
function lchown (line 26) | func lchown(name string, uid, gid int) error {
FILE: commands/helpers/archive/tarzstd/tarzstd_archiver.go
function init (line 17) | func init() {
constant irregularModes (line 21) | irregularModes = os.ModeSocket | os.ModeDevice | os.ModeCharDevice | os....
type archiver (line 32) | type archiver struct
method Archive (line 46) | func (a *archiver) Archive(ctx context.Context, files map[string]os.Fi...
function NewArchiver (line 39) | func NewArchiver(w io.Writer, dir string, level archive.CompressionLevel...
FILE: commands/helpers/archive/tarzstd/tarzstd_extractor.go
type extractor (line 18) | type extractor struct
method Extract (line 33) | func (e *extractor) Extract(ctx context.Context) error {
method updateFileMetadata (line 127) | func (e *extractor) updateFileMetadata(path string, hdr *tar.Header) e...
function NewExtractor (line 25) | func NewExtractor(r io.ReaderAt, size int64, dir string) (archive.Extrac...
FILE: commands/helpers/archive/ziplegacy/zip_legacy_archiver.go
function init (line 16) | func init() {
type archiver (line 24) | type archiver struct
method Archive (line 35) | func (a *archiver) Archive(ctx context.Context, files map[string]os.Fi...
function NewArchiver (line 30) | func NewArchiver(w io.Writer, dir string, level archive.CompressionLevel...
FILE: commands/helpers/archive/ziplegacy/zip_legacy_extractor.go
type extractor (line 13) | type extractor struct
method Extract (line 26) | func (e *extractor) Extract(ctx context.Context) error {
function NewExtractor (line 20) | func NewExtractor(r io.ReaderAt, size int64, dir string) (archive.Extrac...
FILE: commands/helpers/archiver.go
function init (line 19) | func init() {
function GetCompressionLevel (line 41) | func GetCompressionLevel(name string) archive.CompressionLevel {
FILE: commands/helpers/archiver_test.go
function TestCompressionLevel (line 18) | func TestCompressionLevel(t *testing.T) {
function TestArchiver (line 36) | func TestArchiver(t *testing.T) {
function TestZipArchiveExtract (line 88) | func TestZipArchiveExtract(t *testing.T) {
FILE: commands/helpers/artifact_metadata.go
constant artifactsStatementFormat (line 27) | artifactsStatementFormat = "%v-metadata.json"
constant attestationTypeFormat (line 28) | attestationTypeFormat = "https://gitlab.com/gitlab-org/gitlab-runner...
constant attestationRunnerIDFormat (line 29) | attestationRunnerIDFormat = "%v/-/runners/%v"
type artifactStatementGenerator (line 32) | type artifactStatementGenerator struct
method generateStatementToFile (line 58) | func (g *artifactStatementGenerator) generateStatementToFile(opts gene...
method generateSLSAv1Predicate (line 106) | func (g *artifactStatementGenerator) generateSLSAv1Predicate(jobId int...
method externalParams (line 143) | func (g *artifactStatementGenerator) externalParams(jobName, repoURL s...
method internalParams (line 160) | func (g *artifactStatementGenerator) internalParams(jobId int64) (*str...
method version (line 169) | func (g *artifactStatementGenerator) version() string {
method parseTimings (line 177) | func (g *artifactStatementGenerator) parseTimings() (time.Time, time.T...
method generateSubjects (line 191) | func (g *artifactStatementGenerator) generateSubjects(files map[string...
type generateStatementOptions (line 46) | type generateStatementOptions struct
constant slsaProvenanceVersion1 (line 54) | slsaProvenanceVersion1 = "v1"
constant defaultSLSAProvenanceVersion (line 55) | defaultSLSAProvenanceVersion = slsaProvenanceVersion1
FILE: commands/helpers/artifact_metadata_test.go
type fileInfo (line 28) | type fileInfo struct
method Name (line 33) | func (fi fileInfo) Name() string {
method Size (line 37) | func (fi fileInfo) Size() int64 {
method Mode (line 41) | func (fi fileInfo) Mode() fs.FileMode {
method ModTime (line 45) | func (fi fileInfo) ModTime() time.Time {
method IsDir (line 49) | func (fi fileInfo) IsDir() bool {
method Sys (line 53) | func (fi fileInfo) Sys() any {
function TestGenerateMetadataToFile (line 57) | func TestGenerateMetadataToFile(t *testing.T) {
function TestGeneratePredicateV1 (line 292) | func TestGeneratePredicateV1(t *testing.T) {
FILE: commands/helpers/artifacts_downloader.go
type ArtifactsDownloaderCommand (line 22) | type ArtifactsDownloaderCommand struct
method directDownloadFlag (line 49) | func (c *ArtifactsDownloaderCommand) directDownloadFlag(retry int) *bo...
method download (line 60) | func (c *ArtifactsDownloaderCommand) download(file string, retry int) ...
method Execute (line 88) | func (c *ArtifactsDownloaderCommand) Execute(cliContext *cli.Context) {
function NewArtifactsDownloaderCommand (line 32) | func NewArtifactsDownloaderCommand() cli.Command {
function openArchive (line 148) | func openArchive(filename string) (*os.File, int64, archive.Format, erro...
FILE: commands/helpers/artifacts_downloader_test.go
function TestArtifactsDownloaderRequirements (line 27) | func TestArtifactsDownloaderRequirements(t *testing.T) {
function TestArtifactsDownloader (line 37) | func TestArtifactsDownloader(t *testing.T) {
function Test_URFavArgParsing (line 142) | func Test_URFavArgParsing(t *testing.T) {
FILE: commands/helpers/artifacts_test.go
constant artifactsTestArchivedFile (line 21) | artifactsTestArchivedFile = "archive_file"
constant artifactsTestArchivedFile2 (line 22) | artifactsTestArchivedFile2 = "archive_file2"
type testNetwork (line 27) | type testNetwork struct
method DownloadArtifacts (line 40) | func (m *testNetwork) DownloadArtifacts(
method consumeZipUpload (line 61) | func (m *testNetwork) consumeZipUpload(reader io.Reader) common.Upload...
method consumeGzipUpload (line 79) | func (m *testNetwork) consumeGzipUpload(reader io.Reader) common.Uploa...
method consumeRawUpload (line 113) | func (m *testNetwork) consumeRawUpload(reader io.Reader) common.Upload...
method UploadRawArtifacts (line 124) | func (m *testNetwork) UploadRawArtifacts(
function writeTestFile (line 162) | func writeTestFile(t *testing.T, fileName string) {
function removeTestFile (line 167) | func removeTestFile(t *testing.T, fileName string) {
FILE: commands/helpers/artifacts_uploader.go
constant DefaultUploadName (line 28) | DefaultUploadName = "default"
constant defaultTries (line 29) | defaultTries = 3
constant serviceUnavailableTries (line 30) | serviceUnavailableTries = 6
type ArtifactsUploaderCommand (line 38) | type ArtifactsUploaderCommand struct
method artifactFilename (line 79) | func (c *ArtifactsUploaderCommand) artifactFilename(name string, forma...
method createBodyProvider (line 99) | func (c *ArtifactsUploaderCommand) createBodyProvider() (string, commo...
method Run (line 141) | func (c *ArtifactsUploaderCommand) Run() error {
method handleRedirect (line 177) | func (c *ArtifactsUploaderCommand) handleRedirect(location string) err...
method shouldRetry (line 195) | func (c *ArtifactsUploaderCommand) shouldRetry(tries int, err error) b...
method Execute (line 213) | func (c *ArtifactsUploaderCommand) Execute(*cli.Context) {
method NewRetry (line 245) | func (c *ArtifactsUploaderCommand) NewRetry() *retry.Retry {
method normalizeArgs (line 252) | func (c *ArtifactsUploaderCommand) normalizeArgs() {
function NewArtifactsUploaderCommand (line 56) | func NewArtifactsUploaderCommand() cli.Command {
FILE: commands/helpers/artifacts_uploader_integration_test.go
function TestArchiveUploadExpandArgs (line 29) | func TestArchiveUploadExpandArgs(t *testing.T) {
function TestArchiveUploadRedirect (line 53) | func TestArchiveUploadRedirect(t *testing.T) {
function TestArchiveUploadLogging (line 92) | func TestArchiveUploadLogging(t *testing.T) {
function assertRequestPathAndMethod (line 162) | func assertRequestPathAndMethod(t *testing.T, handlerName string, handle...
function redirectingServerHandler (line 173) | func redirectingServerHandler(finalServerURL string) http.HandlerFunc {
function finalServerHandler (line 180) | func finalServerHandler(t *testing.T, finalRequestReceived *bool, resBod...
function receiveFile (line 216) | func receiveFile(t *testing.T, r *http.Request, targetDir string) {
FILE: commands/helpers/artifacts_uploader_test.go
function createTestNewNetwork (line 31) | func createTestNewNetwork(testNet *testNetwork) func() common.Network {
function TestArtifactsUploaderRequirements (line 37) | func TestArtifactsUploaderRequirements(t *testing.T) {
function TestArtifactsUploaderTooLarge (line 47) | func TestArtifactsUploaderTooLarge(t *testing.T) {
function TestArtifactsUploaderForbidden (line 72) | func TestArtifactsUploaderForbidden(t *testing.T) {
function TestArtifactsUploaderRetry (line 97) | func TestArtifactsUploaderRetry(t *testing.T) {
function TestArtifactsUploaderDefaultSucceeded (line 124) | func TestArtifactsUploaderDefaultSucceeded(t *testing.T) {
function TestArtifactsUploaderZipSucceeded (line 148) | func TestArtifactsUploaderZipSucceeded(t *testing.T) {
function TestArtifactsUploaderGzipSendsMultipleFiles (line 176) | func TestArtifactsUploaderGzipSendsMultipleFiles(t *testing.T) {
function TestArtifactsUploaderRawSucceeded (line 206) | func TestArtifactsUploaderRawSucceeded(t *testing.T) {
function TestArtifactsUploaderRawDoesNotSendMultipleFiles (line 232) | func TestArtifactsUploaderRawDoesNotSendMultipleFiles(t *testing.T) {
function TestArtifactsUploaderNoFilesDoNotGenerateError (line 261) | func TestArtifactsUploaderNoFilesDoNotGenerateError(t *testing.T) {
function TestArtifactsUploaderServiceUnavailable (line 279) | func TestArtifactsUploaderServiceUnavailable(t *testing.T) {
function TestArtifactsExcludedPaths (line 304) | func TestArtifactsExcludedPaths(t *testing.T) {
function TestFileArchiverCompressionLevel (line 327) | func TestFileArchiverCompressionLevel(t *testing.T) {
function TestArtifactUploaderCommandShouldRetry (line 375) | func TestArtifactUploaderCommandShouldRetry(t *testing.T) {
function TestNewArtifactsUploaderCommandDefaultTimeouts (line 440) | func TestNewArtifactsUploaderCommandDefaultTimeouts(t *testing.T) {
type timeoutTestFixture (line 463) | type timeoutTestFixture struct
method setupCommand (line 471) | func (f *timeoutTestFixture) setupCommand() *ArtifactsUploaderCommand {
function TestArtifactsUploaderCommandTimeouts (line 498) | func TestArtifactsUploaderCommandTimeouts(t *testing.T) {
FILE: commands/helpers/cache_archiver.go
type CacheArchiverCommand (line 34) | type CacheArchiverCommand struct
method getClient (line 83) | func (c *CacheArchiverCommand) getClient() *CacheClient {
method upload (line 91) | func (c *CacheArchiverCommand) upload(_ int) error {
method handlePresignedURL (line 118) | func (c *CacheArchiverCommand) handlePresignedURL(fi os.FileInfo, file...
method handleGoCloudURL (line 143) | func (c *CacheArchiverCommand) handleGoCloudURL(file io.Reader) error {
method createZipFile (line 205) | func (c *CacheArchiverCommand) createZipFile(filename string) (int64, ...
method tryRenameAlternateFile (line 251) | func (c *CacheArchiverCommand) tryRenameAlternateFile() {
method Execute (line 284) | func (c *CacheArchiverCommand) Execute(*cli.Context) {
method normalizeArgs (line 336) | func (c *CacheArchiverCommand) normalizeArgs() {
method uploadExistingArchiveIfNeeded (line 370) | func (c *CacheArchiverCommand) uploadExistingArchiveIfNeeded() {
method primaryRemoteExists (line 385) | func (c *CacheArchiverCommand) primaryRemoteExists() bool {
method primaryPresignedExists (line 395) | func (c *CacheArchiverCommand) primaryPresignedExists() bool {
method primaryGoCloudExists (line 407) | func (c *CacheArchiverCommand) primaryGoCloudExists() bool {
method uploadArchiveIfNeeded (line 443) | func (c *CacheArchiverCommand) uploadArchiveIfNeeded(size int64) {
method setHeaders (line 463) | func (c *CacheArchiverCommand) setHeaders(req *http.Request, fi os.Fil...
function NewCacheArchiverCommand (line 61) | func NewCacheArchiverCommand() cli.Command {
type metadata (line 77) | type metadata
method UnmarshalFlag (line 79) | func (m *metadata) UnmarshalFlag(raw string) error {
function split (line 475) | func split(raw []string) map[string]string {
FILE: commands/helpers/cache_archiver_integration_test.go
constant cacheArchiverArchive (line 32) | cacheArchiverArchive = "archive.zip"
constant cacheArchiverMetadata (line 33) | cacheArchiverMetadata = "metadata.json"
constant cacheArchiverTestArchivedFile (line 34) | cacheArchiverTestArchivedFile = "archive_file"
constant cacheExtractorTestArchivedFile (line 35) | cacheExtractorTestArchivedFile = "archive_file"
function TestCacheArchiveLocalMetadata (line 38) | func TestCacheArchiveLocalMetadata(t *testing.T) {
function TestCacheArchiverUploadExpandArgs (line 95) | func TestCacheArchiverUploadExpandArgs(t *testing.T) {
function TestCacheArchiverIsUpToDate (line 117) | func TestCacheArchiverIsUpToDate(t *testing.T) {
function TestCacheArchiverForIfNoFileDefined (line 142) | func TestCacheArchiverForIfNoFileDefined(t *testing.T) {
function TestCacheArchiverRemoteServerNotFound (line 151) | func TestCacheArchiverRemoteServerNotFound(t *testing.T) {
function TestCacheArchiverRemoteServer (line 174) | func TestCacheArchiverRemoteServer(t *testing.T) {
function TestCacheArchiverGoCloudRemoteServer (line 197) | func TestCacheArchiverGoCloudRemoteServer(t *testing.T) {
function TestCacheArchiverRemoteServerWithHeaders (line 229) | func TestCacheArchiverRemoteServerWithHeaders(t *testing.T) {
function TestCacheArchiverRemoteServerTimedOut (line 248) | func TestCacheArchiverRemoteServerTimedOut(t *testing.T) {
function TestCacheArchiverRemoteServerFailOnInvalidServer (line 277) | func TestCacheArchiverRemoteServerFailOnInvalidServer(t *testing.T) {
function TestCacheArchiverCompressionLevel (line 297) | func TestCacheArchiverCompressionLevel(t *testing.T) {
type dirOpener (line 330) | type dirOpener struct
method OpenBucketURL (line 334) | func (o *dirOpener) OpenBucketURL(_ context.Context, u *url.URL) (*blo...
function setupGoCloudFileBucket (line 338) | func setupGoCloudFileBucket(t *testing.T, scheme string) (m *blob.URLMux...
function goCloudObjectAttributes (line 350) | func goCloudObjectAttributes(t *testing.T, bucketDir string, objectName ...
function testCacheBaseUploadHandler (line 367) | func testCacheBaseUploadHandler(w http.ResponseWriter, r *http.Request) {
function testCacheUploadHandler (line 381) | func testCacheUploadHandler(w http.ResponseWriter, r *http.Request) {
function testCacheUploadWithCustomHeaders (line 394) | func testCacheUploadWithCustomHeaders(w http.ResponseWriter, r *http.Req...
function writeTestFile (line 410) | func writeTestFile(t *testing.T, fileName string) {
function TestCacheArchiverUploadedSize (line 415) | func TestCacheArchiverUploadedSize(t *testing.T) {
function TestCacheArchiverSkipsEmptyCache (line 474) | func TestCacheArchiverSkipsEmptyCache(t *testing.T) {
FILE: commands/helpers/cache_archiver_test.go
function TestUploadExistingArchiveIfNeeded (line 16) | func TestUploadExistingArchiveIfNeeded(t *testing.T) {
function TestTryRenameAlternateFile (line 81) | func TestTryRenameAlternateFile(t *testing.T) {
FILE: commands/helpers/cache_client.go
type CacheClient (line 11) | type CacheClient struct
method prepareClient (line 15) | func (c *CacheClient) prepareClient(timeout int) {
method prepareTransport (line 23) | func (c *CacheClient) prepareTransport() {
function NewCacheClient (line 38) | func NewCacheClient(timeout int) *CacheClient {
FILE: commands/helpers/cache_defaults.go
constant defaultCacheTransferBufferSize (line 7) | defaultCacheTransferBufferSize = 4 * 1024 * 1024
constant defaultCacheChunkSize (line 8) | defaultCacheChunkSize = 16 * 1024 * 1024
constant defaultCacheConcurrency (line 9) | defaultCacheConcurrency = 16
constant logFieldHTTPETag (line 12) | logFieldHTTPETag = "etag"
function validateCacheTransferTuning (line 17) | func validateCacheTransferTuning(transferBufferSize, chunkSize, concurre...
FILE: commands/helpers/cache_defaults_test.go
function TestValidateCacheTransferTuning (line 11) | func TestValidateCacheTransferTuning(t *testing.T) {
FILE: commands/helpers/cache_env.go
function loadEnvFile (line 10) | func loadEnvFile(filename string) error {
FILE: commands/helpers/cache_env_test.go
function TestLoadEnvFile (line 13) | func TestLoadEnvFile(t *testing.T) {
FILE: commands/helpers/cache_extractor.go
type CacheExtractorCommand (line 32) | type CacheExtractorCommand struct
method normalizeExtractorArgs (line 71) | func (c *CacheExtractorCommand) normalizeExtractorArgs() {
method getClient (line 80) | func (c *CacheExtractorCommand) getClient() *CacheClient {
method download (line 107) | func (c *CacheExtractorCommand) download(_ int) error {
method getCache (line 121) | func (c *CacheExtractorCommand) getCache() (*http.Response, error) {
method gocloudSupportsRange (line 148) | func (c *CacheExtractorCommand) gocloudSupportsRange(ctx context.Conte...
method gocloudParallelRangeSupported (line 157) | func (c *CacheExtractorCommand) gocloudParallelRangeSupported(ctx cont...
method handlePresignedURL (line 164) | func (c *CacheExtractorCommand) handlePresignedURL() error {
method presignedParallelDownloadEligible (line 177) | func (c *CacheExtractorCommand) presignedParallelDownloadEligible() bo...
method tryPresignedParallelDownload (line 186) | func (c *CacheExtractorCommand) tryPresignedParallelDownload() (done b...
method downloadPresignedSequential (line 235) | func (c *CacheExtractorCommand) downloadPresignedSequential() error {
method effectiveParallelChunkSize (line 255) | func (c *CacheExtractorCommand) effectiveParallelChunkSize() int {
method presignedRangeFetchChunk (line 262) | func (c *CacheExtractorCommand) presignedRangeFetchChunk() func(offset...
method handleGoCloudURL (line 282) | func (c *CacheExtractorCommand) handleGoCloudURL() error {
method downloadParallel (line 357) | func (c *CacheExtractorCommand) downloadParallel(contentLength int64, ...
method downloadAndSaveCache (line 412) | func (c *CacheExtractorCommand) downloadAndSaveCache(reader io.Reader,...
method Execute (line 464) | func (c *CacheExtractorCommand) Execute(cliContext *cli.Context) {
function NewCacheExtractorCommand (line 52) | func NewCacheExtractorCommand() cli.Command {
function checkIfUpToDate (line 88) | func checkIfUpToDate(path string, resp *http.Response) (bool, time.Time) {
function isLocalCacheFileUpToDate (line 93) | func isLocalCacheFileUpToDate(path string, date time.Time) bool {
function getRemoteCacheSize (line 98) | func getRemoteCacheSize(resp *http.Response) int64 {
function goCloudURLSchemeAssumesRangeSupport (line 138) | func goCloudURLSchemeAssumesRangeSupport(scheme string) bool {
function warningln (line 512) | func warningln(args interface{}) {
FILE: commands/helpers/cache_extractor_test.go
constant cacheExtractorArchive (line 33) | cacheExtractorArchive = "archive.zip"
constant cacheExtractorMetadata (line 34) | cacheExtractorMetadata = "metadata.json"
constant cacheExtractorTestArchivedFile (line 35) | cacheExtractorTestArchivedFile = "archive_file"
constant cacheExtractorTestFile (line 36) | cacheExtractorTestFile = "test_file"
type dirOpener (line 39) | type dirOpener struct
method OpenBucketURL (line 43) | func (o *dirOpener) OpenBucketURL(_ context.Context, u *url.URL) (*blo...
function setupGoCloudFileBucket (line 47) | func setupGoCloudFileBucket(t *testing.T, scheme string) (m *blob.URLMux...
function writeZipFile (line 57) | func writeZipFile(t *testing.T, filename string) {
function writeZipFileAndMetadata (line 80) | func writeZipFileAndMetadata(t *testing.T, filename string) {
function TestCacheExtractorValidArchive (line 97) | func TestCacheExtractorValidArchive(t *testing.T) {
function TestCacheExtractorForInvalidArchive (line 137) | func TestCacheExtractorForInvalidArchive(t *testing.T) {
function TestCacheExtractorForIfNoFileDefined (line 153) | func TestCacheExtractorForIfNoFileDefined(t *testing.T) {
function TestCacheExtractorForNotExistingFile (line 162) | func TestCacheExtractorForNotExistingFile(t *testing.T) {
function testServeCacheWithETag (line 173) | func testServeCacheWithETag(w http.ResponseWriter, r *http.Request) {
function testServeCache (line 178) | func testServeCache(w http.ResponseWriter, r *http.Request) {
function TestCacheExtractorRemoteServerNotFound (line 200) | func TestCacheExtractorRemoteServerNotFound(t *testing.T) {
function TestCacheExtractorRemoteServerTimedOut (line 218) | func TestCacheExtractorRemoteServerTimedOut(t *testing.T) {
function TestCacheExtractorRemoteServer (line 244) | func TestCacheExtractorRemoteServer(t *testing.T) {
function TestCacheExtractorRemoteServerFailOnInvalidServer (line 303) | func TestCacheExtractorRemoteServerFailOnInvalidServer(t *testing.T) {
function TestIsLocalCacheFileUpToDate (line 320) | func TestIsLocalCacheFileUpToDate(t *testing.T) {
function cdTempDir (line 343) | func cdTempDir(t *testing.T) {
function parallelTestZipBytes (line 358) | func parallelTestZipBytes(t *testing.T) []byte {
function parseBytesRangeHeader (line 370) | func parseBytesRangeHeader(h string) (start, end int64, ok bool) {
function testParallelPresignedCacheHandler (line 389) | func testParallelPresignedCacheHandler(t *testing.T, payload []byte, las...
function TestCacheExtractorPresignedParallelTransfer (line 421) | func TestCacheExtractorPresignedParallelTransfer(t *testing.T) {
function TestCacheExtractorGoCloudParallelTransfer (line 457) | func TestCacheExtractorGoCloudParallelTransfer(t *testing.T) {
function TestGoCloudURLSchemeAssumesRangeSupport (line 489) | func TestGoCloudURLSchemeAssumesRangeSupport(t *testing.T) {
function TestUseParallelCacheTransferEnv (line 502) | func TestUseParallelCacheTransferEnv(t *testing.T) {
FILE: commands/helpers/cache_init.go
type CacheInitCommand (line 16) | type CacheInitCommand struct
method Execute (line 22) | func (c *CacheInitCommand) Execute(ctx *cli.Context) {
function NewCacheInitCommand (line 18) | func NewCacheInitCommand() cli.Command {
FILE: commands/helpers/cache_init_integration_test.go
function newCacheInitTestApp (line 18) | func newCacheInitTestApp() *cli.App {
function TestCacheInit (line 30) | func TestCacheInit(t *testing.T) {
function TestCacheInit_NoArguments (line 48) | func TestCacheInit_NoArguments(t *testing.T) {
FILE: commands/helpers/cache_metadata.go
constant cacheMetadataFileName (line 15) | cacheMetadataFileName = "metadata.json"
function writeCacheMetadataFile (line 20) | func writeCacheMetadataFile(archiveFilePath string, metadata map[string]...
function normalizeCacheMetadataKey (line 43) | func normalizeCacheMetadataKey(key string) string {
function headersToCacheMetadata (line 48) | func headersToCacheMetadata(headers http.Header) map[string]string {
function extractCacheMetadataKey (line 70) | func extractCacheMetadataKey(headerKey string) (string, bool) {
FILE: commands/helpers/cache_metadata_test.go
function TestWriteCacheMetadataFile (line 15) | func TestWriteCacheMetadataFile(t *testing.T) {
FILE: commands/helpers/file_archiver.go
type fileArchiver (line 20) | type fileArchiver struct
method isChanged (line 31) | func (c *fileArchiver) isChanged(modTime time.Time) bool {
method isFileChanged (line 40) | func (c *fileArchiver) isFileChanged(fileName string) bool {
method sortedFiles (line 52) | func (c *fileArchiver) sortedFiles() []string {
method process (line 65) | func (c *fileArchiver) process(match string) bool {
method isExcluded (line 103) | func (c *fileArchiver) isExcluded(path string) (bool, string) {
method exclude (line 123) | func (c *fileArchiver) exclude(rule string) {
method add (line 127) | func (c *fileArchiver) add(path string) error {
method processPaths (line 140) | func (c *fileArchiver) processPaths() {
method processPath (line 146) | func (c *fileArchiver) processPath(path string) {
method findRelativePathInProject (line 191) | func (c *fileArchiver) findRelativePathInProject(path string) (string,...
method processUntracked (line 224) | func (c *fileArchiver) processUntracked() {
method enumerate (line 264) | func (c *fileArchiver) enumerate() error {
FILE: commands/helpers/file_archiver_integration_test.go
function newFileArchiveInitTestApp (line 21) | func newFileArchiveInitTestApp(file string, paths []string) (*cli.App, *...
function TestFileArchiver (line 33) | func TestFileArchiver(t *testing.T) {
function setupEnvironment (line 69) | func setupEnvironment(t *testing.T, parentDir, dir string) []string {
function trimPrefixes (line 131) | func trimPrefixes(s string, prefixes ...string) string {
function createFile (line 141) | func createFile(t *testing.T, path string) {
FILE: commands/helpers/file_archiver_test.go
constant fileArchiverUntrackedFile (line 18) | fileArchiverUntrackedFile = "untracked_test_file.txt"
constant fileArchiverArchiveZipFile (line 19) | fileArchiverArchiveZipFile = "archive.zip"
constant fileArchiverNotExistingFile (line 20) | fileArchiverNotExistingFile = "not_existing_file.txt"
constant fileArchiverAbsoluteFile (line 21) | fileArchiverAbsoluteFile = "/absolute.txt"
constant fileArchiverAbsoluteDoubleStarFile (line 22) | fileArchiverAbsoluteDoubleStarFile = "/**/absolute.txt"
constant fileArchiverRelativeFile (line 23) | fileArchiverRelativeFile = "../../../relative.txt"
function TestGlobbedFilePath (line 26) | func TestGlobbedFilePath(t *testing.T) {
function TestExcludedFilePaths (line 346) | func TestExcludedFilePaths(t *testing.T) {
function Test_isExcluded (line 388) | func Test_isExcluded(t *testing.T) {
function TestCacheArchiverAddingUntrackedFiles (line 447) | func TestCacheArchiverAddingUntrackedFiles(t *testing.T) {
function TestCacheArchiverAddingUntrackedUnicodeFiles (line 464) | func TestCacheArchiverAddingUntrackedUnicodeFiles(t *testing.T) {
function TestCacheArchiverAddingFile (line 479) | func TestCacheArchiverAddingFile(t *testing.T) {
function TestFileArchiverToFailOnAbsoluteFile (line 492) | func TestFileArchiverToFailOnAbsoluteFile(t *testing.T) {
function TestFileArchiverToSucceedOnAbsoluteFileInProject (line 507) | func TestFileArchiverToSucceedOnAbsoluteFileInProject(t *testing.T) {
function TestFileArchiverToNotAddFilePathOutsideProjectDirectory (line 523) | func TestFileArchiverToNotAddFilePathOutsideProjectDirectory(t *testing....
function TestFileArchiverToFailOnRelativeFile (line 538) | func TestFileArchiverToFailOnRelativeFile(t *testing.T) {
function TestFileArchiver_pathIsInProject (line 553) | func TestFileArchiver_pathIsInProject(t *testing.T) {
function TestFileArchiverToAddNotExistingFile (line 623) | func TestFileArchiverToAddNotExistingFile(t *testing.T) {
function TestFileArchiverChanged (line 632) | func TestFileArchiverChanged(t *testing.T) {
function TestFileArchiverFileIsNotChanged (line 649) | func TestFileArchiverFileIsNotChanged(t *testing.T) {
function TestFileArchiverFileIsChanged (line 672) | func TestFileArchiverFileIsChanged(t *testing.T) {
function TestFileArchiverFileDoesNotExist (line 691) | func TestFileArchiverFileDoesNotExist(t *testing.T) {
function newLogHook (line 708) | func newLogHook(levels ...logrus.Level) logHook {
type logHook (line 712) | type logHook struct
method Levels (line 717) | func (s *logHook) Levels() []logrus.Level {
method Fire (line 721) | func (s *logHook) Fire(entry *logrus.Entry) error {
FILE: commands/helpers/health_check.go
type HealthCheckCommand (line 18) | type HealthCheckCommand struct
method Execute (line 28) | func (c *HealthCheckCommand) Execute(_ *cli.Context) {
function NewHealthCheckCommand (line 24) | func NewHealthCheckCommand() cli.Command {
function checkPort (line 86) | func checkPort(parentCtx context.Context, addr, port string, cancel func...
FILE: commands/helpers/health_check_integration_test.go
function TestServiceWaiterCommand_NoEnvironmentVariables (line 20) | func TestServiceWaiterCommand_NoEnvironmentVariables(t *testing.T) {
function TestHealthCheckCommand_Execute (line 39) | func TestHealthCheckCommand_Execute(t *testing.T) {
function TestHealthCheckCommand_WaitAll (line 134) | func TestHealthCheckCommand_WaitAll(t *testing.T) {
FILE: commands/helpers/helpers_archiver_test.go
function OnEachArchiver (line 14) | func OnEachArchiver(t *testing.T, f func(t *testing.T, format archive.Fo...
function OnEachZipArchiver (line 38) | func OnEachZipArchiver(t *testing.T, f func(t *testing.T), include ...st...
function OnEachZipExtractor (line 58) | func OnEachZipExtractor(t *testing.T, f func(t *testing.T), include ...s...
function hasArchiver (line 78) | func hasArchiver(name string, include []string) bool {
FILE: commands/helpers/helpers_cache_archiver_test.go
function NewCacheArchiverCommandForTest (line 13) | func NewCacheArchiverCommandForTest(file string, fileArchiverPaths []str...
function GetMatches (line 20) | func GetMatches(cmd *CacheArchiverCommand) map[string]os.FileInfo {
function SetCacheArchiverCommandMux (line 25) | func SetCacheArchiverCommandMux(cmd *CacheArchiverCommand, mux *blob.URL...
function SetCacheArchiverCommandClientTimeout (line 30) | func SetCacheArchiverCommandClientTimeout(cmd *CacheArchiverCommand, tim...
FILE: commands/helpers/internal/store/store.go
type Store (line 21) | type Store struct
method List (line 80) | func (s *Store) List() ([]string, error) {
method Add (line 112) | func (s *Store) Add(phrase string) error {
method Close (line 138) | func (s *Store) Close() {
function Open (line 29) | func Open(dir string) (*Store, error) {
function generateKey (line 150) | func generateKey() []byte {
function deriveEncryptionKey (line 156) | func deriveEncryptionKey(f *os.File, keyPath string) ([]byte, error) {
FILE: commands/helpers/internal/store/store_test.go
function TestOpen (line 15) | func TestOpen(t *testing.T) {
FILE: commands/helpers/internal/store/store_unix.go
function openFile (line 7) | func openFile(pathname string) (*os.File, error) {
FILE: commands/helpers/internal/store/store_unix_test.go
function TestOpenFilePermissions (line 14) | func TestOpenFilePermissions(t *testing.T) {
FILE: commands/helpers/internal/store/store_windows.go
function openFile (line 14) | func openFile(pathname string) (*os.File, error) {
FILE: commands/helpers/internal/store/store_windows_test.go
function TestDeleteOpenFile (line 15) | func TestDeleteOpenFile(t *testing.T) {
FILE: commands/helpers/meter/formatters.go
function FormatByteRate (line 10) | func FormatByteRate(b uint64, d time.Duration) string {
function FormatBytes (line 20) | func FormatBytes(b uint64) string {
function formatBytes (line 29) | func formatBytes(b uint64) (float64, byte) {
function LabelledRateFormat (line 49) | func LabelledRateFormat(w io.Writer, label string, totalSize int64) Upda...
FILE: commands/helpers/meter/formatters_test.go
function TestFormatByteRate (line 14) | func TestFormatByteRate(t *testing.T) {
function TestFormatBytes (line 60) | func TestFormatBytes(t *testing.T) {
function TestLabelledRateFormat (line 81) | func TestLabelledRateFormat(t *testing.T) {
FILE: commands/helpers/meter/meter.go
constant UnknownTotalSize (line 9) | UnknownTotalSize = 0
type TransferMeterCommand (line 11) | type TransferMeterCommand struct
type UpdateCallback (line 15) | type UpdateCallback
type meter (line 17) | type meter struct
method start (line 31) | func (m *meter) start(frequency time.Duration, fn UpdateCallback) {
method doClose (line 57) | func (m *meter) doClose() {
function newMeter (line 24) | func newMeter() *meter {
FILE: commands/helpers/meter/reader.go
type reader (line 9) | type reader struct
method Read (line 30) | func (m *reader) Read(p []byte) (int, error) {
method Close (line 37) | func (m *reader) Close() error {
function NewReader (line 15) | func NewReader(r io.ReadCloser, frequency time.Duration, fn UpdateCallba...
FILE: commands/helpers/meter/reader_test.go
function TestReader_New_NoUpdateFrequency (line 15) | func TestReader_New_NoUpdateFrequency(t *testing.T) {
function TestReader_New (line 23) | func TestReader_New(t *testing.T) {
FILE: commands/helpers/meter/writer.go
type writer (line 10) | type writer struct
method Write (line 35) | func (m *writer) Write(p []byte) (int, error) {
method WriteAt (line 42) | func (m *writer) WriteAt(p []byte, off int64) (int, error) {
method Close (line 51) | func (m *writer) Close() error {
function NewWriter (line 17) | func NewWriter(w io.WriteCloser, frequency time.Duration, fn UpdateCallb...
FILE: commands/helpers/meter/writer_test.go
type nopWriteCloser (line 18) | type nopWriteCloser struct
method Write (line 22) | func (wc *nopWriteCloser) Write(p []byte) (int, error) {
method Close (line 26) | func (wc *nopWriteCloser) Close() error {
function TestWriter_New_NoUpdateFrequency (line 30) | func TestWriter_New_NoUpdateFrequency(t *testing.T) {
function TestWriter_New (line 38) | func TestWriter_New(t *testing.T) {
function TestWriter_WriteAt_underlyingFile (line 64) | func TestWriter_WriteAt_underlyingFile(t *testing.T) {
FILE: commands/helpers/mocks.go
function newMockLogStreamProvider (line 13) | func newMockLogStreamProvider(t interface {
type mockLogStreamProvider (line 26) | type mockLogStreamProvider struct
method EXPECT (line 34) | func (_m *mockLogStreamProvider) EXPECT() *mockLogStreamProvider_Expec...
method Open (line 39) | func (_mock *mockLogStreamProvider) Open() (readSeekCloser, error) {
type mockLogStreamProvider_Expecter (line 30) | type mockLogStreamProvider_Expecter struct
method Open (line 72) | func (_e *mockLogStreamProvider_Expecter) Open() *mockLogStreamProvide...
type mockLogStreamProvider_Open_Call (line 67) | type mockLogStreamProvider_Open_Call struct
method Run (line 76) | func (_c *mockLogStreamProvider_Open_Call) Run(run func()) *mockLogStr...
method Return (line 83) | func (_c *mockLogStreamProvider_Open_Call) Return(readSeekCloserMoqPar...
method RunAndReturn (line 88) | func (_c *mockLogStreamProvider_Open_Call) RunAndReturn(run func() (re...
function newMockReadSeekCloser (line 95) | func newMockReadSeekCloser(t interface {
type mockReadSeekCloser (line 108) | type mockReadSeekCloser struct
method EXPECT (line 116) | func (_m *mockReadSeekCloser) EXPECT() *mockReadSeekCloser_Expecter {
method Close (line 121) | func (_mock *mockReadSeekCloser) Close() error {
method Read (line 165) | func (_mock *mockReadSeekCloser) Read(p []byte) (int, error) {
method Seek (line 225) | func (_mock *mockReadSeekCloser) Seek(offset int64, whence int) (int64...
type mockReadSeekCloser_Expecter (line 112) | type mockReadSeekCloser_Expecter struct
method Close (line 143) | func (_e *mockReadSeekCloser_Expecter) Close() *mockReadSeekCloser_Clo...
method Read (line 197) | func (_e *mockReadSeekCloser_Expecter) Read(p interface{}) *mockReadSe...
method Seek (line 258) | func (_e *mockReadSeekCloser_Expecter) Seek(offset interface{}, whence...
type mockReadSeekCloser_Close_Call (line 138) | type mockReadSeekCloser_Close_Call struct
method Run (line 147) | func (_c *mockReadSeekCloser_Close_Call) Run(run func()) *mockReadSeek...
method Return (line 154) | func (_c *mockReadSeekCloser_Close_Call) Return(err error) *mockReadSe...
method RunAndReturn (line 159) | func (_c *mockReadSeekCloser_Close_Call) RunAndReturn(run func() error...
type mockReadSeekCloser_Read_Call (line 191) | type mockReadSeekCloser_Read_Call struct
method Run (line 201) | func (_c *mockReadSeekCloser_Read_Call) Run(run func(p []byte)) *mockR...
method Return (line 214) | func (_c *mockReadSeekCloser_Read_Call) Return(n int, err error) *mock...
method RunAndReturn (line 219) | func (_c *mockReadSeekCloser_Read_Call) RunAndReturn(run func(p []byte...
type mockReadSeekCloser_Seek_Call (line 251) | type mockReadSeekCloser_Seek_Call struct
method Run (line 262) | func (_c *mockReadSeekCloser_Seek_Call) Run(run func(offset int64, whe...
method Return (line 280) | func (_c *mockReadSeekCloser_Seek_Call) Return(n int64, err error) *mo...
method RunAndReturn (line 285) | func (_c *mockReadSeekCloser_Seek_Call) RunAndReturn(run func(offset i...
function newMockLogOutputWriter (line 292) | func newMockLogOutputWriter(t interface {
type mockLogOutputWriter (line 305) | type mockLogOutputWriter struct
method EXPECT (line 313) | func (_m *mockLogOutputWriter) EXPECT() *mockLogOutputWriter_Expecter {
method Write (line 318) | func (_mock *mockLogOutputWriter) Write(s string) {
type mockLogOutputWriter_Expecter (line 309) | type mockLogOutputWriter_Expecter struct
method Write (line 330) | func (_e *mockLogOutputWriter_Expecter) Write(s interface{}) *mockLogO...
type mockLogOutputWriter_Write_Call (line 324) | type mockLogOutputWriter_Write_Call struct
method Run (line 334) | func (_c *mockLogOutputWriter_Write_Call) Run(run func(s string)) *moc...
method Return (line 347) | func (_c *mockLogOutputWriter_Write_Call) Return() *mockLogOutputWrite...
method RunAndReturn (line 352) | func (_c *mockLogOutputWriter_Write_Call) RunAndReturn(run func(s stri...
FILE: commands/helpers/proxy_exec.go
type ProxyExecCommand (line 26) | type ProxyExecCommand struct
method Execute (line 73) | func (c *ProxyExecCommand) Execute(cliContext *cli.Context) {
function NewProxyExecCommand (line 31) | func NewProxyExecCommand() cli.Command {
type Proxy (line 39) | type Proxy struct
method Stdout (line 60) | func (p *Proxy) Stdout() io.Writer {
method Stderr (line 64) | func (p *Proxy) Stderr() io.Writer {
method Close (line 68) | func (p *Proxy) Close() error {
function NewProxy (line 44) | func NewProxy(dir string, stdout, stderr io.Writer) (*Proxy, error) {
function bootstrap (line 113) | func bootstrap(dst string) error {
FILE: commands/helpers/proxy_exec_test.go
function newProxyExecTestApp (line 18) | func newProxyExecTestApp() *cli.App {
function TestProxyExec (line 32) | func TestProxyExec(t *testing.T) {
function TestProxyExecBootstrap (line 51) | func TestProxyExecBootstrap(t *testing.T) {
function captureOutput (line 70) | func captureOutput(w io.Writer) func() {
FILE: commands/helpers/read_logs.go
constant defaultCheckFileExistsInterval (line 17) | defaultCheckFileExistsInterval = time.Second
constant pollFileContentsTimeout (line 18) | pollFileContentsTimeout = 500 * time.Millisecond
constant outputLogFileNotExistsExitCode (line 19) | outputLogFileNotExistsExitCode = 100
type logStreamProvider (line 27) | type logStreamProvider interface
type readSeekCloser (line 31) | type readSeekCloser interface
type checkedFile (line 41) | type checkedFile struct
method Read (line 45) | func (c *checkedFile) Read(p []byte) (int, error) {
type fileLogStreamProvider (line 57) | type fileLogStreamProvider struct
method Open (line 62) | func (p *fileLogStreamProvider) Open() (readSeekCloser, error) {
type logOutputWriter (line 81) | type logOutputWriter interface
type streamLogOutputWriter (line 85) | type streamLogOutputWriter struct
method Write (line 89) | func (s *streamLogOutputWriter) Write(data string) {
type ReadLogsCommand (line 93) | type ReadLogsCommand struct
method Execute (line 120) | func (c *ReadLogsCommand) Execute(*cli.Context) {
method execute (line 131) | func (c *ReadLogsCommand) execute() error {
method readLogs (line 140) | func (c *ReadLogsCommand) readLogs() error {
method openFileReader (line 175) | func (c *ReadLogsCommand) openFileReader() (readSeekCloser, *bufio.Rea...
function NewReadLogsCommand (line 103) | func NewReadLogsCommand() cli.Command {
function newReadLogsCommand (line 111) | func newReadLogsCommand() *ReadLogsCommand {
FILE: commands/helpers/read_logs_test.go
function TestNewReadLogsCommandFileNotExist (line 20) | func TestNewReadLogsCommandFileNotExist(t *testing.T) {
function TestNewReadLogsCommandNoAttempts (line 31) | func TestNewReadLogsCommandNoAttempts(t *testing.T) {
function TestNewReadLogsCommandFileSeekToInvalidLocation (line 39) | func TestNewReadLogsCommandFileSeekToInvalidLocation(t *testing.T) {
function setupTestFile (line 53) | func setupTestFile(t *testing.T) (*os.File, func()) {
function TestNewReadLogsCommandFileLogStreamProviderCorrect (line 65) | func TestNewReadLogsCommandFileLogStreamProviderCorrect(t *testing.T) {
function TestNewReadLogsCommandLines (line 82) | func TestNewReadLogsCommandLines(t *testing.T) {
function appendToFile (line 108) | func appendToFile(t *testing.T, f *os.File, lines []string) {
function setupMockLogOutputWriterFromLines (line 117) | func setupMockLogOutputWriterFromLines(lw *mockLogOutputWriter, lines []...
function TestNewReadLogsCommandWriteLinesWithDelay (line 135) | func TestNewReadLogsCommandWriteLinesWithDelay(t *testing.T) {
function TestSplitLinesAccordingToBufferSize (line 170) | func TestSplitLinesAccordingToBufferSize(t *testing.T) {
function TestSeek (line 208) | func TestSeek(t *testing.T) {
FILE: commands/helpers/retry_helper.go
type storageErrorResponse (line 20) | type storageErrorResponse struct
method isValid (line 26) | func (ser *storageErrorResponse) isValid() bool {
method String (line 30) | func (ser *storageErrorResponse) String() string {
type retryHelper (line 47) | type retryHelper struct
method doRetry (line 68) | func (r *retryHelper) doRetry(handler func(int) error) error {
type retryableErr (line 56) | type retryableErr struct
method Unwrap (line 60) | func (e retryableErr) Unwrap() error {
method Error (line 64) | func (e retryableErr) Error() string {
function retryOnServerError (line 88) | func retryOnServerError(resp *http.Response) error {
FILE: commands/helpers/retry_helper_test.go
function TestDoRetry (line 16) | func TestDoRetry(t *testing.T) {
function TestRetryOnServerError (line 57) | func TestRetryOnServerError(t *testing.T) {
FILE: commands/helpers_register_test.go
function NewRegisterCommandForTest (line 22) | func NewRegisterCommandForTest(reader *bufio.Reader, network common.Netw...
function GetLogrusOutput (line 32) | func GetLogrusOutput(t *testing.T, hook *test.Hook) string {
function PrepareConfigurationTemplateFile (line 44) | func PrepareConfigurationTemplateFile(t *testing.T, content string) (str...
FILE: commands/internal/configfile/configfile.go
type ConfigFile (line 15) | type ConfigFile struct
method Load (line 40) | func (cf *ConfigFile) Load(opts ...LoadOption) error {
method SystemID (line 101) | func (cf *ConfigFile) SystemID() string {
method Save (line 105) | func (cf *ConfigFile) Save() error {
method Config (line 122) | func (cf *ConfigFile) Config() *common.Config {
method AccessCollector (line 129) | func (cf *ConfigFile) AccessCollector() prometheus.Collector {
function New (line 24) | func New(pathname string, opts ...Option) *ConfigFile {
FILE: commands/internal/configfile/configfile_test.go
function Test_loadConfig (line 17) | func Test_loadConfig(t *testing.T) {
FILE: commands/internal/configfile/metrics.go
type configAccessCollector (line 9) | type configAccessCollector struct
method Describe (line 37) | func (c *configAccessCollector) Describe(descs chan<- *prometheus.Desc) {
method Collect (line 44) | func (c *configAccessCollector) Collect(metrics chan<- prometheus.Metr...
function newConfigAccessCollector (line 16) | func newConfigAccessCollector() *configAccessCollector {
FILE: commands/internal/configfile/options.go
type options (line 5) | type options struct
type Option (line 11) | type Option
function WithAccessCollector (line 13) | func WithAccessCollector() Option {
function WithExistingConfig (line 19) | func WithExistingConfig(config *common.Config) Option {
function WithSystemID (line 25) | func WithSystemID(systemID string) Option {
type loadOptions (line 31) | type loadOptions struct
type LoadOption (line 35) | type LoadOption
function WithMutateOnLoad (line 37) | func WithMutateOnLoad(fn func(cfg *common.Config) error) LoadOption {
FILE: commands/internal/configfile/system_id_state.go
type systemIDState (line 19) | type systemIDState struct
method GetSystemID (line 55) | func (s *systemIDState) GetSystemID() string {
method loadFromFile (line 59) | func (s *systemIDState) loadFromFile(filePath string) error {
method saveConfig (line 85) | func (s *systemIDState) saveConfig(filePath string) error {
method ensureSystemID (line 101) | func (s *systemIDState) ensureSystemID() error {
function newSystemIDState (line 23) | func newSystemIDState(filePath string) (*systemIDState, error) {
function GenerateUniqueSystemID (line 117) | func GenerateUniqueSystemID() (string, error) {
function generateRandomSystemID (line 132) | func generateRandomSystemID(idLength int) (string, error) {
FILE: commands/internal/configfile/system_id_state_test.go
function TestSystemIDStateLoadFromFile (line 14) | func TestSystemIDStateLoadFromFile(t *testing.T) {
function TestSystemIDStateLoadFromMissingFile (line 68) | func TestSystemIDStateLoadFromMissingFile(t *testing.T) {
function TestSaveSystemIDState (line 79) | func TestSaveSystemIDState(t *testing.T) {
function TestSaveSystemIDStateToNonFile (line 95) | func TestSaveSystemIDStateToNonFile(t *testing.T) {
FILE: commands/internal/configfile/validation.go
function init (line 15) | func init() {
function validate (line 42) | func validate(config *common.Config) error {
FILE: commands/list.go
type ListCommand (line 11) | type ListCommand struct
method Execute (line 19) | func (c *ListCommand) Execute(context *cli.Context) {
function NewListCommand (line 15) | func NewListCommand() cli.Command {
FILE: commands/mocks.go
function newMockRunAtTask (line 13) | func newMockRunAtTask(t interface {
type mockRunAtTask (line 26) | type mockRunAtTask struct
method EXPECT (line 34) | func (_m *mockRunAtTask) EXPECT() *mockRunAtTask_Expecter {
method cancel (line 39) | func (_mock *mockRunAtTask) cancel() {
type mockRunAtTask_Expecter (line 30) | type mockRunAtTask_Expecter struct
method cancel (line 50) | func (_e *mockRunAtTask_Expecter) cancel() *mockRunAtTask_cancel_Call {
type mockRunAtTask_cancel_Call (line 45) | type mockRunAtTask_cancel_Call struct
method Run (line 54) | func (_c *mockRunAtTask_cancel_Call) Run(run func()) *mockRunAtTask_ca...
method Return (line 61) | func (_c *mockRunAtTask_cancel_Call) Return() *mockRunAtTask_cancel_Ca...
method RunAndReturn (line 66) | func (_c *mockRunAtTask_cancel_Call) RunAndReturn(run func()) *mockRun...
FILE: commands/multi.go
constant workerSlotOperationStarted (line 46) | workerSlotOperationStarted = "started"
constant workerSlotOperationStopped (line 47) | workerSlotOperationStopped = "stopped"
constant workerProcessingFailureOther (line 51) | workerProcessingFailureOther = "other"
constant workerProcessingFailureNoFreeExecutor (line 52) | workerProcessingFailureNoFreeExecutor = "no_free_executor"
constant workerProcessingFailureJobFailure (line 53) | workerProcessingFailureJobFailure = "job_failure"
type runAtTask (line 72) | type runAtTask interface
type runAtTimerTask (line 76) | type runAtTimerTask struct
method cancel (line 80) | func (t *runAtTimerTask) cancel() {
function runAt (line 84) | func runAt(t time.Time, f func()) runAtTask {
type RunCommand (line 92) | type RunCommand struct
method log (line 178) | func (mr *RunCommand) log() *logrus.Entry {
method Start (line 195) | func (mr *RunCommand) Start(_ service.Service) error {
method setupInternalMetrics (line 256) | func (mr *RunCommand) setupInternalMetrics() {
method resetRunnerTokens (line 317) | func (mr *RunCommand) resetRunnerTokens() {
method resetOneRunnerToken (line 325) | func (mr *RunCommand) resetOneRunnerToken() bool {
method reloadConfig (line 383) | func (mr *RunCommand) reloadConfig() error {
method updateLoggingConfiguration (line 436) | func (mr *RunCommand) updateLoggingConfiguration() error {
method reloadUsageLogger (line 474) | func (mr *RunCommand) reloadUsageLogger() {
method run (line 530) | func (mr *RunCommand) run() {
method initUsedExecutorProviders (line 576) | func (mr *RunCommand) initUsedExecutorProviders() {
method shutdownUsedExecutorProviders (line 587) | func (mr *RunCommand) shutdownUsedExecutorProviders() {
method setupMetricsAndDebugServer (line 635) | func (mr *RunCommand) setupMetricsAndDebugServer() {
method serveMetrics (line 672) | func (mr *RunCommand) serveMetrics(mux *http.ServeMux) {
method serveDebugData (line 722) | func (mr *RunCommand) serveDebugData(mux *http.ServeMux) {
method servePprof (line 726) | func (mr *RunCommand) servePprof(mux *http.ServeMux) {
method setupSessionServer (line 752) | func (mr *RunCommand) setupSessionServer() {
method feedRunners (line 802) | func (mr *RunCommand) feedRunners(runners chan *common.RunnerConfig) {
method feedRunner (line 827) | func (mr *RunCommand) feedRunner(runner *common.RunnerConfig, runners ...
method startWorkers (line 840) | func (mr *RunCommand) startWorkers(startWorker chan int, stopWorker ch...
method processRunners (line 850) | func (mr *RunCommand) processRunners(id int, stopWorker chan bool, run...
method processRunner (line 909) | func (mr *RunCommand) processRunner(id int, runner *common.RunnerConfi...
method processBuildOnRunner (line 958) | func (mr *RunCommand) processBuildOnRunner(
method traceOutcome (line 1047) | func (mr *RunCommand) traceOutcome(trace common.JobTrace, err error) {
method usageLoggerStore (line 1069) | func (mr *RunCommand) usageLoggerStore(record usage_log.Record) {
method createSession (line 1086) | func (mr *RunCommand) createSession(provider common.ExecutorProvider) ...
method requestJob (line 1113) | func (mr *RunCommand) requestJob(
method executorSupportsNativeSteps (line 1174) | func (mr *RunCommand) executorSupportsNativeSteps(runnerConfig *common...
method doJobRequest (line 1181) | func (mr *RunCommand) doJobRequest(
method requeueRunner (line 1207) | func (mr *RunCommand) requeueRunner(runner *common.RunnerConfig, runne...
method updateWorkers (line 1225) | func (mr *RunCommand) updateWorkers(workerIndex *int, startWorker chan...
method stopWorkers (line 1265) | func (mr *RunCommand) stopWorkers(stopWorker chan bool) {
method updateConfig (line 1273) | func (mr *RunCommand) updateConfig() os.Signal {
method checkConfig (line 1294) | func (mr *RunCommand) checkConfig() (err error) {
method Stop (line 1321) | func (mr *RunCommand) Stop(_ service.Service) error {
method interruptRun (line 1374) | func (mr *RunCommand) interruptRun() {
method handleGracefulShutdown (line 1390) | func (mr *RunCommand) handleGracefulShutdown() error {
method handleForcefulShutdown (line 1430) | func (mr *RunCommand) handleForcefulShutdown() error {
method abortAllBuilds (line 1457) | func (mr *RunCommand) abortAllBuilds() {
method usageLoggerClose (line 1466) | func (mr *RunCommand) usageLoggerClose() {
method Execute (line 1474) | func (mr *RunCommand) Execute(_ *cli.Context) {
method runWait (line 1520) | func (mr *RunCommand) runWait() {
method Describe (line 1530) | func (mr *RunCommand) Describe(ch chan<- *prometheus.Desc) {
method Collect (line 1542) | func (mr *RunCommand) Collect(ch chan<- prometheus.Metric) {
method checkConfigConcurrency (line 1569) | func (mr *RunCommand) checkConfigConcurrency(config *common.Config) {
function NewRunCommand (line 160) | func NewRunCommand(n common.Network, apiRequestsCollector prometheus.Col...
function nextRunnerToReset (line 295) | func nextRunnerToReset(config *common.Config) (*common.RunnerConfig, tim...
function listenAddress (line 616) | func listenAddress(cfg *common.Config, address string) (string, error) {
function restrictHTTPMethods (line 736) | func restrictHTTPMethods(handler http.Handler, methods ...string) http.H...
function loggerAndFailureTypeFromError (line 889) | func loggerAndFailureTypeFromError(logger logrus.FieldLogger, err error)...
function logTerminationError (line 1063) | func logTerminationError(logger logrus.FieldLogger, name string, err err...
FILE: commands/multi_test.go
function TestProcessRunner_BuildLimit (line 30) | func TestProcessRunner_BuildLimit(t *testing.T) {
function TestRunCommand_doJobRequest (line 133) | func TestRunCommand_doJobRequest(t *testing.T) {
function TestRunCommand_nextRunnerToReset (line 210) | func TestRunCommand_nextRunnerToReset(t *testing.T) {
type runAtCall (line 318) | type runAtCall struct
type resetTokenRequest (line 324) | type resetTokenRequest struct
type resetRunnerTokenTestController (line 329) | type resetRunnerTokenTestController struct
method runAt (line 374) | func (c *resetRunnerTokenTestController) runAt(time time.Time, callbac...
method mockResetToken (line 392) | func (c *resetRunnerTokenTestController) mockResetToken(runnerID int64...
method mockConfigSave (line 417) | func (c *resetRunnerTokenTestController) mockConfigSave() {
method awaitRunAtCall (line 427) | func (c *resetRunnerTokenTestController) awaitRunAtCall(t *testing.T) ...
method awaitResetTokenRequest (line 439) | func (c *resetRunnerTokenTestController) awaitResetTokenRequest(t *tes...
method handleRunAtCall (line 450) | func (c *resetRunnerTokenTestController) handleRunAtCall(t *testing.T,...
method handleResetTokenRequest (line 461) | func (c *resetRunnerTokenTestController) handleResetTokenRequest(t *te...
method pushToWaitGroup (line 470) | func (c *resetRunnerTokenTestController) pushToWaitGroup(callback func...
method stop (line 479) | func (c *resetRunnerTokenTestController) stop() {
method reloadConfig (line 486) | func (c *resetRunnerTokenTestController) reloadConfig() {
method setRunners (line 494) | func (c *resetRunnerTokenTestController) setRunners(runners []common.R...
method wait (line 520) | func (c *resetRunnerTokenTestController) wait() {
method finish (line 525) | func (c *resetRunnerTokenTestController) finish() {
method assertConfigSaveNotCalled (line 533) | func (c *resetRunnerTokenTestController) assertConfigSaveNotCalled(t *...
method assertResetTokenNotCalled (line 541) | func (c *resetRunnerTokenTestController) assertResetTokenNotCalled(t *...
type runAtTaskMock (line 338) | type runAtTaskMock struct
method cancel (line 343) | func (t *runAtTaskMock) cancel() {
function newResetRunnerTokenTestController (line 347) | func newResetRunnerTokenTestController(t *testing.T) *resetRunnerTokenTe...
type resetRunnerTokenTestCase (line 545) | type resetRunnerTokenTestCase struct
function TestRunCommand_resetOneRunnerToken (line 550) | func TestRunCommand_resetOneRunnerToken(t *testing.T) {
function TestRunCommand_resetRunnerTokens (line 920) | func TestRunCommand_resetRunnerTokens(t *testing.T) {
function TestRunCommand_configReloadingRegression (line 1056) | func TestRunCommand_configReloadingRegression(t *testing.T) {
function TestRunCommand_configReloading (line 1112) | func TestRunCommand_configReloading(t *testing.T) {
function TestListenAddress (line 1190) | func TestListenAddress(t *testing.T) {
function TestRequestBottleneckWarning (line 1238) | func TestRequestBottleneckWarning(t *testing.T) {
function TestRunCommand_requestJob_HandlesUpdateAbort (line 1419) | func TestRunCommand_requestJob_HandlesUpdateAbort(t *testing.T) {
function TestRunCommand_requestJob_HandlesCancelRequested (line 1459) | func TestRunCommand_requestJob_HandlesCancelRequested(t *testing.T) {
function TestRunCommand_requestJob_ContinuesWhenUpdateSucceeds (line 1499) | func TestRunCommand_requestJob_ContinuesWhenUpdateSucceeds(t *testing.T) {
function TestRunCommand_requestJob_ReturnsNilWhenNoJob (line 1538) | func TestRunCommand_requestJob_ReturnsNilWhenNoJob(t *testing.T) {
FILE: commands/register.go
type configTemplate (line 27) | type configTemplate struct
method Enabled (line 33) | func (c *configTemplate) Enabled() bool {
method MergeTo (line 37) | func (c *configTemplate) MergeTo(config *common.RunnerConfig) error {
method loadConfigTemplate (line 56) | func (c *configTemplate) loadConfigTemplate() error {
type RegisterCommand (line 69) | type RegisterCommand struct
method askOnce (line 109) | func (s *RegisterCommand) askOnce(prompt string, result *string, allow...
method ask (line 140) | func (s *RegisterCommand) ask(key, prompt string, allowEmptyOptional ....
method askExecutor (line 159) | func (s *RegisterCommand) askExecutor() {
method askDocker (line 180) | func (s *RegisterCommand) askDocker() {
method askDockerWindows (line 194) | func (s *RegisterCommand) askDockerWindows() {
method askBasicDocker (line 207) | func (s *RegisterCommand) askBasicDocker(exampleHelperImage string) {
method askParallels (line 218) | func (s *RegisterCommand) askParallels() {
method askVirtualBox (line 222) | func (s *RegisterCommand) askVirtualBox() {
method askSSHServer (line 226) | func (s *RegisterCommand) askSSHServer() {
method askSSHLogin (line 231) | func (s *RegisterCommand) askSSHLogin() {
method verifyRunner (line 245) | func (s *RegisterCommand) verifyRunner() {
method askRunner (line 259) | func (s *RegisterCommand) askRunner(cfg *common.Config) {
method doLegacyRegisterRunner (line 292) | func (s *RegisterCommand) doLegacyRegisterRunner() {
method askExecutorOptions (line 335) | func (s *RegisterCommand) askExecutorOptions() {
method Execute (line 425) | func (s *RegisterCommand) Execute(context *cli.Context) {
method unregisterRunnerFunc (line 485) | func (s *RegisterCommand) unregisterRunnerFunc() func() {
method unregisterRunner (line 508) | func (s *RegisterCommand) unregisterRunner() {
method mergeTemplate (line 516) | func (s *RegisterCommand) mergeTemplate() {
method tokenIsRunnerToken (line 529) | func (s *RegisterCommand) tokenIsRunnerToken() bool {
method ensureServerConfigArgsEmpty (line 533) | func (s *RegisterCommand) ensureServerConfigArgsEmpty() {
function NewRegisterCommand (line 94) | func NewRegisterCommand(n common.Network, executorProviders executors.Pr...
type AccessLevel (line 98) | type AccessLevel
constant NotProtected (line 101) | NotProtected AccessLevel = "not_protected"
constant RefProtected (line 102) | RefProtected AccessLevel = "ref_protected"
constant defaultDockerWindowCacheDir (line 106) | defaultDockerWindowCacheDir = "c:\\cache"
function setFipsHelperImageFlavor (line 413) | func setFipsHelperImageFlavor(cfg *common.RunnerConfig, fipsEnabled func...
function getHostname (line 562) | func getHostname() string {
function newRegisterCommand (line 567) | func newRegisterCommand(n common.Network, executorProviders executors.Pr...
function accessLevelValid (line 589) | func accessLevelValid(levels []AccessLevel, givenLevel AccessLevel) bool {
FILE: commands/register_integration_test.go
constant osTypeWindows (line 38) | osTypeWindows = "windows"
type kv (line 42) | type kv struct
function TestAccessLevelSetting (line 46) | func TestAccessLevelSetting(t *testing.T) {
function TestAskRunnerOverrideDefaultsForExecutors (line 101) | func TestAskRunnerOverrideDefaultsForExecutors(t *testing.T) {
function isValidToken (line 121) | func isValidToken(systemID string) bool {
function TestAskRunnerUsingRunnerTokenOverrideDefaults (line 126) | func TestAskRunnerUsingRunnerTokenOverrideDefaults(t *testing.T) {
function TestAskRunnerUsingRunnerTokenOnRegistrationTokenOverridingForbiddenDefaults (line 229) | func TestAskRunnerUsingRunnerTokenOnRegistrationTokenOverridingForbidden...
function TestAskRunnerUsingRunnerTokenOverridingForbiddenDefaults (line 284) | func TestAskRunnerUsingRunnerTokenOverridingForbiddenDefaults(t *testing...
function testRegisterCommandRun (line 345) | func testRegisterCommandRun(
function contains (line 421) | func contains(args []string, s string) bool {
function testAskRunnerOverrideDefaultsForExecutor (line 430) | func testAskRunnerOverrideDefaultsForExecutor(t *testing.T, executor str...
function assertExecutorDefaultValues (line 601) | func assertExecutorDefaultValues(t *testing.T, executor string, s *comma...
function assertDefaultSSHLogin (line 642) | func assertDefaultSSHLogin(t *testing.T, sshCfg *common.SshConfig) {
function assertDefaultSSHServer (line 649) | func assertDefaultSSHServer(t *testing.T, sshCfg *common.SshConfig) {
function assertExecutorOverridenValues (line 655) | func assertExecutorOverridenValues(t *testing.T, executor string, s *com...
function assertOverridenSSHLogin (line 696) | func assertOverridenSSHLogin(t *testing.T, sshCfg *common.SshConfig) {
function assertOverridenSSHServer (line 703) | func assertOverridenSSHServer(t *testing.T, sshCfg *common.SshConfig) {
function executorAnswers (line 709) | func executorAnswers(t *testing.T, executor string) []string {
function executorOverrideAnswers (line 729) | func executorOverrideAnswers(t *testing.T, executor string) []string {
function executorCmdLineArgs (line 749) | func executorCmdLineArgs(t *testing.T, executor string) []string {
function TestExecute_MergeConfigTemplate (line 779) | func TestExecute_MergeConfigTemplate(t *testing.T) {
function TestUnregisterOnFailure (line 933) | func TestUnregisterOnFailure(t *testing.T) {
function useTempConfigFile (line 1052) | func useTempConfigFile(t *testing.T, arguments []string) ([]string, func...
function TestNameIsNotRequestedOnServerFailureRegisterCommandWithAuthToken (line 1062) | func TestNameIsNotRequestedOnServerFailureRegisterCommandWithAuthToken(t...
function TestRegisterCommand (line 1108) | func TestRegisterCommand(t *testing.T) {
function TestRegisterWithAuthenticationTokenTwice (line 1296) | func TestRegisterWithAuthenticationTokenTwice(t *testing.T) {
function TestRegisterTokenExpiresAt (line 1322) | func TestRegisterTokenExpiresAt(t *testing.T) {
function testExecutorProviders (line 1390) | func testExecutorProviders() *executors.ProviderRegistry {
FILE: commands/register_test.go
function setupDockerRegisterCommand (line 19) | func setupDockerRegisterCommand(dockerConfig *common.DockerConfig) *Regi...
function TestRegisterDefaultDockerCacheVolume (line 33) | func TestRegisterDefaultDockerCacheVolume(t *testing.T) {
function TestDoNotRegisterDefaultDockerCacheVolumeWhenDisableCache (line 44) | func TestDoNotRegisterDefaultDockerCacheVolumeWhenDisableCache(t *testin...
function TestRegisterCustomDockerCacheVolume (line 55) | func TestRegisterCustomDockerCacheVolume(t *testing.T) {
function TestRegisterCustomMappedDockerCacheVolume (line 66) | func TestRegisterCustomMappedDockerCacheVolume(t *testing.T) {
function TestConfigTemplate_Enabled (line 77) | func TestConfigTemplate_Enabled(t *testing.T) {
function TestConfigTemplate_MergeTo (line 135) | func TestConfigTemplate_MergeTo(t *testing.T) {
function TestSetFipsHelperImageFlavor (line 222) | func TestSetFipsHelperImageFlavor(t *testing.T) {
FILE: commands/register_windows_test.go
function TestRegisterDefaultWindowsDockerCacheVolume (line 18) | func TestRegisterDefaultWindowsDockerCacheVolume(t *testing.T) {
function TestDefaultWindowsShell (line 53) | func TestDefaultWindowsShell(t *testing.T) {
FILE: commands/reset_token.go
type ResetTokenCommand (line 13) | type ResetTokenCommand struct
method resetAllRunnerTokens (line 31) | func (c *ResetTokenCommand) resetAllRunnerTokens(cfg *common.Config) {
method resetSingleRunnerToken (line 40) | func (c *ResetTokenCommand) resetSingleRunnerToken(cfg *common.Config)...
method getRunnerCredentials (line 63) | func (c *ResetTokenCommand) getRunnerCredentials(cfg *common.Config) (...
method Execute (line 81) | func (c *ResetTokenCommand) Execute(_context *cli.Context) {
function NewResetTokenCommand (line 25) | func NewResetTokenCommand(n common.Network) cli.Command {
FILE: commands/service.go
constant defaultServiceName (line 20) | defaultServiceName = "gitlab-runner"
constant defaultDescription (line 21) | defaultDescription = "GitLab Runner"
type NullService (line 24) | type NullService struct
method Start (line 26) | func (n *NullService) Start(s service.Service) error {
method Stop (line 30) | func (n *NullService) Stop(s service.Service) error {
function runServiceInstall (line 34) | func runServiceInstall(s service.Service, c *cli.Context) error {
function runServiceStatus (line 58) | func runServiceStatus(displayName string, s service.Service) {
function getUserHomeDir (line 82) | func getUserHomeDir(username string) string {
function GetServiceArguments (line 90) | func GetServiceArguments(c *cli.Context) (arguments []string) {
function createServiceConfig (line 114) | func createServiceConfig(c *cli.Context) *service.Config {
function RunServiceControl (line 128) | func RunServiceControl(c *cli.Context) {
function GetFlags (line 154) | func GetFlags() []cli.Flag {
function GetInstallFlags (line 173) | func GetInstallFlags() []cli.Flag {
function NewServiceCommands (line 223) | func NewServiceCommands() []cli.Command {
function applyStrArg (line 239) | func applyStrArg(c *cli.Context, argname string, rootonly bool, apply fu...
FILE: commands/service_darwin.go
function setupOSServiceConfig (line 10) | func setupOSServiceConfig(c *cli.Context, config *service.Config) {
FILE: commands/service_integration_test.go
function newTestGetServiceArgumentsCommand (line 18) | func newTestGetServiceArgumentsCommand(t *testing.T, expectedArgs []stri...
function testServiceCommandRun (line 28) | func testServiceCommandRun(command func(*cli.Context), args ...string) {
type getServiceArgumentsTestCase (line 42) | type getServiceArgumentsTestCase struct
function TestGetServiceArguments (line 47) | func TestGetServiceArguments(t *testing.T) {
FILE: commands/service_linux.go
function setupOSServiceConfig (line 9) | func setupOSServiceConfig(c *cli.Context, config *service.Config) {
FILE: commands/service_portable.go
function setupOSServiceConfig (line 10) | func setupOSServiceConfig(c *cli.Context, config *service.Config) {
FILE: commands/service_windows.go
function setupOSServiceConfig (line 8) | func setupOSServiceConfig(c *cli.Context, config *service.Config) {
FILE: commands/single.go
type RunSingleCommand (line 20) | type RunSingleCommand struct
method postBuild (line 77) | func (r *RunSingleCommand) postBuild() {
method processBuild (line 84) | func (r *RunSingleCommand) processBuild(data common.ExecutorData, abor...
method checkFinishedConditions (line 161) | func (r *RunSingleCommand) checkFinishedConditions() {
method HandleArgs (line 172) | func (r *RunSingleCommand) HandleArgs() {
method Execute (line 195) | func (r *RunSingleCommand) Execute(c *cli.Context) {
method getShutdownTimeout (line 256) | func (r *RunSingleCommand) getShutdownTimeout() time.Duration {
function waitForInterrupts (line 36) | func waitForInterrupts(
function NewRunSingleCommand (line 264) | func NewRunSingleCommand(n common.Network, executorProviders executors.P...
FILE: commands/single_test.go
function init (line 23) | func init() {
type jobSimulation (line 31) | type jobSimulation
function TestSingleRunnerSigquit (line 33) | func TestSingleRunnerSigquit(t *testing.T) {
function TestSingleRunnerMaxBuilds (line 51) | func TestSingleRunnerMaxBuilds(t *testing.T) {
function TestConfigFile (line 59) | func TestConfigFile(t *testing.T) {
function newRunSingleCommand (line 87) | func newRunSingleCommand(executorName string, network common.Network) *R...
function mockingExecutionStack (line 106) | func mockingExecutionStack(
function TestRunSingleCommand_processBuild_HandlesUpdateAbort (line 156) | func TestRunSingleCommand_processBuild_HandlesUpdateAbort(t *testing.T) {
function TestRunSingleCommand_processBuild_HandlesCancelRequested (line 196) | func TestRunSingleCommand_processBuild_HandlesCancelRequested(t *testing...
FILE: commands/steps/steps.go
constant SubCommandName (line 31) | SubCommandName = "steps"
function readyMessage (line 34) | func readyMessage(sockPath string) string {
type IOStreams (line 38) | type IOStreams struct
function Bootstrap (line 44) | func Bootstrap(destination string) error {
function copyDir (line 77) | func copyDir(src, dst string) error {
function copyFile (line 110) | func copyFile(src, dst string, mode os.FileMode) error {
function Serve (line 135) | func Serve(ctx context.Context, sockPath string, ioStreams IOStreams, cm...
function Proxy (line 216) | func Proxy(sockPath string, io IOStreams) error {
function NewCommand (line 226) | func NewCommand() cli.Command {
FILE: commands/steps/steps_test.go
constant waitDeadline (line 33) | waitDeadline = 5 * time.Second
constant waitTick (line 34) | waitTick = 100 * time.Millisecond
constant externalMode (line 36) | externalMode = "external-mode"
constant appMode (line 37) | appMode = "app-mode"
constant dontSleep (line 39) | dontSleep = "0"
constant sleepSomeTime (line 40) | sleepSomeTime = "2"
constant sleepReallyLong (line 41) | sleepReallyLong = "300"
function TestMain (line 44) | func TestMain(m *testing.M) {
function TestBootstrap (line 79) | func TestBootstrap(t *testing.T) {
function TestServe (line 88) | func TestServe(t *testing.T) {
function TestProxy (line 252) | func TestProxy(t *testing.T) {
function TestCli (line 344) | func TestCli(t *testing.T) {
function beCliApp (line 400) | func beCliApp(args ...string) int {
function beExternalBinary (line 429) | func beExternalBinary(args ...string) int {
function testIOStreams (line 464) | func testIOStreams() (steps.IOStreams, *io.PipeWriter, *syncBuffer, *syn...
type osErrs (line 476) | type osErrs
method Get (line 478) | func (oe osErrs) Get(t *testing.T, symbolicName string) string {
function shortTempDir (line 508) | func shortTempDir(t *testing.T) string {
function stepsClient (line 518) | func stepsClient(t *testing.T, sockPath string) proto.StepRunnerClient {
function echoServer (line 524) | func echoServer(t *testing.T) string {
type syncBuffer (line 553) | type syncBuffer struct
method Write (line 558) | func (sb *syncBuffer) Write(p []byte) (int, error) {
method String (line 566) | func (sb *syncBuffer) String() string {
FILE: commands/tracing.go
constant tracerName (line 30) | tracerName = "gitlab-ci-runner"
constant spanNameJobExecution (line 31) | spanNameJobExecution = "job_execution"
constant spanAttrJobID (line 33) | spanAttrJobID attribute.Key = "ci.job.id"
constant spanAttrProjectID (line 34) | spanAttrProjectID attribute.Key = "ci.project.id"
constant spanAttrPipelineID (line 35) | spanAttrPipelineID attribute.Key = "ci.pipeline.id"
constant spanAttrPipelineSource (line 36) | spanAttrPipelineSource attribute.Key = "ci.pipeline.source"
constant spanAttrRunnerID (line 37) | spanAttrRunnerID attribute.Key = "ci.runner.id"
constant spanAttrRunnerExecutor (line 38) | spanAttrRunnerExecutor attribute.Key = "ci.runner.executor"
constant spanAttrJobStatus (line 39) | spanAttrJobStatus attribute.Key = "ci.job.status"
function tracerContext (line 42) | func tracerContext(ctx context.Context, log *logrus.Entry, tracingFeatur...
function tracer (line 64) | func tracer(log *logrus.Entry, tracingFeature *spec.Tracing) (oteltrace....
function nopStop (line 80) | func nopStop() error {
function setJobSpanAttributes (line 84) | func setJobSpanAttributes(span oteltrace.Span, build *common.Build, runn...
function traceProviderForURLs (line 95) | func traceProviderForURLs(log *logrus.Entry, endpoints []spec.OTELEndpoi...
function exporterForEndpoint (line 121) | func exporterForEndpoint(log *logrus.Entry, e *spec.OTELEndpoint) traces...
function constructOTELResource (line 214) | func constructOTELResource() *resource.Resource {
type perRPCCredentialsFromTokenSource (line 224) | type perRPCCredentialsFromTokenSource struct
method GetRequestMetadata (line 228) | func (p *perRPCCredentialsFromTokenSource) GetRequestMetadata(ctx cont...
method RequireTransportSecurity (line 238) | func (p *perRPCCredentialsFromTokenSource) RequireTransportSecurity() ...
FILE: commands/tracing_test.go
function TestTracerContext (line 16) | func TestTracerContext(t *testing.T) {
function TestTraceProviderForURLs (line 47) | func TestTraceProviderForURLs(t *testing.T) {
FILE: commands/unregister.go
type UnregisterCommand (line 15) | type UnregisterCommand struct
method unregisterAllRunners (line 30) | func (c *UnregisterCommand) unregisterAllRunners(cfg *common.Config) (...
method unregisterSingleRunner (line 45) | func (c *UnregisterCommand) unregisterSingleRunner(cfg *common.Config)...
method unregisterRunner (line 78) | func (c *UnregisterCommand) unregisterRunner(r common.RunnerConfig, sy...
method Execute (line 86) | func (c *UnregisterCommand) Execute(context *cli.Context) {
function NewUnregisterCommand (line 24) | func NewUnregisterCommand(n common.Network) cli.Command {
FILE: commands/unregister_test.go
constant testRunner1 (line 19) | testRunner1 = "test-runner-1"
constant testRunner2 (line 20) | testRunner2 = "test-runner-2"
constant testToken1 (line 21) | testToken1 = "test-token-1"
constant testToken2 (line 22) | testToken2 = "test-token-2"
function TestUnregisterCommand_unregisterAllRunner (line 36) | func TestUnregisterCommand_unregisterAllRunner(t *testing.T) {
function TestUnregisterCommand_unregisterSingleRunner (line 108) | func TestUnregisterCommand_unregisterSingleRunner(t *testing.T) {
function TestUnregisterCommand_unregisterRunner (line 261) | func TestUnregisterCommand_unregisterRunner(t *testing.T) {
function TestUnregisterCommand_Execute (line 342) | func TestUnregisterCommand_Execute(t *testing.T) {
FILE: commands/user_mode_warning.go
function userModeWarning (line 10) | func userModeWarning(withRun bool) {
FILE: commands/verify.go
type VerifyCommand (line 13) | type VerifyCommand struct
method Execute (line 29) | func (c *VerifyCommand) Execute(context *cli.Context) {
function NewVerifyCommand (line 22) | func NewVerifyCommand(n common.Network) cli.Command {
FILE: commands/wrapper.go
constant defaultWrapperGRPCListen (line 23) | defaultWrapperGRPCListen = "tcp://localhost:7777"
type logHook (line 31) | type logHook struct
method Levels (line 33) | func (h *logHook) Levels() []logrus.Level {
method Fire (line 37) | func (h *logHook) Fire(e *logrus.Entry) error {
type RunnerWrapperCommand (line 43) | type RunnerWrapperCommand struct
method Execute (line 58) | func (c *RunnerWrapperCommand) Execute(cctx *cli.Context) {
method createListener (line 92) | func (c *RunnerWrapperCommand) createListener() (net.Listener, error) {
function NewRunnerWrapperCommand (line 48) | func NewRunnerWrapperCommand() cli.Command {
FILE: commands/wrapper_test.go
function TestRunnerWrapperCommand_createListener (line 16) | func TestRunnerWrapperCommand_createListener(t *testing.T) {
FILE: common/allowed_images.go
type VerifyAllowedImageOptions (line 11) | type VerifyAllowedImageOptions struct
function VerifyAllowedImage (line 20) | func VerifyAllowedImage(options VerifyAllowedImageOptions, logger buildl...
FILE: common/allowed_images_test.go
type allowedImageTestCase (line 13) | type allowedImageTestCase struct
function TestVerifyAllowedImage (line 59) | func TestVerifyAllowedImage(t *testing.T) {
FILE: common/build.go
type BuildRuntimeState (line 40) | type BuildRuntimeState
method String (line 42) | func (s BuildRuntimeState) String() string {
constant BuildRunStatePending (line 47) | BuildRunStatePending BuildRuntimeState = "pending"
constant BuildRunRuntimeRunning (line 48) | BuildRunRuntimeRunning BuildRuntimeState = "running"
constant BuildRunRuntimeSuccess (line 49) | BuildRunRuntimeSuccess BuildRuntimeState = "success"
constant BuildRunRuntimeFailed (line 50) | BuildRunRuntimeFailed BuildRuntimeState = "failed"
constant BuildRunRuntimeCanceled (line 51) | BuildRunRuntimeCanceled BuildRuntimeState = "canceled"
constant BuildRunRuntimeTerminated (line 52) | BuildRunRuntimeTerminated BuildRuntimeState = "terminated"
constant BuildRunRuntimeTimedout (line 53) | BuildRunRuntimeTimedout BuildRuntimeState = "timedout"
type BuildStage (line 57) | type BuildStage
type JobExecutionMode (line 58) | type JobExecutionMode
method OrUnknown (line 102) | func (m JobExecutionMode) OrUnknown() JobExecutionMode {
type WithContext (line 65) | type WithContext interface
constant BuildStageResolveSecrets (line 70) | BuildStageResolveSecrets BuildStage = "resolve_secrets"
constant BuildStagePrepareExecutor (line 71) | BuildStagePrepareExecutor BuildStage = "prepare_executor"
constant BuildStagePrepare (line 72) | BuildStagePrepare BuildStage = "prepare_script"
constant BuildStageGetSources (line 73) | BuildStageGetSources BuildStage = "get_sources"
constant BuildStageClearWorktree (line 74) | BuildStageClearWorktree BuildStage = "clear_worktree"
constant BuildStageRestoreCache (line 75) | BuildStageRestoreCache BuildStage = "restore_cache"
constant BuildStageDownloadArtifacts (line 76) | BuildStageDownloadArtifacts BuildStage = "download_artifacts"
constant BuildStageAfterScript (line 77) | BuildStageAfterScript BuildStage = "after_script"
constant BuildStageArchiveOnSuccessCache (line 78) | BuildStageArchiveOnSuccessCache BuildStage = "archive_cache"
constant BuildStageArchiveOnFailureCache (line 79) | BuildStageArchiveOnFailureCache BuildStage = "archive_cache_on_failure"
constant BuildStageUploadOnSuccessArtifacts (line 80) | BuildStageUploadOnSuccessArtifacts BuildStage = "upload_artifacts_on_suc...
constant BuildStageUploadOnFailureArtifacts (line 81) | BuildStageUploadOnFailureArtifacts BuildStage = "upload_artifacts_on_fai...
constant BuildStageCleanup (line 85) | BuildStageCleanup BuildStage = "cleanup_file_variables"
type OnBuildStageFn (line 88) | type OnBuildStageFn
method Call (line 90) | func (fn OnBuildStageFn) Call(stage BuildStage) {
constant JobExecutionModeSteps (line 97) | JobExecutionModeSteps JobExecutionMode = "steps"
constant JobExecutionModeTraditional (line 98) | JobExecutionModeTraditional JobExecutionMode = "traditional"
constant JobExecutionModeUnknown (line 99) | JobExecutionModeUnknown JobExecutionMode = "unknown"
type OnJobExecutionModeDispatchedFn (line 109) | type OnJobExecutionModeDispatchedFn
method Call (line 111) | func (fn OnJobExecutionModeDispatchedFn) Call(mode JobExecutionMode, e...
constant ExecutorJobSectionAttempts (line 138) | ExecutorJobSectionAttempts = "EXECUTOR_JOB_SECTION_ATTEMPTS"
type Build (line 145) | type Build struct
method setCurrentStage (line 200) | func (b *Build) setCurrentStage(stage BuildStage) {
method CurrentStage (line 207) | func (b *Build) CurrentStage() BuildStage {
method setCurrentState (line 214) | func (b *Build) setCurrentState(state BuildRuntimeState) {
method setCurrentStateIf (line 221) | func (b *Build) setCurrentStateIf(existingState BuildRuntimeState, new...
method markStepDispatchedInScript (line 232) | func (b *Build) markStepDispatchedInScript() {
method DispatchedJobExecutionMode (line 239) | func (b *Build) DispatchedJobExecutionMode() JobExecutionMode {
method recordDispatchedExecutionMode (line 250) | func (b *Build) recordDispatchedExecutionMode() {
method CurrentState (line 254) | func (b *Build) CurrentState() BuildRuntimeState {
method FailureReason (line 261) | func (b *Build) FailureReason() spec.JobFailureReason {
method Log (line 265) | func (b *Build) Log() *logrus.Entry {
method ProjectUniqueShortName (line 298) | func (b *Build) ProjectUniqueShortName() string {
method ProjectUniqueName (line 312) | func (b *Build) ProjectUniqueName() string {
method ProjectRealUniqueName (line 336) | func (b *Build) ProjectRealUniqueName() string {
method GetNetworkName (line 350) | func (b *Build) GetNetworkName() string {
method ProjectSlug (line 354) | func (b *Build) ProjectSlug() (string, error) {
method ProjectUniqueDir (line 375) | func (b *Build) ProjectUniqueDir(sharedDir bool) string {
method FullProjectDir (line 399) | func (b *Build) FullProjectDir() string {
method TmpProjectDir (line 403) | func (b *Build) TmpProjectDir() string {
method BuildStages (line 409) | func (b *Build) BuildStages() []BuildStage {
method getCustomBuildDir (line 424) | func (b *Build) getCustomBuildDir(rootDir, dir string, customBuildDirE...
method StartBuild (line 445) | func (b *Build) StartBuild(
method executeStepStage (line 488) | func (b *Build) executeStepStage(ctx context.Context, connector steps....
method executeStage (line 602) | func (b *Build) executeStage(ctx context.Context, buildStage BuildStag...
method executeUploadArtifacts (line 739) | func (b *Build) executeUploadArtifacts(ctx context.Context, state erro...
method executeArchiveCache (line 747) | func (b *Build) executeArchiveCache(ctx context.Context, state error, ...
method executeScript (line 755) | func (b *Build) executeScript(ctx context.Context, trace JobTrace, exe...
method executePrepareScripts (line 823) | func (b *Build) executePrepareScripts(ctx context.Context, executor Ex...
method executeUserScripts (line 855) | func (b *Build) executeUserScripts(ctx context.Context, trace JobTrace...
method pickPriorityError (line 925) | func (b *Build) pickPriorityError(jobErr error, archiveCacheErr error,...
method executeAfterScript (line 939) | func (b *Build) executeAfterScript(ctx context.Context, err error, exe...
method createReferees (line 954) | func (b *Build) createReferees(executor Executor) {
method removeFileBasedVariables (line 958) | func (b *Build) removeFileBasedVariables(ctx context.Context, executor...
method executeUploadReferees (line 965) | func (b *Build) executeUploadReferees(ctx context.Context, startTime, ...
method attemptExecuteStage (line 1004) | func (b *Build) attemptExecuteStage(
method GetBuildTimeout (line 1048) | func (b *Build) GetBuildTimeout() time.Duration {
method GetPrepareTimeout (line 1058) | func (b *Build) GetPrepareTimeout() time.Duration {
method handleError (line 1082) | func (b *Build) handleError(err error) error {
method runtimeStateAndError (line 1089) | func (b *Build) runtimeStateAndError(err error) (BuildRuntimeState, er...
method run (line 1111) | func (b *Build) run(ctx context.Context, trace JobTrace, executor Exec...
method waitForBuildFinish (line 1191) | func (b *Build) waitForBuildFinish(buildFinish <-chan error, timeout t...
method retryCreateExecutor (line 1201) | func (b *Build) retryCreateExecutor(
method waitForTerminal (line 1244) | func (b *Build) waitForTerminal(ctx context.Context, timeout time.Dura...
method getTerminalTimeout (line 1288) | func (b *Build) getTerminalTimeout(ctx context.Context, timeout time.D...
method setTraceStatus (line 1311) | func (b *Build) setTraceStatus(trace JobTrace, err error) {
method setExecutorStageResolver (line 1378) | func (b *Build) setExecutorStageResolver(resolver func() ExecutorStage) {
method CurrentExecutorStage (line 1385) | func (b *Build) CurrentExecutorStage() ExecutorStage {
method Run (line 1396) | func (b *Build) Run(globalConfig *Config, trace JobTrace) (err error) {
method expandInputs (line 1480) | func (b *Build) expandInputs() error {
method getNewLogger (line 1488) | func (b *Build) getNewLogger(trace JobTrace, log *logrus.Entry, teeOnl...
method logUsedImages (line 1502) | func (b *Build) logUsedImages() {
method configureTrace (line 1532) | func (b *Build) configureTrace(trace JobTrace, cancel context.CancelFu...
method createExecutorPrepareOptions (line 1537) | func (b *Build) createExecutorPrepareOptions(ctx context.Context, glob...
method resolveSecrets (line 1547) | func (b *Build) resolveSecrets(trace JobTrace) error {
method executeBuildSection (line 1584) | func (b *Build) executeBuildSection(options ExecutorPrepareOptions, pr...
method String (line 1610) | func (b *Build) String() string {
method platformAppropriatePath (line 1614) | func (b *Build) platformAppropriatePath(s string) string {
method GetDefaultVariables (line 1623) | func (b *Build) GetDefaultVariables() spec.Variables {
method GetDefaultFeatureFlagsVariables (line 1676) | func (b *Build) GetDefaultFeatureFlagsVariables() spec.Variables {
method GetSharedEnvVariable (line 1691) | func (b *Build) GetSharedEnvVariable() spec.Variable {
method GetCITLSVariables (line 1702) | func (b *Build) GetCITLSVariables() spec.Variables {
method IsSharedEnv (line 1737) | func (b *Build) IsSharedEnv() bool {
method RefreshAllVariables (line 1743) | func (b *Build) RefreshAllVariables() {
method getBaseVariablesBeforeJob (line 1749) | func (b *Build) getBaseVariablesBeforeJob() spec.Variables {
method getBaseVariablesAfterJob (line 1768) | func (b *Build) getBaseVariablesAfterJob() spec.Variables {
method getVariablesForFeatureFlagResolution (line 1791) | func (b *Build) getVariablesForFeatureFlagResolution() spec.Variables {
method getResolvedFeatureFlags (line 1806) | func (b *Build) getResolvedFeatureFlags() spec.Variables {
method getNonFeatureFlagJobVariables (line 1830) | func (b *Build) getNonFeatureFlagJobVariables() spec.Variables {
method GetAllVariables (line 1851) | func (b *Build) GetAllVariables() spec.Variables {
method IsProtected (line 1877) | func (b *Build) IsProtected() bool {
method expandContainerOptions (line 1888) | func (b *Build) expandContainerOptions() {
method withUrlHelper (line 1900) | func (b *Build) withUrlHelper() *url_helpers.GitAuthHelper {
method GetRemoteURL (line 1925) | func (b *Build) GetRemoteURL() (*url.URL, error) {
method GetInsteadOfs (line 1930) | func (b *Build) GetInsteadOfs() ([][2]string, error) {
method getStageTimeoutContexts (line 1939) | func (b *Build) getStageTimeoutContexts(parent context.Context, timeou...
method GetGitStrategy (line 1991) | func (b *Build) GetGitStrategy() GitStrategy {
method GetRepositoryObjectFormat (line 1995) | func (b *Build) GetRepositoryObjectFormat() string {
method GetGitCheckout (line 2003) | func (b *Build) GetGitCheckout() bool {
method GetSubmoduleStrategy (line 2011) | func (b *Build) GetSubmoduleStrategy() SubmoduleStrategy {
method GetSubmodulePaths (line 2020) | func (b *Build) GetSubmodulePaths() ([]string, error) {
method GetSubmoduleDepth (line 2030) | func (b *Build) GetSubmoduleDepth() int {
method GetGitCleanFlags (line 2034) | func (b *Build) GetGitCleanFlags() []string {
method GetGitCloneFlags (line 2038) | func (b *Build) GetGitCloneFlags() []string {
method GetGitFetchFlags (line 2042) | func (b *Build) GetGitFetchFlags() []string {
method GetGitSubmoduleUpdateFlags (line 2046) | func (b *Build) GetGitSubmoduleUpdateFlags() []string {
method IsDebugTraceEnabled (line 2050) | func (b *Build) IsDebugTraceEnabled() bool {
method GetDockerAuthConfig (line 2054) | func (b *Build) GetDockerAuthConfig() string {
method GetGetSourcesAttempts (line 2058) | func (b *Build) GetGetSourcesAttempts() int {
method GetDownloadArtifactsAttempts (line 2062) | func (b *Build) GetDownloadArtifactsAttempts() int {
method GetRestoreCacheAttempts (line 2066) | func (b *Build) GetRestoreCacheAttempts() int {
method GetCacheRequestTimeout (line 2070) | func (b *Build) GetCacheRequestTimeout() int {
method GetExecutorJobSectionAttempts (line 2074) | func (b *Build) GetExecutorJobSectionAttempts() int {
method StartedAt (line 2078) | func (b *Build) StartedAt() time.Time {
method FinishedAt (line 2082) | func (b *Build) FinishedAt() time.Time {
method CurrentDuration (line 2090) | func (b *Build) CurrentDuration() time.Duration {
method FinalDuration (line 2097) | func (b *Build) FinalDuration() time.Duration {
method ensureFinishedAt (line 2105) | func (b *Build) ensureFinishedAt() {
method IsFeatureFlagOn (line 2138) | func (b *Build) IsFeatureFlagOn(name string) bool {
method getFeatureFlagInfo (line 2145) | func (b *Build) getFeatureFlagInfo() string {
method printRunningWithHeader (line 2158) | func (b *Build) printRunningWithHeader(trace JobTrace) {
method printSettingErrors (line 2176) | func (b *Build) printSettingErrors() {
method printPolicyOptions (line 2182) | func (b *Build) printPolicyOptions() {
method IsLFSSmudgeDisabled (line 2211) | func (b *Build) IsLFSSmudgeDisabled() bool {
method IsCIDebugServiceEnabled (line 2215) | func (b *Build) IsCIDebugServiceEnabled() bool {
method IsDebugModeEnabled (line 2219) | func (b *Build) IsDebugModeEnabled() bool {
function wrapStepStageErr (line 537) | func wrapStepStageErr(err error) error {
function getPredefinedEnv (line 693) | func getPredefinedEnv(buildStage BuildStage) bool {
function GetStageDescription (line 716) | func GetStageDescription(stage BuildStage) string {
function StepToBuildStage (line 950) | func StepToBuildStage(s spec.Step) BuildStage {
function logTerminationError (line 1370) | func logTerminationError(logger buildlogger.Logger, name string, err err...
type stageTimeout (line 1934) | type stageTimeout struct
type urlHelper (line 2109) | type urlHelper interface
function NewBuild (line 2114) | func NewBuild(
FILE: common/build_settings.go
type GitStrategy (line 16) | type GitStrategy
constant GitClone (line 19) | GitClone GitStrategy = "clone"
constant GitFetch (line 20) | GitFetch GitStrategy = "fetch"
constant GitNone (line 21) | GitNone GitStrategy = "none"
constant GitEmpty (line 22) | GitEmpty GitStrategy = "empty"
type cmdFlags (line 25) | type cmdFlags
type SubmoduleStrategy (line 32) | type SubmoduleStrategy
constant SubmoduleInvalid (line 35) | SubmoduleInvalid SubmoduleStrategy = "invalid"
constant SubmoduleNone (line 36) | SubmoduleNone SubmoduleStrategy = "none"
constant SubmoduleNormal (line 37) | SubmoduleNormal SubmoduleStrategy = "normal"
constant SubmoduleRecursive (line 38) | SubmoduleRecursive SubmoduleStrategy = "recursive"
constant DefaultObjectFormat (line 40) | DefaultObjectFormat = "sha1"
type BuildSettings (line 43) | type BuildSettings struct
method Settings (line 77) | func (b *Build) Settings() BuildSettings {
method initSettings (line 83) | func (b *Build) initSettings() {
function validateVariables (line 123) | func validateVariables(variables spec.Variables, b *Build, defaultGitSta...
function validate (line 154) | func validate[T any](variables spec.Variables, name string, value *T, de...
function populateFeatureFlags (line 225) | func populateFeatureFlags(b *Build, variables spec.Variables) []error {
FILE: common/build_settings_test.go
function TestBuildVariablesAsFileType (line 14) | func TestBuildVariablesAsFileType(t *testing.T) {
FILE: common/build_step_dispatch.go
constant stepRunBuildStage (line 17) | stepRunBuildStage = BuildStage("step_" + spec.StepNameRun)
function stepDispatch (line 25) | func stepDispatch(build *Build, executor Executor, stage BuildStage) (bo...
function stagesToConcreteStep (line 92) | func stagesToConcreteStep(ctx context.Context, executor Executor) ([]sch...
FILE: common/build_step_dispatch_test.go
function TestBuildConcreteKitchenSink (line 14) | func TestBuildConcreteKitchenSink(t *testing.T) {
FILE: common/build_test.go
function init (line 40) | func init() {
function TestBuildPredefinedVariables (line 48) | func TestBuildPredefinedVariables(t *testing.T) {
function TestBuildTimeoutExposed (line 61) | func TestBuildTimeoutExposed(t *testing.T) {
function TestGetPrepareTimeout (line 94) | func TestGetPrepareTimeout(t *testing.T) {
function matchBuildStage (line 190) | func matchBuildStage(buildStage BuildStage) interface{} {
function TestBuildRun (line 196) | func TestBuildRun(t *testing.T) {
function TestBuildPanic (line 200) | func TestBuildPanic(t *testing.T) {
function TestJobImageExposed (line 305) | func TestJobImageExposed(t *testing.T) {
function TestBuildRunNoModifyConfig (line 354) | func TestBuildRunNoModifyConfig(t *testing.T) {
function TestRetryPrepare (line 377) | func TestRetryPrepare(t *testing.T) {
function TestPrepareFailure (line 403) | func TestPrepareFailure(t *testing.T) {
function TestPrepareFailureOnBuildError (line 422) | func TestPrepareFailureOnBuildError(t *testing.T) {
function TestPrepareEnvironmentFailure (line 435) | func TestPrepareEnvironmentFailure(t *testing.T) {
function TestJobFailure (line 466) | func TestJobFailure(t *testing.T) {
function TestJobFailureOnExecutionTimeout (line 505) | func TestJobFailureOnExecutionTimeout(t *testing.T) {
function TestRunFailureRunsAfterScriptAndArtifactsOnFailure (line 537) | func TestRunFailureRunsAfterScriptAndArtifactsOnFailure(t *testing.T) {
function TestGetSourcesRunFailure (line 571) | func TestGetSourcesRunFailure(t *testing.T) {
function TestArtifactDownloadRunFailure (line 597) | func TestArtifactDownloadRunFailure(t *testing.T) {
function TestArtifactUploadRunFailure (line 620) | func TestArtifactUploadRunFailure(t *testing.T) {
function TestArchiveCacheOnScriptFailure (line 652) | func TestArchiveCacheOnScriptFailure(t *testing.T) {
function TestUploadArtifactsOnArchiveCacheFailure (line 676) | func TestUploadArtifactsOnArchiveCacheFailure(t *testing.T) {
function TestRestoreCacheRunFailure (line 700) | func TestRestoreCacheRunFailure(t *testing.T) {
function TestRunWrongAttempts (line 722) | func TestRunWrongAttempts(t *testing.T) {
function TestRunSuccessOnSecondAttempt (line 745) | func TestRunSuccessOnSecondAttempt(t *testing.T) {
function TestDebugTrace (line 774) | func TestDebugTrace(t *testing.T) {
function TestDefaultEnvVariables (line 835) | func TestDefaultEnvVariables(t *testing.T) {
function TestSharedEnvVariables (line 880) | func TestSharedEnvVariables(t *testing.T) {
function TestGetRemoteURL (line 906) | func TestGetRemoteURL(t *testing.T) {
function TestGetInsteadOfs (line 974) | func TestGetInsteadOfs(t *testing.T) {
function TestIsFeatureFlagOn (line 1063) | func TestIsFeatureFlagOn(t *testing.T) {
function TestIsFeatureFlagOn_SetWithRunnerVariables (line 1122) | func TestIsFeatureFlagOn_SetWithRunnerVariables(t *testing.T) {
function TestIsFeatureFlagOn_Precedence (line 1156) | func TestIsFeatureFlagOn_Precedence(t *testing.T) {
function TestGetAllVariables_FeatureFlagResolution (line 1211) | func TestGetAllVariables_FeatureFlagResolution(t *testing.T) {
function TestStartBuild (line 1279) | func TestStartBuild(t *testing.T) {
function TestTmpProjectDir (line 1459) | func TestTmpProjectDir(t *testing.T) {
function TestSkipBuildStageFeatureFlag (line 1536) | func TestSkipBuildStageFeatureFlag(t *testing.T) {
function TestWaitForTerminal (line 1576) | func TestWaitForTerminal(t *testing.T) {
function TestBuild_IsLFSSmudgeDisabled (line 1699) | func TestBuild_IsLFSSmudgeDisabled(t *testing.T) {
function TestGitSubmodulePaths (line 1751) | func TestGitSubmodulePaths(t *testing.T) {
function TestGitCleanFlags (line 1842) | func TestGitCleanFlags(t *testing.T) {
function TestGitCloneFlags (line 1882) | func TestGitCloneFlags(t *testing.T) {
function TestGitFetchFlags (line 1926) | func TestGitFetchFlags(t *testing.T) {
function TestGetRepositoryObjectFormat (line 1966) | func TestGetRepositoryObjectFormat(t *testing.T) {
function TestGitSubmoduleUpdateFlags (line 2002) | func TestGitSubmoduleUpdateFlags(t *testing.T) {
function TestDefaultVariables (line 2038) | func TestDefaultVariables(t *testing.T) {
function TestBuildFinishTimeout (line 2118) | func TestBuildFinishTimeout(t *testing.T) {
function TestProjectUniqueName (line 2151) | func TestProjectUniqueName(t *testing.T) {
function TestProjectUniqueShortName (line 2197) | func TestProjectUniqueShortName(t *testing.T) {
function TestProjectRealUniqueName (line 2260) | func TestProjectRealUniqueName(t *testing.T) {
function TestBuildStages (line 2313) | func TestBuildStages(t *testing.T) {
function TestBuild_GetExecutorJobSectionAttempts (line 2344) | func TestBuild_GetExecutorJobSectionAttempts(t *testing.T) {
function TestBuild_getFeatureFlagInfo (line 2392) | func TestBuild_getFeatureFlagInfo(t *testing.T) {
function setupSuccessfulMockExecutor (line 2432) | func setupSuccessfulMockExecutor(
function setupMockExecutorAndProvider (line 2462) | func setupMockExecutorAndProvider(t *testing.T) (*MockExecutor, *MockExe...
function registerExecutorWithSuccessfulBuild (line 2472) | func registerExecutorWithSuccessfulBuild(t *testing.T, p *MockExecutorPr...
function runSuccessfulMockBuild (line 2486) | func runSuccessfulMockBuild(t *testing.T, prepareFn func(options Executo...
function TestSecretsResolving (line 2496) | func TestSecretsResolving(t *testing.T) {
function TestSetTraceStatus (line 2599) | func TestSetTraceStatus(t *testing.T) {
function Test_GetDebugServicePolicy (line 2650) | func Test_GetDebugServicePolicy(t *testing.T) {
function Test_expandContainerOptions (line 2692) | func Test_expandContainerOptions(t *testing.T) {
function TestPrintPolicyOptions (line 2748) | func TestPrintPolicyOptions(t *testing.T) {
function TestGetStageTimeoutContexts (line 2841) | func TestGetStageTimeoutContexts(t *testing.T) {
function Test_logUsedImages (line 3030) | func Test_logUsedImages(t *testing.T) {
function TestBuildStageMetrics (line 3162) | func TestBuildStageMetrics(t *testing.T) {
function TestBuild_DispatchedJobExecutionMode (line 3196) | func TestBuild_DispatchedJobExecutionMode(t *testing.T) {
function TestBuildStageMetricsFailBuild (line 3219) | func TestBuildStageMetricsFailBuild(t *testing.T) {
function TestBuildDurationsAndBoundaryTimes (line 3274) | func TestBuildDurationsAndBoundaryTimes(t *testing.T) {
function TestBuild_RunCallsEnsureFinishedAt (line 3317) | func TestBuild_RunCallsEnsureFinishedAt(t *testing.T) {
function TestBuildIsProtected (line 3409) | func TestBuildIsProtected(t *testing.T) {
function TestExpandingInputs (line 3477) | func TestExpandingInputs(t *testing.T) {
function TestBuild_attemptExecuteStage (line 4275) | func TestBuild_attemptExecuteStage(t *testing.T) {
function TestBuild_attemptExecuteStageWithRetryCallback (line 4417) | func TestBuild_attemptExecuteStageWithRetryCallback(t *testing.T) {
function TestBuild_attemptExecuteStageExponentialBackoff (line 4506) | func TestBuild_attemptExecuteStageExponentialBackoff(t *testing.T) {
function TestBuild_attemptExecuteStageInvalidAttempts (line 4559) | func TestBuild_attemptExecuteStageInvalidAttempts(t *testing.T) {
function TestPredefinedServerVariables (line 4631) | func TestPredefinedServerVariables(t *testing.T) {
function TestWrapStepStageErr_NormalizesWindowsExitCode (line 4774) | func TestWrapStepStageErr_NormalizesWindowsExitCode(t *testing.T) {
function Test_wrapStepStageErr (line 4781) | func Test_wrapStepStageErr(t *testing.T) {
function TestBuild_executeStepStage_ForwardsRegisterCancel (line 4859) | func TestBuild_executeStepStage_ForwardsRegisterCancel(t *testing.T) {
function TestBuild_executeStepStage_NilRegisterCancel (line 4913) | func TestBuild_executeStepStage_NilRegisterCancel(t *testing.T) {
FILE: common/buildlogger/build_logger.go
type Trace (line 17) | type Trace interface
type Options (line 22) | type Options struct
constant Stdout (line 31) | Stdout StreamType = 'O'
constant Stderr (line 32) | Stderr StreamType = 'E'
type StreamType (line 35) | type StreamType
type Logger (line 37) | type Logger struct
method Stream (line 88) | func (l *Logger) Stream(streamID int, streamType StreamType) io.WriteC...
method wrap (line 109) | func (l *Logger) wrap(w io.WriteCloser, streamID int, streamType Strea...
method WithFields (line 122) | func (l *Logger) WithFields(fields logrus.Fields) *Logger {
method SendRawLog (line 134) | func (l *Logger) SendRawLog(args ...any) {
method Close (line 144) | func (l *Logger) Close() error {
function NewNopCloser (line 53) | func NewNopCloser(w io.Writer) io.WriteCloser {
constant StreamExecutorLevel (line 59) | StreamExecutorLevel = 0
constant StreamWorkLevel (line 61) | StreamWorkLevel = 1
constant StreamStartingServiceLevel (line 63) | StreamStartingServiceLevel = 15
function New (line 66) | func New(log Trace, entry *logrus.Entry, opts Options) Logger {
FILE: common/buildlogger/build_logger_test.go
type fakeJobTrace (line 14) | type fakeJobTrace struct
method Write (line 18) | func (fjt *fakeJobTrace) Write(p []byte) (int, error) {
method IsStdout (line 22) | func (fjt *fakeJobTrace) IsStdout() bool {
method Read (line 26) | func (fjt *fakeJobTrace) Read() string {
function newFakeJobTrace (line 30) | func newFakeJobTrace() *fakeJobTrace {
function newBuildLogger (line 38) | func newBuildLogger(testName string, jt Trace) Logger {
function runOnHijackedLogrusOutput (line 42) | func runOnHijackedLogrusOutput(t *testing.T, handler func(t *testing.T, ...
function TestLogLineWithoutSecret (line 52) | func TestLogLineWithoutSecret(t *testing.T) {
function TestLogLineWithSecret (line 66) | func TestLogLineWithSecret(t *testing.T) {
function TestLogPrinters (line 88) | func TestLogPrinters(t *testing.T) {
FILE: common/buildlogger/internal/build_logger_fuzz.go
type nopWriter (line 17) | type nopWriter struct
method Close (line 21) | func (nopWriter) Close() error {
function Fuzz (line 25) | func Fuzz(data []byte) int {
function chunk (line 106) | func chunk(r *rand.Rand, input []byte, fn func(part []byte)) {
FILE: common/buildlogger/internal/masker/masker.go
type Masker (line 22) | type Masker struct
method Write (line 39) | func (m *Masker) Write(p []byte) (n int, err error) {
method Close (line 44) | func (m *Masker) Close() error {
function New (line 27) | func New(w io.WriteCloser, phrases [][]byte) *Masker {
type masker (line 48) | type masker struct
method Write (line 55) | func (m *masker) Write(p []byte) (n int, err error) {
method Close (line 141) | func (m *masker) Close() error {
FILE: common/buildlogger/internal/masker/masker_test.go
function TestMasking (line 16) | func TestMasking(t *testing.T) {
FILE: common/buildlogger/internal/nopcloser.go
type nopCloser (line 5) | type nopCloser struct
method Close (line 9) | func (nopCloser) Close() error {
function NewNopCloser (line 13) | func NewNopCloser(w io.Writer) io.WriteCloser {
FILE: common/buildlogger/internal/sync.go
type syncWriter (line 8) | type syncWriter struct
method Write (line 18) | func (s *syncWriter) Write(p []byte) (int, error) {
method Close (line 25) | func (s *syncWriter) Close() error {
function NewSync (line 14) | func NewSync(w io.WriteCloser) *syncWriter {
FILE: common/buildlogger/internal/tee.go
type Tee (line 13) | type Tee struct
method WithFields (line 29) | func (t *Tee) WithFields(fields logrus.Fields) Tee {
method WithoutLog (line 37) | func (t *Tee) WithoutLog() Tee {
method WriterLevel (line 45) | func (t *Tee) WriterLevel(level logrus.Level) *io.PipeWriter {
method log (line 49) | func (t *Tee) log(level logrus.Level, logPrefix string, args ...interf...
method Debugln (line 76) | func (t *Tee) Debugln(args ...interface{}) {
method Println (line 83) | func (t *Tee) Println(args ...interface{}) {
method Infoln (line 87) | func (t *Tee) Infoln(args ...interface{}) {
method Warningln (line 91) | func (t *Tee) Warningln(args ...interface{}) {
method SoftErrorln (line 95) | func (t *Tee) SoftErrorln(args ...interface{}) {
method Errorln (line 99) | func (t *Tee) Errorln(args ...interface{}) {
function NewTee (line 25) | func NewTee(logFn func(args ...any), entry *logrus.Entry, disable bool) ...
FILE: common/buildlogger/internal/timestamper/timestamper.go
constant StdoutType (line 11) | StdoutType StreamType = 'O'
constant StderrType (line 12) | StderrType StreamType = 'E'
constant PartialLineType (line 14) | PartialLineType LineType = '+'
constant FullLineType (line 15) | FullLineType LineType = ' '
constant hextable (line 17) | hextable = "0123456789abcdef"
constant bufSize (line 22) | bufSize = 8 * 1024
constant fracs (line 25) | fracs = 6
constant format (line 27) | format = "YYYY-mm-ddTHH:MM:SS.123456Z "
type StreamType (line 31) | type StreamType
type LineType (line 32) | type LineType
type Logger (line 64) | type Logger struct
method Write (line 94) | func (l *Logger) Write(p []byte) (n int, err error) {
method buffer (line 123) | func (l *Logger) buffer(p []byte) (n int, err error) {
method writeLines (line 167) | func (l *Logger) writeLines(p []byte) (n int, err error) {
method writeCarriageReturns (line 206) | func (l *Logger) writeCarriageReturns(p []byte) (n int, err error) {
method writeHeader (line 238) | func (l *Logger) writeHeader(w io.Writer) error {
method Close (line 275) | func (l *Logger) Close() error {
function New (line 73) | func New(w io.Writer, streamType StreamType, streamNumber uint8, timesta...
FILE: common/buildlogger/internal/timestamper/timestamper_test.go
function setupDummyTime (line 15) | func setupDummyTime() func() {
function writeLines (line 30) | func writeLines(w io.Writer) {
function TestWithTimestamps (line 54) | func TestWithTimestamps(t *testing.T) {
function TestWithoutTimestamp (line 109) | func TestWithoutTimestamp(t *testing.T) {
function TestForcedFlush (line 151) | func TestForcedFlush(t *testing.T) {
function BenchmarkWithTimestamps (line 177) | func BenchmarkWithTimestamps(b *testing.B) {
FILE: common/buildlogger/internal/tokensanitizer/token_masker.go
function DefaultTokenPrefixes (line 32) | func DefaultTokenPrefixes(maskAllDefaultTokens bool) []string {
type TokenSanitizer (line 68) | type TokenSanitizer struct
method Write (line 90) | func (m *TokenSanitizer) Write(p []byte) (n int, err error) {
method Close (line 95) | func (m *TokenSanitizer) Close() error {
function New (line 74) | func New(w io.WriteCloser, prefixes [][]byte) *TokenSanitizer {
type tokenSanitizer (line 99) | type tokenSanitizer struct
method Write (line 107) | func (m *tokenSanitizer) Write(p []byte) (n int, err error) {
method Close (line 209) | func (m *tokenSanitizer) Close() error {
FILE: common/buildlogger/internal/tokensanitizer/token_masker_test.go
function TestTokenMasking (line 23) | func TestTokenMasking(t *testing.T) {
function BenchmarkTokenMaskingPerformance (line 106) | func BenchmarkTokenMaskingPerformance(b *testing.B) {
function BenchmarkTokenMaskingDuration (line 169) | func BenchmarkTokenMaskingDuration(b *testing.B) {
function generateParagraph (line 186) | func generateParagraph(numberOfWords int, token, wordPool []string) stri...
FILE: common/buildlogger/internal/unique.go
function Unique (line 9) | func Unique(tokens []string) [][]byte {
FILE: common/buildlogger/internal/urlsanitizer/urlsanitizer.go
type URLSanitizer (line 34) | type URLSanitizer struct
method Write (line 53) | func (s *URLSanitizer) Write(p []byte) (n int, err error) {
method Close (line 155) | func (s *URLSanitizer) Close() error {
function New (line 41) | func New(w io.WriteCloser) *URLSanitizer {
function isParamEnd (line 168) | func isParamEnd(r rune) bool {
FILE: common/buildlogger/internal/urlsanitizer/urlsanitizer_test.go
function TestMasking (line 16) | func TestMasking(t *testing.T) {
FILE: common/buildlogger/mocks.go
function NewMockTrace (line 13) | func NewMockTrace(t interface {
type MockTrace (line 26) | type MockTrace struct
method EXPECT (line 34) | func (_m *MockTrace) EXPECT() *MockTrace_Expecter {
method IsStdout (line 39) | func (_mock *MockTrace) IsStdout() bool {
method Write (line 83) | func (_mock *MockTrace) Write(bytes []byte) (int, error) {
type MockTrace_Expecter (line 30) | type MockTrace_Expecter struct
method IsStdout (line 61) | func (_e *MockTrace_Expecter) IsStdout() *MockTrace_IsStdout_Call {
method Write (line 115) | func (_e *MockTrace_Expecter) Write(bytes interface{}) *MockTrace_Writ...
type MockTrace_IsStdout_Call (line 56) | type MockTrace_IsStdout_Call struct
method Run (line 65) | func (_c *MockTrace_IsStdout_Call) Run(run func()) *MockTrace_IsStdout...
method Return (line 72) | func (_c *MockTrace_IsStdout_Call) Return(b bool) *MockTrace_IsStdout_...
method RunAndReturn (line 77) | func (_c *MockTrace_IsStdout_Call) RunAndReturn(run func() bool) *Mock...
type MockTrace_Write_Call (line 109) | type MockTrace_Write_Call struct
method Run (line 119) | func (_c *MockTrace_Write_Call) Run(run func(bytes []byte)) *MockTrace...
method Return (line 132) | func (_c *MockTrace_Write_Call) Return(n int, err error) *MockTrace_Wr...
method RunAndReturn (line 137) | func (_c *MockTrace_Write_Call) RunAndReturn(run func(bytes []byte) (i...
FILE: common/buildtest/abort.go
type withContext (line 18) | type withContext struct
method WithContext (line 21) | func (c *withContext) WithContext(ctx context.Context) (context.Contex...
function RunBuildWithCancel (line 29) | func RunBuildWithCancel(t *testing.T, config *common.RunnerConfig, setup...
function RunBuildWithExecutorCancel (line 162) | func RunBuildWithExecutorCancel(t *testing.T, config *common.RunnerConfi...
FILE: common/buildtest/binary.go
function MustBuildBinary (line 10) | func MustBuildBinary(entrypoint string, binaryName string) string {
FILE: common/buildtest/cleanup.go
function RunBuildWithCleanupGitClone (line 13) | func RunBuildWithCleanupGitClone(t *testing.T, build *common.Build) {
function RunBuildWithCleanupGitFetch (line 24) | func RunBuildWithCleanupGitFetch(t *testing.T, build *common.Build, untr...
function RunBuildWithCleanupNormalSubmoduleStrategy (line 37) | func RunBuildWithCleanupNormalSubmoduleStrategy(
function RunBuildWithCleanupRecursiveSubmoduleStrategy (line 58) | func RunBuildWithCleanupRecursiveSubmoduleStrategy(
function GetNewUntrackedFileIntoSubmodulesCommands (line 81) | func GetNewUntrackedFileIntoSubmodulesCommands(
FILE: common/buildtest/job_output_limit.go
function RunRemoteBuildWithJobOutputLimitExceeded (line 17) | func RunRemoteBuildWithJobOutputLimitExceeded(t *testing.T, config *comm...
function RunBuildWithJobOutputLimitExceeded (line 21) | func RunBuildWithJobOutputLimitExceeded(t *testing.T, config *common.Run...
type jobOutputLimitExceededTestCase (line 25) | type jobOutputLimitExceededTestCase struct
function runBuildWithJobOutputLimitExceeded (line 84) | func runBuildWithJobOutputLimitExceeded(
function runBuildWithJobOutputLimitExceededCase (line 107) | func runBuildWithJobOutputLimitExceededCase(t *testing.T, tt jobOutputLi...
FILE: common/buildtest/masking.go
function RunBuildWithMasking (line 16) | func RunBuildWithMasking(t *testing.T, config *common.RunnerConfig, setu...
function RunBuildWithMaskingProxyExec (line 66) | func RunBuildWithMaskingProxyExec(t *testing.T, config *common.RunnerCon...
function testBuildWithMasking (line 70) | func testBuildWithMasking(t *testing.T, config *common.RunnerConfig, set...
FILE: common/buildtest/sections.go
function RunBuildWithSections (line 15) | func RunBuildWithSections(t *testing.T, build *common.Build) {
FILE: common/buildtest/test.go
constant testTimeout (line 18) | testTimeout = 30 * time.Minute
type BuildSetupFn (line 20) | type BuildSetupFn
function RunBuildReturningOutput (line 22) | func RunBuildReturningOutput(t *testing.T, build *common.Build) (string,...
function RunBuildWithTrace (line 31) | func RunBuildWithTrace(t *testing.T, build *common.Build, trace *common....
function RunBuildWithOptions (line 35) | func RunBuildWithOptions(t *testing.T, build *common.Build, trace *commo...
function RunBuild (line 45) | func RunBuild(t *testing.T, build *common.Build) error {
function OnStage (line 52) | func OnStage(build *common.Build, stage string, fn func()) func() {
function OnUserStage (line 88) | func OnUserStage(build *common.Build, fn func()) func() {
function SetBuildFeatureFlag (line 92) | func SetBuildFeatureFlag(build *common.Build, flag string, value bool) {
type baseJobGetter (line 106) | type baseJobGetter
function getJobResponseWithCommands (line 110) | func getJobResponseWithCommands(t *testing.T, baseJobGetter baseJobGette...
function WithEachFeatureFlag (line 122) | func WithEachFeatureFlag(t *testing.T, f func(t *testing.T, setup BuildS...
function injectJobToken (line 145) | func injectJobToken(t *testing.T, jobResponse *spec.Job, token string) *...
function InjectJobTokenFromEnv (line 163) | func InjectJobTokenFromEnv(t *testing.T, jobResponse *spec.Job, envVars ...
FILE: common/buildtest/variables.go
function RunBuildWithExpandedFileVariable (line 19) | func RunBuildWithExpandedFileVariable(t *testing.T, config *common.Runne...
function RunBuildWithPassingEnvsMultistep (line 59) | func RunBuildWithPassingEnvsMultistep(t *testing.T, config *common.Runne...
function RunBuildWithPassingEnvsJobIsolation (line 130) | func RunBuildWithPassingEnvsJobIsolation(t *testing.T, config *common.Ru...
type shellFormatter (line 171) | type shellFormatter
method EnvName (line 173) | func (s shellFormatter) EnvName(name string) string {
method PipeVar (line 182) | func (s shellFormatter) PipeVar(variable string) string {
FILE: common/command.go
type Commander (line 9) | type Commander interface
type CommanderFunc (line 16) | type CommanderFunc
method Execute (line 19) | func (cf CommanderFunc) Execute(c *cli.Context) {
function NewCommand (line 24) | func NewCommand(name, usage string, data Commander, flags ...cli.Flag) c...
function NewCommandWithSubcommands (line 34) | func NewCommandWithSubcommands(name, usage string, data Commander, hidde...
FILE: common/config.go
type DockerSysCtls (line 45) | type DockerSysCtls
type KubernetesHookHandlerType (line 48) | type KubernetesHookHandlerType
constant PullPolicyAlways (line 51) | PullPolicyAlways = "always"
constant PullPolicyNever (line 52) | PullPolicyNever = "never"
constant PullPolicyIfNotPresent (line 53) | PullPolicyIfNotPresent = "if-not-present"
constant DNSPolicyNone (line 55) | DNSPolicyNone KubernetesDNSPolicy = "none"
constant DNSPolicyDefault (line 56) | DNSPolicyDefault KubernetesDNSPolicy = "default"
constant DNSPolicyClusterFirst (line 57) | DNSPolicyClusterFirst KubernetesDNSPolicy = "cluster-first"
constant DNSPolicyClusterFirstWithHostNet (line 58) | DNSPolicyClusterFirstWithHostNet KubernetesDNSPolicy = "cluster-first-wi...
constant GenerateArtifactsMetadataVariable (line 60) | GenerateArtifactsMetadataVariable = "RUNNER_GENERATE_ARTIFACTS_METADATA"
constant UnknownSystemID (line 62) | UnknownSystemID = "unknown"
constant DefaultConnectionMaxAge (line 64) | DefaultConnectionMaxAge = 15 * time.Minute
constant mask (line 67) | mask = "[MASKED]"
type InvalidTimePeriodsError (line 76) | type InvalidTimePeriodsError struct
method Error (line 85) | func (e *InvalidTimePeriodsError) Error() string {
method Is (line 89) | func (e *InvalidTimePeriodsError) Is(err error) bool {
method Unwrap (line 95) | func (e *InvalidTimePeriodsError) Unwrap() error {
function NewInvalidTimePeriodsError (line 81) | func NewInvalidTimePeriodsError(periods []string, cause error) *InvalidT...
type allowListKind (line 176) | type allowListKind
constant allowListKindUser (line 179) | allowListKindUser allowListKind = "user"
constant allowListKindGroup (line 180) | allowListKindGroup allowListKind = "group"
function parseID (line 184) | func parseID(s string) (int64, error) {
function allowListContainsID (line 190) | func allowListContainsID(id int64, kind allowListKind, allowedList []str...
type StringOrArray (line 244) | type StringOrArray
method UnmarshalTOML (line 246) | func (p *StringOrArray) UnmarshalTOML(data interface{}) error {
type DockerConfig (line 269) | type DockerConfig struct
method GetPullPolicies (line 101) | func (c DockerConfig) GetPullPolicies() ([]DockerPullPolicy, error) {
method GetAllowedPullPolicies (line 123) | func (c DockerConfig) GetAllowedPullPolicies() ([]DockerPullPolicy, er...
method IsUserAllowed (line 142) | func (c DockerConfig) IsUserAllowed(user string) bool {
method GetUlimits (line 599) | func (c *DockerConfig) GetUlimits() ([]*units.Ulimit, error) {
method computeNanoCPUs (line 1653) | func (c *DockerConfig) computeNanoCPUs(value string) (int64, error) {
method GetNanoCPUs (line 1668) | func (c *DockerConfig) GetNanoCPUs() (int64, error) {
method GetServiceNanoCPUs (line 1672) | func (c *DockerConfig) GetServiceNanoCPUs() (int64, error) {
method getMemoryBytes (line 1676) | func (c *DockerConfig) getMemoryBytes(size string, fieldName string) i...
method GetMemory (line 1689) | func (c *DockerConfig) GetMemory() int64 {
method GetMemorySwap (line 1693) | func (c *DockerConfig) GetMemorySwap() int64 {
method GetMemoryReservation (line 1697) | func (c *DockerConfig) GetMemoryReservation() int64 {
method GetServiceMemory (line 1701) | func (c *DockerConfig) GetServiceMemory() int64 {
method GetServiceMemorySwap (line 1705) | func (c *DockerConfig) GetServiceMemorySwap() int64 {
method GetServiceMemoryReservation (line 1709) | func (c *DockerConfig) GetServiceMemoryReservation() int64 {
method GetOomKillDisable (line 1713) | func (c *DockerConfig) GetOomKillDisable() *bool {
method GetExpandedServices (line 1730) | func (c *DockerConfig) GetExpandedServices(vars spec.Variables) []Serv...
method GetServicesLimit (line 1734) | func (c *DockerConfig) GetServicesLimit() int {
method GetLogConfig (line 1743) | func (c *DockerConfig) GetLogConfig() (container.LogConfig, error) {
type InstanceConfig (line 345) | type InstanceConfig struct
type AutoscalerConfig (line 350) | type AutoscalerConfig struct
method GetInstanceCreationTimeBuckets (line 405) | func (c AutoscalerConfig) GetInstanceCreationTimeBuckets() []float64 {
method GetInstanceIsRunningTimeBuckets (line 412) | func (c AutoscalerConfig) GetInstanceIsRunningTimeBuckets() []float64 {
method GetInstanceDeletionTimeBuckets (line 419) | func (c AutoscalerConfig) GetInstanceDeletionTimeBuckets() []float64 {
method GetInstanceReadinessTimeBuckets (line 426) | func (c AutoscalerConfig) GetInstanceReadinessTimeBuckets() []float64 {
type AutoscalerStateStorage (line 393) | type AutoscalerStateStorage struct
type AutoscalerScaleThrottle (line 400) | type AutoscalerScaleThrottle struct
type VMIsolation (line 433) | type VMIsolation struct
type ConnectorConfig (line 441) | type ConnectorConfig struct
type AutoscalerSettingsMap (line 455) | type AutoscalerSettingsMap
method JSON (line 457) | func (settings AutoscalerSettingsMap) JSON() ([]byte, error) {
type AutoscalerPolicyConfig (line 461) | type AutoscalerPolicyConfig struct
method PreemptiveModeEnabled (line 471) | func (policy *AutoscalerPolicyConfig) PreemptiveModeEnabled() bool {
type DockerMachine (line 478) | type DockerMachine struct
method GetIdleCount (line 2096) | func (c *DockerMachine) GetIdleCount() int {
method GetIdleCountMin (line 2105) | func (c *DockerMachine) GetIdleCountMin() int {
method GetIdleScaleFactor (line 2114) | func (c *DockerMachine) GetIdleScaleFactor() float64 {
method GetIdleTime (line 2123) | func (c *DockerMachine) GetIdleTime() int {
method getActiveAutoscalingConfig (line 2135) | func (c *DockerMachine) getActiveAutoscalingConfig() *DockerMachineAut...
method CompilePeriods (line 2146) | func (c *DockerMachine) CompilePeriods() error {
method logDeprecationWarning (line 2172) | func (c *DockerMachine) logDeprecationWarning() {
type DockerMachineShutdownDrain (line 500) | type DockerMachineShutdownDrain struct
method IsEnabled (line 2186) | func (c DockerMachineShutdownDrain) IsEnabled() bool {
method GetConcurrency (line 2190) | func (c DockerMachineShutdownDrain) GetConcurrency() int {
method GetMaxRetries (line 2197) | func (c DockerMachineShutdownDrain) GetMaxRetries() int {
method GetRetryBackoff (line 2204) | func (c DockerMachineShutdownDrain) GetRetryBackoff() time.Duration {
type DockerMachineAutoscaling (line 507) | type DockerMachineAutoscaling struct
method compilePeriods (line 2161) | func (a *DockerMachineAutoscaling) compilePeriods() error {
type ParallelsConfig (line 517) | type ParallelsConfig struct
type VirtualBoxConfig (line 525) | type VirtualBoxConfig struct
type CustomConfig (line 534) | type CustomConfig struct
type KubernetesDNSPolicy (line 628) | type KubernetesDNSPolicy
method Get (line 632) | func (p KubernetesDNSPolicy) Get() (api.DNSPolicy, error) {
type KubernetesHostAliasesFlag (line 652) | type KubernetesHostAliasesFlag
method UnmarshalFlag (line 654) | func (h *KubernetesHostAliasesFlag) UnmarshalFlag(value string) error {
type KubernetesConfig (line 658) | type KubernetesConfig struct
method GetAllowedPullPolicies (line 162) | func (c KubernetesConfig) GetAllowedPullPolicies() ([]api.PullPolicy, ...
method isUserOrGroupAllowed (line 204) | func (c KubernetesConfig) isUserOrGroupAllowed(idStr string, kind allo...
method IsUserAllowed (line 235) | func (c KubernetesConfig) IsUserAllowed(user string) error {
method IsGroupAllowed (line 239) | func (c KubernetesConfig) IsGroupAllowed(group string) error {
method GetPullPolicies (line 556) | func (c KubernetesConfig) GetPullPolicies() ([]api.PullPolicy, error) {
method ConvertFromDockerPullPolicy (line 578) | func (c KubernetesConfig) ConvertFromDockerPullPolicy(dockerPullPolici...
method getCapabilities (line 1018) | func (c *KubernetesConfig) getCapabilities(defaultCapDrop []string) *a...
method GetContainerSecurityContext (line 1140) | func (c *KubernetesConfig) GetContainerSecurityContext(
method GetPollTimeout (line 1772) | func (c *KubernetesConfig) GetPollTimeout() int {
method GetPollInterval (line 1779) | func (c *KubernetesConfig) GetPollInterval() int {
method GetPollAttempts (line 1786) | func (c *KubernetesConfig) GetPollAttempts() int {
method GetCleanupResourcesTimeout (line 1790) | func (c *KubernetesConfig) GetCleanupResourcesTimeout() time.Duration {
method GetResourceAvailabilityCheckMaxAttempts (line 1798) | func (c *KubernetesConfig) GetResourceAvailabilityCheckMaxAttempts() i...
method GetNodeTolerations (line 1806) | func (c *KubernetesConfig) GetNodeTolerations() []api.Toleration {
method GetPodSecurityContext (line 1832) | func (c *KubernetesConfig) GetPodSecurityContext() *api.PodSecurityCon...
method GetAffinity (line 1863) | func (c *KubernetesConfig) GetAffinity() *api.Affinity {
method GetDNSConfig (line 1881) | func (c *KubernetesConfig) GetDNSConfig() *api.PodDNSConfig {
method GetNodeAffinity (line 1901) | func (c *KubernetesConfig) GetNodeAffinity() *api.NodeAffinity {
method GetContainerLifecycle (line 1919) | func (c *KubernetesConfig) GetContainerLifecycle() KubernetesContainer...
method GetPodAffinity (line 1954) | func (c *KubernetesConfig) GetPodAffinity() *api.PodAffinity {
method GetPodAntiAffinity (line 1974) | func (c *KubernetesConfig) GetPodAntiAffinity() *api.PodAntiAffinity {
method GetHostAliases (line 2057) | func (c *KubernetesConfig) GetHostAliases() []api.HostAlias {
method GetExpandedServices (line 2076) | func (c *KubernetesConfig) GetExpandedServices(vars spec.Variables) []...
method GetPrintPodWarningEvents (line 2080) | func (c *KubernetesConfig) GetPrintPodWarningEvents() bool {
method GetPodDisruptionBudget (line 2088) | func (c *KubernetesConfig) GetPodDisruptionBudget() bool {
type KubernetesAutoscalerConfig (line 773) | type KubernetesAutoscalerConfig struct
type RequestRetryLimit (line 784) | type RequestRetryLimit
method Get (line 786) | func (r RequestRetryLimit) Get() int {
type RequestRetryLimits (line 794) | type RequestRetryLimits
type RequestRetryBackoffMax (line 796) | type RequestRetryBackoffMax
method Get (line 798) | func (r RequestRetryBackoffMax) Get() time.Duration {
type KubernetesPodSpec (line 809) | type KubernetesPodSpec struct
method PodSpecPatch (line 817) | func (s *KubernetesPodSpec) PodSpecPatch() ([]byte, KubernetesPodSpecP...
type KubernetesPodSpecPatchType (line 844) | type KubernetesPodSpecPatchType
constant PatchTypeJSONPatchType (line 847) | PatchTypeJSONPatchType = KubernetesPodSpecPatchType("json")
constant PatchTypeMergePatchType (line 848) | PatchTypeMergePatchType = KubernetesPodSpecPatchType("merge")
constant PatchTypeStrategicMergePatchType (line 849) | PatchTypeStrategicMergePatchType = KubernetesPodSpecPatchType("strategic")
type KubernetesDNSConfig (line 852) | type KubernetesDNSConfig struct
type KubernetesDNSConfigOption (line 858) | type KubernetesDNSConfigOption struct
type KubernetesVolumes (line 863) | type KubernetesVolumes struct
type KubernetesConfigMap (line 873) | type KubernetesConfigMap struct
type KubernetesHostPath (line 881) | type KubernetesHostPath struct
type KubernetesPVC (line 890) | type KubernetesPVC struct
type KubernetesSecret (line 898) | type KubernetesSecret struct
type KubernetesEmptyDir (line 906) | type KubernetesEmptyDir struct
type KubernetesCSI (line 915) | type KubernetesCSI struct
type KubernetesNFS (line 925) | type KubernetesNFS struct
method UnmarshalTOML (line 934) | func (n *KubernetesNFS) UnmarshalTOML(data any) error {
type KubernetesSeccompProfile (line 978) | type KubernetesSeccompProfile struct
method toAPI (line 1098) | func (p *KubernetesSeccompProfile) toAPI() *api.SeccompProfile {
type KubernetesAppArmorProfile (line 983) | type KubernetesAppArmorProfile struct
method toAPI (line 1119) | func (p *KubernetesAppArmorProfile) toAPI() *api.AppArmorProfile {
type KubernetesPodSecurityContext (line 988) | type KubernetesPodSecurityContext struct
type KubernetesContainerCapabilities (line 999) | type KubernetesContainerCapabilities struct
type KubernetesContainerSecurityContext (line 1004) | type KubernetesContainerSecurityContext struct
method getProcMount (line 1054) | func (c *KubernetesContainerSecurityContext) getProcMount() *api.ProcM...
method getCapabilities (line 1201) | func (c *KubernetesContainerSecurityContext) getCapabilities() *api.Ca...
function buildCapabilities (line 1040) | func buildCapabilities(enabled map[string]bool) *api.Capabilities {
function validateProfileType (line 1070) | func validateProfileType[T ~string](kind string, typ T, valid []T) bool {
function requireLocalhostProfile (line 1078) | func requireLocalhostProfile(kind, localhostProfile string) *string {
function mergeCapabilitiesAddDrop (line 1170) | func mergeCapabilitiesAddDrop(capabilities ...*api.Capabilities) *api.Ca...
function getContainerSecurityContextEffectiveFlagValue (line 1193) | func getContainerSecurityContextEffectiveFlagValue(containerValue, fallb...
type KubernetesAffinity (line 1213) | type KubernetesAffinity struct
type KubernetesNodeAffinity (line 1219) | type KubernetesNodeAffinity struct
type KubernetesPodAffinity (line 1224) | type KubernetesPodAffinity struct
type KubernetesPodAntiAffinity (line 1229) | type KubernetesPodAntiAffinity struct
type KubernetesHostAliases (line 1234) | type KubernetesHostAliases struct
type KubernetesContainerLifecyle (line 1240) | type KubernetesContainerLifecyle struct
type KubernetesLifecycleHandler (line 1245) | type KubernetesLifecycleHandler struct
method ToKubernetesLifecycleHandler (line 1275) | func (h *KubernetesLifecycleHandler) ToKubernetesLifecycleHandler() *a...
type KubernetesLifecycleExecAction (line 1251) | type KubernetesLifecycleExecAction struct
type KubernetesLifecycleHTTPGet (line 1255) | type KubernetesLifecycleHTTPGet struct
type KubernetesLifecycleHTTPGetHeader (line 1263) | type KubernetesLifecycleHTTPGetHeader struct
type KubernetesLifecycleTCPSocket (line 1268) | type KubernetesLifecycleTCPSocket struct
type NodeSelector (line 1311) | type NodeSelector struct
method GetNodeSelector (line 1923) | func (c *NodeSelector) GetNodeSelector() *api.NodeSelector {
type PreferredSchedulingTerm (line 1315) | type PreferredSchedulingTerm struct
method GetPreferredSchedulingTerm (line 2028) | func (c *PreferredSchedulingTerm) GetPreferredSchedulingTerm() api.Pre...
type WeightedPodAffinityTerm (line 1320) | type WeightedPodAffinityTerm struct
method GetWeightedPodAffinityTerm (line 2003) | func (c *WeightedPodAffinityTerm) GetWeightedPodAffinityTerm() api.Wei...
type NodeSelectorTerm (line 1325) | type NodeSelectorTerm struct
method GetNodeSelectorTerm (line 2010) | func (c *NodeSelectorTerm) GetNodeSelectorTerm() api.NodeSelectorTerm {
type NodeSelectorRequirement (line 1330) | type NodeSelectorRequirement struct
method GetNodeSelectorRequirement (line 1931) | func (c *NodeSelectorRequirement) GetNodeSelectorRequirement() api.Nod...
type PodAffinityTerm (line 1336) | type PodAffinityTerm struct
method GetPodAffinityTerm (line 1994) | func (c *PodAffinityTerm) GetPodAffinityTerm() api.PodAffinityTerm {
method GetLabelSelector (line 2035) | func (c *PodAffinityTerm) GetLabelSelector() *metav1.LabelSelector {
method GetNamespaceSelector (line 2046) | func (c *PodAffinityTerm) GetNamespaceSelector() *metav1.LabelSelector {
type LabelSelector (line 1343) | type LabelSelector struct
method GetLabelSelectorMatchExpressions (line 1939) | func (c *LabelSelector) GetLabelSelectorMatchExpressions() []metav1.La...
type Service (line 1348) | type Service struct
method Aliases (line 1356) | func (s *Service) Aliases() []string { return strings.Fields(strings.R...
method ToImageDefinition (line 1358) | func (s *Service) ToImageDefinition() spec.Image {
type RunnerCredentials (line 1376) | type RunnerCredentials struct
method GetURL (line 2211) | func (c *RunnerCredentials) GetURL() string {
method GetTLSCAFile (line 2215) | func (c *RunnerCredentials) GetTLSCAFile() string {
method GetTLSCertFile (line 2219) | func (c *RunnerCredentials) GetTLSCertFile() string {
method GetTLSKeyFile (line 2223) | func (c *RunnerCredentials) GetTLSKeyFile() string {
method GetToken (line 2227) | func (c *RunnerCredentials) GetToken() string {
method ShortDescription (line 2231) | func (c *RunnerCredentials) ShortDescription() string {
method UniqueID (line 2235) | func (c *RunnerCredentials) UniqueID() string {
method SameAs (line 2241) | func (c *RunnerCredentials) SameAs(other *RunnerCredentials) bool {
type ArtifactConfig (line 1389) | type ArtifactConfig struct
method GetUploadTimeout (line 1394) | func (a ArtifactConfig) GetUploadTimeout() time.Duration {
method GetResponseHeaderTimeout (line 1402) | func (a ArtifactConfig) GetResponseHeaderTimeout() time.Duration {
type RunnerSettings (line 1411) | type RunnerSettings struct
method ComputeLabels (line 1570) | func (r *RunnerSettings) ComputeLabels(globalDefaults Labels) {
method ComputedLabels (line 1582) | func (r *RunnerSettings) ComputedLabels() Labels {
method GetGracefulKillTimeout (line 1586) | func (r *RunnerSettings) GetGracefulKillTimeout() time.Duration {
method GetForceKillTimeout (line 1590) | func (r *RunnerSettings) GetForceKillTimeout() time.Duration {
method IsFeatureFlagOn (line 1596) | func (r *RunnerSettings) IsFeatureFlagOn(name string) bool {
method IsFeatureFlagDefined (line 1612) | func (r *RunnerSettings) IsFeatureFlagDefined(name string) bool {
type RunnerConfig (line 1476) | type RunnerConfig struct
method String (line 2251) | func (c *RunnerConfig) String() string {
method WarnOnLegacyCIURL (line 2255) | func (c *RunnerConfig) WarnOnLegacyCIURL() {
method GetSystemID (line 2265) | func (c *RunnerConfig) GetSystemID() string {
method GetUnhealthyRequestsLimit (line 2273) | func (c *RunnerConfig) GetUnhealthyRequestsLimit() int {
method GetJobStatusFinalUpdateRetryLimit (line 2281) | func (c *RunnerConfig) GetJobStatusFinalUpdateRetryLimit() int {
method GetUnhealthyInterval (line 2289) | func (c *RunnerConfig) GetUnhealthyInterval() time.Duration {
method GetRequestConcurrency (line 2297) | func (c *RunnerConfig) GetRequestConcurrency() int {
method GetStrictCheckInterval (line 2301) | func (c *RunnerConfig) GetStrictCheckInterval() bool {
method GetVariables (line 2309) | func (c *RunnerConfig) GetVariables() spec.Variables {
method IsProxyExec (line 2324) | func (c *RunnerConfig) IsProxyExec() bool {
method Log (line 2332) | func (c *RunnerConfig) Log() *logrus.Entry {
method DeepCopy (line 2351) | func (c *RunnerConfig) DeepCopy() (*RunnerConfig, error) {
method mask (line 2380) | func (r *RunnerConfig) mask() {
method loadConfig (line 2493) | func (c *RunnerConfig) loadConfig(globalCfg *Config) error {
method Validate (line 2632) | func (c *RunnerConfig) Validate() error {
method validateLabels (line 2648) | func (c *RunnerConfig) validateLabels() error {
method validateComputedLabels (line 2652) | func (c *RunnerConfig) validateComputedLabels() error {
method validateSlotCgroups (line 2656) | func (c *RunnerConfig) validateSlotCgroups() error {
method validateMachineOptionsWithName (line 2676) | func (c *RunnerConfig) validateMachineOptionsWithName() error {
method GetSlotCgroupPath (line 2702) | func (c *RunnerConfig) GetSlotCgroupPath(data ExecutorData) string {
method GetServiceSlotCgroupPath (line 2721) | func (c *RunnerConfig) GetServiceSlotCgroupPath(data ExecutorData) str...
type SessionServer (line 1495) | type SessionServer struct
method GetSessionTimeout (line 1631) | func (c *SessionServer) GetSessionTimeout() time.Duration {
type Config (line 1501) | type Config struct
method DeepCopy (line 2421) | func (c *Config) DeepCopy() (*Config, error) {
method Masked (line 2434) | func (c *Config) Masked() (*Config, error) {
method StatConfig (line 2446) | func (c *Config) StatConfig(configFile string) error {
method LoadConfig (line 2454) | func (c *Config) LoadConfig(configFile string) error {
method SaveConfig (line 2518) | func (c *Config) SaveConfig(configFile string) error {
method GetCheckInterval (line 2545) | func (c *Config) GetCheckInterval() time.Duration {
method GetShutdownTimeout (line 2552) | func (c *Config) GetShutdownTimeout() time.Duration {
method RunnerByName (line 2568) | func (c *Config) RunnerByName(name string) (*RunnerConfig, error) {
method RunnerByToken (line 2578) | func (c *Config) RunnerByToken(token string) (*RunnerConfig, error) {
method RunnerByURLAndID (line 2588) | func (c *Config) RunnerByURLAndID(url string, id int64) (*RunnerConfig...
method RunnerByNameAndToken (line 2598) | func (c *Config) RunnerByNameAndToken(name string, token string) (*Run...
method Validate (line 2608) | func (c *Config) Validate() error {
method validateLabels (line 2628) | func (c *Config) validateLabels() error {
type MachineConfig (line 1528) | type MachineConfig struct
type Experimental (line 1532) | type Experimental struct
type UsageLogger (line 1536) | type UsageLogger struct
type ConfigSaver (line 1544) | type ConfigSaver interface
type defaultConfigSaver (line 1548) | type defaultConfigSaver struct
method Save (line 1550) | func (s *defaultConfigSaver) Save(filePath string, data []byte) error {
type CustomBuildDir (line 1566) | type CustomBuildDir struct
function getDuration (line 1618) | func getDuration(source *int, defaultValue time.Duration) time.Duration {
type SshConfig (line 1639) | type SshConfig struct
method ShouldDisableStrictHostKeyChecking (line 1649) | func (c *SshConfig) ShouldDisableStrictHostKeyChecking() bool {
function getExpandedServices (line 1717) | func getExpandedServices(services []Service, vars spec.Variables) []Serv...
constant defaultShutdownDrainConcurrency (line 2181) | defaultShutdownDrainConcurrency = 3
constant defaultShutdownDrainMaxRetries (line 2182) | defaultShutdownDrainMaxRetries = 3
constant defaultShutdownDrainRetryBackoff (line 2183) | defaultShutdownDrainRetryBackoff
Copy disabled (too large)
Download .json
Condensed preview — 1203 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,456K chars).
[
{
"path": ".dockerignore",
"chars": 20,
"preview": ".idea/\nout/\nbuilds/\n"
},
{
"path": ".editorconfig",
"chars": 408,
"preview": "# top-most EditorConfig file\nroot = true\n\n# Unix-style newlines with a newline ending every file\n[*]\nend_of_line = lf\ntr"
},
{
"path": ".flaky-tests.txt",
"chars": 2894,
"preview": "TestBuildCacheHelper/bash/cache_settings_provided,_no_job_cache_provided\nTestBuildCancel/bash/job_is_aborted\nTestBuildCa"
},
{
"path": ".gitattributes",
"chars": 41,
"preview": "*.sh\t\ttext eol=lf\nci/version\ttext eol=lf\n"
},
{
"path": ".gitignore",
"chars": 763,
"preview": "*.iml\nconfig.toml\nconfig.toml.lock\n.project\nout\nbuilds/\nvendor/\ncommands/helpers/archive.zip\ndockerfiles/**/checksums-*\n"
},
{
"path": ".gitlab/.argo/mr_template_doc_ai.md",
"chars": 1842,
"preview": "# What does this MR do?\n\nThis merge request contains translations of GitLab product documentation. The source files are\n"
},
{
"path": ".gitlab/CODEOWNERS",
"chars": 1430,
"preview": "# When adding a group as a code owner, make sure to invite the group to the\n# project here: https://gitlab.com/gitlab-or"
},
{
"path": ".gitlab/changelog.yml",
"chars": 1012,
"preview": "default_scope: other\nnames:\n new-feature: New features\n security-fix: Security fixes\n fix: Bug fixes\n maintenance: M"
},
{
"path": ".gitlab/ci/_common.gitlab-ci.yml",
"chars": 5763,
"preview": "variables:\n # renovate: datasource=docker depName=golang allowedVersions=/1\\.26\\..+/\n # When updating GO_VERSION, upda"
},
{
"path": ".gitlab/ci/_kubernetes.gitlab-ci.yml",
"chars": 625,
"preview": ".kubernetes runner:\n interruptible: true\n timeout: 30m\n tags:\n - $KUBERNETES_RUNNER_TAG\n\n.unit tests kubernetes li"
},
{
"path": ".gitlab/ci/_project_canonical.gitlab-ci.yml",
"chars": 260,
"preview": ".instance-default: $RUNNER_TAG_DEFAULT\n.instance-default-docker: $RUNNER_TAG_DOCKER\n\n.instance-2xlarge: $RUNNER_TAG_2XLA"
},
{
"path": ".gitlab/ci/_project_fork.gitlab-ci.yml",
"chars": 389,
"preview": ".instance-default: gitlab-org\n.instance-default-docker: gitlab-org-docker\n\n.instance-2xlarge: gitlab-org-docker\n.instanc"
},
{
"path": ".gitlab/ci/_rules.gitlab-ci.yml",
"chars": 14500,
"preview": "####################\n# Changes patterns #\n####################\n\n.code-backstage-patterns: &code-backstage-patterns\n - \""
},
{
"path": ".gitlab/ci/build.gitlab-ci.yml",
"chars": 5675,
"preview": "helper images:\n tags:\n - !reference [.instance-2xlarge]\n extends:\n - .docker\n - .rules:merge_request_pipeline"
},
{
"path": ".gitlab/ci/coverage.gitlab-ci.yml",
"chars": 1669,
"preview": ".coverage_job:\n extends:\n - .rules:merge_request_pipelines:no_docs:always\n stage: coverage\n\ntest coverage report:\n "
},
{
"path": ".gitlab/ci/deploy.gitlab-ci.yml",
"chars": 1626,
"preview": "# This job should only run if the UBI images downstream pipeline is successful.\n# It does not depend on it since the pip"
},
{
"path": ".gitlab/ci/docs.gitlab-ci.yml",
"chars": 1479,
"preview": ".review-docs:\n stage: docs\n extends:\n - .rules:docs:review\n - .no_cache_and_dependencies\n - .kubernetes runne"
},
{
"path": ".gitlab/ci/hosted-runners-bridge.gitlab-ci.yml",
"chars": 1354,
"preview": ".hosted-runners-bridge:\n stage: postrelease\n extends:\n - .kubernetes runner\n variables:\n GITLAB_TOKEN: $HOSTED_"
},
{
"path": ".gitlab/ci/package.gitlab-ci.yml",
"chars": 1500,
"preview": ".packages:\n extends:\n - .rules:merge_request_pipelines:no_docs:no-community-mr\n - .kubernetes runner\n stage: pac"
},
{
"path": ".gitlab/ci/postrelease.gitlab-ci.yml",
"chars": 11017,
"preview": ".trigger-downstream-pipeline-ref:\n stage: postrelease\n variables:\n UPSTREAM_CI_COMMIT_REF: $CI_COMMIT_BRANCH\n UP"
},
{
"path": ".gitlab/ci/prepare.gitlab-ci.yml",
"chars": 3767,
"preview": ".image_builder:\n extends:\n - .docker\n stage: prepare\n image: docker:${DOCKER_VERSION}-git\n script:\n - apk add "
},
{
"path": ".gitlab/ci/qa.gitlab-ci.yml",
"chars": 8793,
"preview": "check version definition:\n stage: qa\n extends:\n - .rules:merge_request_pipelines\n - .kubernetes runner\n needs: "
},
{
"path": ".gitlab/ci/rebase.gitlab-ci.yml",
"chars": 1225,
"preview": "# Rebase branches in $REPO_REBASE_BRANCHES, separated by a comma on top of main\nrebase on main:\n extends:\n - .no_cac"
},
{
"path": ".gitlab/ci/release.gitlab-ci.yml",
"chars": 6831,
"preview": "# S3 Releases\n#############\n\n.release_s3:\n stage: release\n dependencies:\n - \"prebuilt helper images\"\n - \"binarie"
},
{
"path": ".gitlab/ci/test-kubernetes-integration.gitlab-ci.yml",
"chars": 2817,
"preview": ".integration kubernetes:\n extends:\n - .rules:merge_request_pipelines:no_docs:no-community-mr:no-security-mr\n tags:\n"
},
{
"path": ".gitlab/ci/test.gitlab-ci.yml",
"chars": 11490,
"preview": "include:\n - component: ${CI_SERVER_FQDN}/components/dependency-scanning/main@1.1.1\n - component: ${CI_SERVER_FQDN}/com"
},
{
"path": ".gitlab/dependency_decisions.yml",
"chars": 1560,
"preview": "---\n- - :license\n - github.com/ayufan/golang-kardianos-service\n - zlib\n - :who: \n :why: \n :versions: []\n :wh"
},
{
"path": ".gitlab/duo/agent-config.yml",
"chars": 1763,
"preview": "# Update this tag when go.mod or GOLANGLINT_VERSION in the Makefile changes.\nimage: registry.gitlab.com/gitlab-org/ci-cd"
},
{
"path": ".gitlab/duo/mr-review-instructions.yaml",
"chars": 1608,
"preview": "---\n# Custom instructions for GitLab Duo Code Review\n# Based on GitLab's official code review guidelines\n\n# References:\n"
},
{
"path": ".gitlab/issue_templates/Bug.md",
"chars": 1732,
"preview": "## Summary\n\n<!--\nBriefly summarize the bug\n-->\n\n## Steps to reproduce\n\n<!--\nWhat do you need to do to reproduce the bug?"
},
{
"path": ".gitlab/issue_templates/Default.md",
"chars": 620,
"preview": "If you experience a problem with CI/CD on GitLab.com, please raise an issue in https://gitlab.com/gitlab-com/support-for"
},
{
"path": ".gitlab/issue_templates/Documentation.md",
"chars": 1408,
"preview": "<!--\n\n* Use this issue template for suggesting new docs or updates to existing docs.\n\n* For issues related to features o"
},
{
"path": ".gitlab/issue_templates/Feature Flag Cleanup.md",
"chars": 2440,
"preview": "<!-- Title suggestion: [Feature flag] Cleanup <feature-flag-name> -->\n\n## Summary\n\nThis issue is to clean up the `<featu"
},
{
"path": ".gitlab/issue_templates/Feature Flag Roll Out.md",
"chars": 3132,
"preview": "<!-- Title suggestion: [Feature flag] Enable <feature-flag-name> -->\n\n## Summary\n\nThis issue is to roll out [the feature"
},
{
"path": ".gitlab/issue_templates/Feature Proposal.md",
"chars": 257,
"preview": "## Description\n\n<!--\nInclude problem, use cases, benefits, and/or goals\n-->\n\n## Proposal\n\n## Links to related issues and"
},
{
"path": ".gitlab/issue_templates/Request for test infra feature toggle.md",
"chars": 837,
"preview": "# Summary\n\n<!-- Describe the feature you would like toggled in the gitlab-runner's test infra along with a reason. Examp"
},
{
"path": ".gitlab/issue_templates/Security developer workflow.md",
"chars": 3558,
"preview": "<!--\n\n# Read Me First!\n\nCreate this issue under https://gitlab.com/gitlab-org/security/gitlab-runner\n\nSet the title to: "
},
{
"path": ".gitlab/issue_templates/bump-golang.md",
"chars": 1114,
"preview": "<!--\n\nThese are the steps we should follow when we want to bump the golang version\n\n-->\n\n### Steps\n\n1. [ ] bump golang i"
},
{
"path": ".gitlab/issue_templates/planning_issue.md",
"chars": 2035,
"preview": "\n<!--\n\nUpdate milestone placeholders below\n\n-->\n\n\n## :paperclips: Cross-Functional Programs\n\n## :runner: Runner Core\n\n##"
},
{
"path": ".gitlab/issue_templates/trainee-backend-maintainer.md",
"chars": 3446,
"preview": "<!--\n Update the title of this issue to: Trainee BE maintainer (GitLab Runner) - [full name]\n-->\n\n## Basic setup\n\n1. [ "
},
{
"path": ".gitlab/merge.release.yml",
"chars": 217,
"preview": "actions:\n - write:\n file: VERSION\n contents: \"{{ .Release.VersionObject.NextMinor.StringNoPrefix }}\"\n - comm"
},
{
"path": ".gitlab/merge_request_templates/Default.md",
"chars": 427,
"preview": "<!--\nThis is a general Merge Request template.\nConsider choosing a template from the list above if it will match your ca"
},
{
"path": ".gitlab/merge_request_templates/Documentation.md",
"chars": 3281,
"preview": "## What does this MR do?\n\n<!-- Briefly describe what this MR is about. -->\n\n## Related issues\n\n<!-- Link related issues "
},
{
"path": ".gitlab/merge_request_templates/Security Release.md",
"chars": 3173,
"preview": "<!--\n\n# README first!\n\nThis MR should be created on `gitlab.com/gitlab-org/security/gitlab-runner`.\n\nSee [the general de"
},
{
"path": ".gitlab/renovate.json",
"chars": 1197,
"preview": "{\n \"extends\": [\n \":disableMajorUpdates\"\n ],\n \"regexManagers\": [\n {\n \"fileMatch\": [\n \"\\\\.gitlab\\\\/ci"
},
{
"path": ".gitlab/route-map.yml",
"chars": 255,
"preview": "# Documentation\n- source: /docs/(.+?/)_index\\.md/ # docs/configuration/_index.md\n public: '\\1' # c"
},
{
"path": ".gitlab-ci.yml",
"chars": 1865,
"preview": "stages:\n - build\n - qa\n - test\n - coverage\n - package\n - release\n - test kubernetes integration\n - postrelease\n "
},
{
"path": ".golangci.yml",
"chars": 3268,
"preview": "version: \"2\"\nrun:\n concurrency: 8\nlinters:\n default: none\n enable:\n - bodyclose\n - dogsled\n - errcheck\n -"
},
{
"path": ".labkit_logging_todo.yml",
"chars": 1240,
"preview": "# LabKit Logging Field Standardization TODO\n# AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.\n#\n# This file tracks deprecated"
},
{
"path": ".markdownlint-cli2.yaml",
"chars": 3623,
"preview": "---\n# Base Markdownlint configuration\n# Extended Markdownlint configuration in docs/.markdownlint/\n# See https://github."
},
{
"path": ".mockery.yaml",
"chars": 350,
"preview": "all: true\ndir: '{{.InterfaceDir}}'\nfilename: 'mocks.go'\nstructname: \"{{.Mock}}{{.InterfaceName | firstUpper}}\"\npkgname: "
},
{
"path": ".tool-versions",
"chars": 204,
"preview": "# renovate: datasource=docker depName=golang allowedVersions=/1\\.26\\..+/\ngolang 1.26.1\nyq 4.44.3\nmockery 2.53.3\nmage 1.1"
},
{
"path": ".vale.ini",
"chars": 295,
"preview": "# Vale configuration file.\n#\n# For more information, see https://vale.sh/docs/vale-ini.\n\nStylesPath = docs/.vale\nMinAler"
},
{
"path": "AGENTS.md",
"chars": 11457,
"preview": "# GitLab Runner — AI Agent Instructions\n\nThis file provides context for AI agents operating on this repository.\nAll agen"
},
{
"path": "CHANGELOG.md",
"chars": 388961,
"preview": "## v18.11.1 (2026-04-20)\n\n### Bug fixes\n\n- Merge branch 'security-fix-k8s-uid-gid-root-bypass' into 'main' [!6643](https"
},
{
"path": "CONTRIBUTING.md",
"chars": 6001,
"preview": "## Developer Certificate of Origin + License\n\nBy contributing to GitLab Inc., You accept and agree to the following term"
},
{
"path": "Dangerfile",
"chars": 151,
"preview": "require \"gitlab-dangerfiles\"\n\nGitlab::Dangerfiles.for_project(self) do |dangerfiles|\n dangerfiles.import_plugins\n dang"
},
{
"path": "LICENSE",
"chars": 1084,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2015-2019 GitLab Inc.\n\nPermission is hereby granted, free of charge, to any person "
},
{
"path": "Makefile",
"chars": 18962,
"preview": "NAME ?= gitlab-runner\nAPP_NAME ?= $(NAME)\nexport PACKAGE_NAME ?= $(NAME)\nexport VERSION := $(shell ./ci/version)\nREVISIO"
},
{
"path": "Makefile.build.mk",
"chars": 4326,
"preview": "BASE_BINARY_PATH := out/binaries/$(NAME)\nBINARIES := ${BASE_BINARY_PATH}-linux-amd64\nBINARIES += ${BASE_BINARY_PATH}-lin"
},
{
"path": "Makefile.runner_helper.mk",
"chars": 4385,
"preview": "# -------------------------------------------------------------------------------\n# The following make file does two thi"
},
{
"path": "NOTICE",
"chars": 1444,
"preview": "With regard to the GitLab Software:\n\nThe MIT License (MIT)\n\nCopyright (c) 2015-2019 GitLab B.V.\n\nPermission is hereby gr"
},
{
"path": "PROCESS.md",
"chars": 20012,
"preview": "## GitLab core team & GitLab Inc. contribution process\n\n---\n\n<!-- START doctoc generated TOC please keep comment here to"
},
{
"path": "PROVENANCE.md",
"chars": 1091,
"preview": "# GitLab CI provenance\n\nThis is an official [SLSA Provenance](https://slsa.dev/provenance/v1)\n`buildType` that describes"
},
{
"path": "Procfile",
"chars": 64,
"preview": "web: gitlab-runner run-single -addr=\":$PORT\" -builds-dir=\"/tmp\"\n"
},
{
"path": "README.md",
"chars": 3894,
"preview": "# GitLab Runner\n\nThis is the repository of the official GitLab Runner written in Go.\nIt executes tests and sends the res"
},
{
"path": "VERSION",
"chars": 7,
"preview": "19.0.0\n"
},
{
"path": "Vagrantfile",
"chars": 1986,
"preview": "# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\n# Check if the required plugins are installed.\nunless Vagrant.has_plugin?('vag"
},
{
"path": "apps/gitlab-runner-helper/main.go",
"chars": 1490,
"preview": "package main\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/KimMachineGun/automemlimit/memlimit\"\n\t\"github.com/sirupsen/l"
},
{
"path": "argo_translation.yml",
"chars": 408,
"preview": "source_language: en-us\ntarget_languages: [fr-fr, ja-jp, ko-kr]\nargo_request_key: GITTECH\ntranslation_mr_labels: [gitlab-"
},
{
"path": "cache/adapter.go",
"chars": 2538,
"preview": "package cache\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/prometheus/client_golang/"
},
{
"path": "cache/adapter_test.go",
"chars": 2708,
"preview": "//go:build !integration\n\npackage cache\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"g"
},
{
"path": "cache/azure/adapter.go",
"chars": 4740,
"preview": "package azure\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"gi"
},
{
"path": "cache/azure/adapter_test.go",
"chars": 9033,
"preview": "//go:build !integration\n\npackage azure\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"testing\"\n\t\""
},
{
"path": "cache/azure/azure.go",
"chars": 7631,
"preview": "package azure\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azcore"
},
{
"path": "cache/azure/azure_test.go",
"chars": 7851,
"preview": "//go:build !integration\n\npackage azure\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\""
},
{
"path": "cache/azure/credentials_resolver.go",
"chars": 1464,
"preview": "package azure\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/cache/cacheconfig\"\n)\n\ntype credentialsRe"
},
{
"path": "cache/azure/credentials_resolver_test.go",
"chars": 3473,
"preview": "//go:build !integration\n\npackage azure\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr"
},
{
"path": "cache/azure/mocks.go",
"chars": 9171,
"preview": "// Code generated by mockery; DO NOT EDIT.\n// github.com/vektra/mockery\n// template: testify\n\npackage azure\n\nimport (\n\t\""
},
{
"path": "cache/cache.go",
"chars": 2694,
"preview": "package cache\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"gitlab.com/gitlab"
},
{
"path": "cache/cache_test.go",
"chars": 8265,
"preview": "//go:build !integration\n\npackage cache\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/sirupsen/"
},
{
"path": "cache/cacheconfig/cacheconfig.go",
"chars": 9026,
"preview": "package cacheconfig\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/minio/minio-go/v7/pkg/s3utils\"\n\t\"github."
},
{
"path": "cache/cacheconfig/cacheconfig_test.go",
"chars": 11105,
"preview": "//go:build !integration\n\npackage cacheconfig_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/BurntSushi/toml\"\n\t\"github.com/stret"
},
{
"path": "cache/cachekey/cachekey.go",
"chars": 1489,
"preview": "package cachekey\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\t\"unicode\"\n)\n\n// normaliser decodes URL-encoded slashes and dots, a"
},
{
"path": "cache/cachekey/cachekey_test.go",
"chars": 5917,
"preview": "//go:build !integration\n\npackage cachekey\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n"
},
{
"path": "cache/credentials_adapter.go",
"chars": 1598,
"preview": "package cache\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/cache/cacheconfig\"\n)\n\ntype CredentialsAdap"
},
{
"path": "cache/credentials_adapter_test.go",
"chars": 2817,
"preview": "//go:build !integration\n\npackage cache\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"gitlab.co"
},
{
"path": "cache/gcs/adapter.go",
"chars": 3775,
"preview": "package gcs\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"cloud.google.com/go/storage\"\n\t\"gith"
},
{
"path": "cache/gcs/adapter_test.go",
"chars": 11912,
"preview": "//go:build !integration\n\npackage gcs\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"testing\"\n\t\"time\"\n\n\t\"cloud.googl"
},
{
"path": "cache/gcs/credentials_resolver.go",
"chars": 4281,
"preview": "package gcs\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"cloud.google.com/go/compute/metadata\"\n\tcredentialsapiv"
},
{
"path": "cache/gcs/credentials_resolver_test.go",
"chars": 6622,
"preview": "//go:build !integration\n\npackage gcs\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"cl"
},
{
"path": "cache/gcs/mocks.go",
"chars": 12396,
"preview": "// Code generated by mockery; DO NOT EDIT.\n// github.com/vektra/mockery\n// template: testify\n\npackage gcs\n\nimport (\n\t\"co"
},
{
"path": "cache/gcsv2/adapter.go",
"chars": 3939,
"preview": "package gcsv2\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"cloud.google.com/go/storage\"\n\t\"gi"
},
{
"path": "cache/gcsv2/adapter_test.go",
"chars": 6222,
"preview": "//go:build !integration\n\npackage gcsv2\n\nimport (\n\t\"net/http\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t"
},
{
"path": "cache/mocks.go",
"chars": 10914,
"preview": "// Code generated by mockery; DO NOT EDIT.\n// github.com/vektra/mockery\n// template: testify\n\npackage cache\n\nimport (\n\t\""
},
{
"path": "cache/s3/adapter.go",
"chars": 3507,
"preview": "package s3\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/minio/minio-go/v7/pkg/encrypt\"\n\t\"git"
},
{
"path": "cache/s3/adapter_test.go",
"chars": 8489,
"preview": "//go:build !integration\n\npackage s3\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.c"
},
{
"path": "cache/s3/bucket_location_tripper.go",
"chars": 916,
"preview": "package s3\n\nimport (\n\t\"bytes\"\n\t\"encoding/xml\"\n\t\"io\"\n\t\"net/http\"\n)\n\ntype bucketLocationTripper struct {\n\tbucketLocation s"
},
{
"path": "cache/s3/credentials_adapter.go",
"chars": 977,
"preview": "package s3\n\nimport (\n\t\"fmt\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/cache\"\n\t\"gitlab.com/gitlab-org/gitlab-runner/cache/ca"
},
{
"path": "cache/s3/credentials_adapter_test.go",
"chars": 1636,
"preview": "//go:build !integration\n\npackage s3\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/te"
},
{
"path": "cache/s3/minio.go",
"chars": 1981,
"preview": "package s3\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/minio/minio-"
},
{
"path": "cache/s3/minio_test.go",
"chars": 7941,
"preview": "//go:build !integration\n\npackage s3\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/minio/mi"
},
{
"path": "cache/s3/mocks.go",
"chars": 4451,
"preview": "// Code generated by mockery; DO NOT EDIT.\n// github.com/vektra/mockery\n// template: testify\n\npackage s3\n\nimport (\n\t\"con"
},
{
"path": "cache/s3v2/adapter.go",
"chars": 4877,
"preview": "package s3v2\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"git"
},
{
"path": "cache/s3v2/adapter_test.go",
"chars": 18118,
"preview": "//go:build !integration\n\npackage s3v2\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com"
},
{
"path": "cache/s3v2/mocks.go",
"chars": 9015,
"preview": "// Code generated by mockery; DO NOT EDIT.\n// github.com/vektra/mockery\n// template: testify\n\npackage s3v2\n\nimport (\n\t\"c"
},
{
"path": "cache/s3v2/s3.go",
"chars": 21562,
"preview": "package s3v2\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/hashicorp"
},
{
"path": "cache/s3v2/s3_test.go",
"chars": 43224,
"preview": "//go:build !integration\n\npackage s3v2\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http"
},
{
"path": "cache/test/adapter.go",
"chars": 2286,
"preview": "package test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/cache\"\n\t\""
},
{
"path": "certs/README.md",
"chars": 4549,
"preview": "This directory contains public certificates for signing GitLab Runner binaries.\n\n### Certificates\n\n#### `gitlab-inc-ssl-"
},
{
"path": "certs/gitlab-inc-ssl-com.crt",
"chars": 2009,
"preview": "-----BEGIN CERTIFICATE-----\nMIIFnjCCA4agAwIBAgIQOccxLuqXNkQ+5mOmabYjpjANBgkqhkiG9w0BAQsFADB7\nMQswCQYDVQQGEwJVUzEOMAwGA1U"
},
{
"path": "ci/.test-failures.servercore1809.txt",
"chars": 36,
"preview": "TestBuildCancel\nTestBuildCancel/cmd\n"
},
{
"path": "ci/.test-failures.servercore21H2.txt",
"chars": 36,
"preview": "TestBuildCancel\nTestBuildCancel/cmd\n"
},
{
"path": "ci/prebuilt_helper_image",
"chars": 940,
"preview": "#!/usr/bin/env sh\n\nIMAGE=$1\n\nif echo \"$IMAGE\" | grep -q \"prebuilt-\"; then\n\texit 0\nfi\n\nif echo \"$IMAGE\" | grep -q \"_archi"
},
{
"path": "ci/release_dir",
"chars": 8516,
"preview": "#!/bin/bash\n\nfiles=\"\nout/binaries/gitlab-runner-darwin-amd64 out/release/binaries/gitlab-runner-darwin-amd64\nout/binarie"
},
{
"path": "ci/release_s3",
"chars": 948,
"preview": "#!/usr/bin/env bash\n\nset -eo pipefail\n\n# Check if the AWS CLI is installed\nif ! command -v aws &> /dev/null\nthen\n ech"
},
{
"path": "ci/rpm_verify_fips",
"chars": 1372,
"preview": "#!/usr/bin/env bash\n\nset -e\nset -u\nset -o pipefail\n\n# This script needs to run in the container registry.gitlab.com/gitl"
},
{
"path": "ci/touch_git",
"chars": 208,
"preview": "#!/usr/bin/env sh\n\n# modify git files to reflect their last change date\ngit ls-files | while read file; do\n commit_date"
},
{
"path": "ci/touch_git.ps1",
"chars": 217,
"preview": "# modify git files to reflect their last change date\ngit ls-files | ForEach-Object {\n $commit_date = git log -1 --for"
},
{
"path": "ci/version",
"chars": 544,
"preview": "#!/usr/bin/env bash\n\nset -eo pipefail\n\nversion=$(cat VERSION || echo dev | sed -e 's/^v//g')\nexact_tag=$(git describe --"
},
{
"path": "commands/builds_helper.go",
"chars": 17679,
"preview": "package commands\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"net/http\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/prometheus/client_golang/"
},
{
"path": "commands/builds_helper_integration_test.go",
"chars": 1873,
"preview": "//go:build integration\n\npackage commands\n\nimport (\n\t\"io\"\n\t\"runtime\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/prometheus/client_g"
},
{
"path": "commands/builds_helper_test.go",
"chars": 14611,
"preview": "//go:build !integration\n\npackage commands\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\t\"time\"\n\n\t\""
},
{
"path": "commands/config.go",
"chars": 542,
"preview": "package commands\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\nfunc GetDefaultConfigFile() string {"
},
{
"path": "commands/config_unix.go",
"chars": 625,
"preview": "//go:build aix || android || darwin || dragonfly || freebsd || hurd || illumos || linux || netbsd || openbsd || solaris "
},
{
"path": "commands/config_windows.go",
"chars": 270,
"preview": "package commands\n\nimport (\n\t\"gitlab.com/gitlab-org/gitlab-runner/helpers/homedir\"\n)\n\nfunc getDefaultConfigDirectory() st"
},
{
"path": "commands/constants.go",
"chars": 133,
"preview": "package commands\n\nconst (\n\tosTypeLinux = \"linux\"\n\tosTypeDarwin = \"darwin\"\n\tosTypeWindows = \"windows\"\n\tosTypeFreeBSD ="
},
{
"path": "commands/fleeting/fleeting.go",
"chars": 3501,
"preview": "package fleeting\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.co"
},
{
"path": "commands/fleeting/fleeting_integration_test.go",
"chars": 1017,
"preview": "//go:build integration\n\npackage fleeting\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/requ"
},
{
"path": "commands/health_helper.go",
"chars": 2826,
"preview": "package commands\n\nimport (\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/prometheus/client_golang/prometheus\"\n\t\"github.com/sirupsen/logr"
},
{
"path": "commands/helpers/archive/archive.go",
"chars": 2994,
"preview": "package archive\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n)\n\nvar (\n\t// ErrUnsupportedArchiveFormat is returned i"
},
{
"path": "commands/helpers/archive/archive_test.go",
"chars": 2817,
"preview": "//go:build !integration\n\npackage archive_test\n\nimport (\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"gitla"
},
{
"path": "commands/helpers/archive/fastzip/options_test.go",
"chars": 2833,
"preview": "//go:build !integration\n\npackage fastzip\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testi"
},
{
"path": "commands/helpers/archive/fastzip/zip_fastzip_archiver.go",
"chars": 3469,
"preview": "package fastzip\n\nimport (\n\t\"archive/zip\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/klauspost/compress/zstd\""
},
{
"path": "commands/helpers/archive/fastzip/zip_fastzip_extractor.go",
"chars": 1342,
"preview": "package fastzip\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/saracen/fastzip\"\n\n\t\"gitlab.com/gitlab-o"
},
{
"path": "commands/helpers/archive/gziplegacy/gzip_legacy_archiver.go",
"chars": 852,
"preview": "package gziplegacy\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"os\"\n\t\"sort\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/commands/helpers/arch"
},
{
"path": "commands/helpers/archive/mocks.go",
"chars": 4566,
"preview": "// Code generated by mockery; DO NOT EDIT.\n// github.com/vektra/mockery\n// template: testify\n\npackage archive\n\nimport (\n"
},
{
"path": "commands/helpers/archive/raw/raw_archiver.go",
"chars": 1142,
"preview": "package raw\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/commands/helpers/archive\"\n"
},
{
"path": "commands/helpers/archive/tarzstd/ops_unix.go",
"chars": 960,
"preview": "//go:build !windows\n\npackage tarzstd\n\nimport (\n\t\"os\"\n\t\"runtime\"\n\t\"time\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc lchmod(name st"
},
{
"path": "commands/helpers/archive/tarzstd/ops_windows.go",
"chars": 422,
"preview": "//go:build windows\n\npackage tarzstd\n\nimport (\n\t\"os\"\n\t\"time\"\n)\n\nfunc lchmod(name string, mode os.FileMode) error {\n\tif mo"
},
{
"path": "commands/helpers/archive/tarzstd/tarzstd_archiver.go",
"chars": 2600,
"preview": "package tarzstd\n\nimport (\n\t\"archive/tar\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com"
},
{
"path": "commands/helpers/archive/tarzstd/tarzstd_extractor.go",
"chars": 2701,
"preview": "package tarzstd\n\nimport (\n\t\"archive/tar\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com"
},
{
"path": "commands/helpers/archive/ziplegacy/zip_legacy_archiver.go",
"chars": 1070,
"preview": "package ziplegacy\n\nimport (\n\t\"archive/zip\"\n\t\"context\"\n\t\"io\"\n\t\"os\"\n\t\"sort\"\n\n\t\"github.com/klauspost/compress/zstd\"\n\t\"githu"
},
{
"path": "commands/helpers/archive/ziplegacy/zip_legacy_extractor.go",
"chars": 740,
"preview": "package ziplegacy\n\nimport (\n\t\"archive/zip\"\n\t\"context\"\n\t\"io\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/commands/helpers/arch"
},
{
"path": "commands/helpers/archiver.go",
"chars": 2170,
"preview": "package helpers\n\nimport (\n\t\"os\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/commands/helpers/archive\"\n\t\"gitlab.com/gitlab-org"
},
{
"path": "commands/helpers/archiver_test.go",
"chars": 3718,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"bytes\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/str"
},
{
"path": "commands/helpers/artifact_metadata.go",
"chars": 6253,
"preview": "package helpers\n\nimport (\n\t\"bufio\"\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"str"
},
{
"path": "commands/helpers/artifact_metadata_test.go",
"chars": 9155,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/f"
},
{
"path": "commands/helpers/artifacts_downloader.go",
"chars": 4240,
"preview": "package helpers\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/urf"
},
{
"path": "commands/helpers/artifacts_downloader_test.go",
"chars": 4987,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"test"
},
{
"path": "commands/helpers/artifacts_test.go",
"chars": 3821,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"io\"\n\t\"os\"\n\t\"testing\"\n\n\t\"gi"
},
{
"path": "commands/helpers/artifacts_uploader.go",
"chars": 7617,
"preview": "package helpers\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"time\"\n\n\t\"github.com/siru"
},
{
"path": "commands/helpers/artifacts_uploader_integration_test.go",
"chars": 6432,
"preview": "//go:build integration\n\npackage helpers\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t"
},
{
"path": "commands/helpers/artifacts_uploader_test.go",
"chars": 15627,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testi"
},
{
"path": "commands/helpers/cache_archiver.go",
"chars": 14056,
"preview": "package helpers\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"net/http\"\n\t\"net/url\"\n\t\""
},
{
"path": "commands/helpers/cache_archiver_integration_test.go",
"chars": 14922,
"preview": "//go:build integration\n\npackage helpers_test\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\""
},
{
"path": "commands/helpers/cache_archiver_test.go",
"chars": 4178,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t"
},
{
"path": "commands/helpers/cache_client.go",
"chars": 939,
"preview": "package helpers\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"gitlab.com/gitlab-org/gitlab-runner/common\"\n)\n\ntype CacheClient "
},
{
"path": "commands/helpers/cache_defaults.go",
"chars": 1342,
"preview": "package helpers\n\nimport \"fmt\"\n\n// Default sizes for cache-extractor and cache-archiver transfer tuning (overridden by CL"
},
{
"path": "commands/helpers/cache_defaults_test.go",
"chars": 1046,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestValida"
},
{
"path": "commands/helpers/cache_env.go",
"chars": 442,
"preview": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/joho/godotenv\"\n)\n\nfunc loadEnvFile(filename string) error {\n\tif fil"
},
{
"path": "commands/helpers/cache_env_test.go",
"chars": 1418,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n"
},
{
"path": "commands/helpers/cache_extractor.go",
"chars": 16386,
"preview": "package helpers\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\""
},
{
"path": "commands/helpers/cache_extractor_test.go",
"chars": 14976,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"ne"
},
{
"path": "commands/helpers/cache_init.go",
"chars": 878,
"preview": "package helpers\n\nimport (\n\t\"os\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/urfave/cli\"\n\n\t\"gitlab.com/gitlab-org/gitlab-"
},
{
"path": "commands/helpers/cache_init_integration_test.go",
"chars": 1235,
"preview": "//go:build integration\n\npackage helpers_test\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/"
},
{
"path": "commands/helpers/cache_metadata.go",
"chars": 2532,
"preview": "package helpers\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/textproto\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\ncons"
},
{
"path": "commands/helpers/cache_metadata_test.go",
"chars": 1488,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testi"
},
{
"path": "commands/helpers/file_archiver.go",
"chars": 6336,
"preview": "package helpers\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n"
},
{
"path": "commands/helpers/file_archiver_integration_test.go",
"chars": 3927,
"preview": "//go:build integration\n\npackage helpers_test\n\nimport (\n\t\"fmt\"\n\t\"maps\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"strings\"\n\t\"test"
},
{
"path": "commands/helpers/file_archiver_test.go",
"chars": 19012,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/si"
},
{
"path": "commands/helpers/health_check.go",
"chars": 2965,
"preview": "package helpers\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"git"
},
{
"path": "commands/helpers/health_check_integration_test.go",
"chars": 4887,
"preview": "//go:build integration\n\npackage helpers\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gi"
},
{
"path": "commands/helpers/helpers_archiver_test.go",
"chars": 2590,
"preview": "// Helper functions that are shared between unit tests and integration tests\n\npackage helpers\n\nimport (\n\t\"testing\"\n\n\t\"gi"
},
{
"path": "commands/helpers/helpers_cache_archiver_test.go",
"chars": 932,
"preview": "// Helper functions that are shared between unit tests and integration tests\n\npackage helpers\n\nimport (\n\t\"os\"\n\t\"time\"\n\n\t"
},
{
"path": "commands/helpers/internal/store/store.go",
"chars": 3450,
"preview": "package store\n\nimport (\n\t\"bufio\"\n\t\"crypto/cipher\"\n\t\"crypto/rand\"\n\t\"crypto/sha256\"\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"e"
},
{
"path": "commands/helpers/internal/store/store_test.go",
"chars": 1344,
"preview": "//go:build !integration\n\npackage store\n\nimport (\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"g"
},
{
"path": "commands/helpers/internal/store/store_unix.go",
"chars": 483,
"preview": "//go:build !windows\n\npackage store\n\nimport \"os\"\n\nfunc openFile(pathname string) (*os.File, error) {\n\t// Check if file ex"
},
{
"path": "commands/helpers/internal/store/store_unix_test.go",
"chars": 1010,
"preview": "//go:build !windows && !integration\n\npackage store\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"testing\"\n\n\t\"github.com/"
},
{
"path": "commands/helpers/internal/store/store_windows.go",
"chars": 765,
"preview": "//go:build windows\n\npackage store\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"golang.org/x/sys/windows\"\n)\n\n// openFile is like os.OpenFile"
},
{
"path": "commands/helpers/internal/store/store_windows_test.go",
"chars": 550,
"preview": "//go:build windows && !integration\n\npackage store\n\nimport (\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"te"
},
{
"path": "commands/helpers/meter/formatters.go",
"chars": 1290,
"preview": "package meter\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"time\"\n)\n\nfunc FormatByteRate(b uint64, d time.Duration) string {\n\tb = uin"
},
{
"path": "commands/helpers/meter/formatters_test.go",
"chars": 4832,
"preview": "//go:build !integration\n\npackage meter\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/asser"
},
{
"path": "commands/helpers/meter/meter.go",
"chars": 1169,
"preview": "package meter\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n)\n\nconst UnknownTotalSize = 0\n\ntype TransferMeterCommand struct {"
},
{
"path": "commands/helpers/meter/reader.go",
"chars": 521,
"preview": "package meter\n\nimport (\n\t\"io\"\n\t\"sync/atomic\"\n\t\"time\"\n)\n\ntype reader struct {\n\t*meter\n\n\tr io.ReadCloser\n}\n\nfunc NewReader"
},
{
"path": "commands/helpers/meter/reader_test.go",
"chars": 895,
"preview": "//go:build !integration\n\npackage meter\n\nimport (\n\t\"io\"\n\t\"strings\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/test"
},
{
"path": "commands/helpers/meter/writer.go",
"chars": 927,
"preview": "package meter\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"sync/atomic\"\n\t\"time\"\n)\n\ntype writer struct {\n\t*meter\n\n\tw io.WriteCloser\n\tat i"
},
{
"path": "commands/helpers/meter/writer_test.go",
"chars": 1854,
"preview": "//go:build !integration\n\npackage meter\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.co"
},
{
"path": "commands/helpers/mocks.go",
"chars": 9618,
"preview": "// Code generated by mockery; DO NOT EDIT.\n// github.com/vektra/mockery\n// template: testify\n\npackage helpers\n\nimport (\n"
},
{
"path": "commands/helpers/proxy_exec.go",
"chars": 3454,
"preview": "package helpers\n\nimport (\n\t\"debug/buildinfo\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime/debug\"\n\n"
},
{
"path": "commands/helpers/proxy_exec_test.go",
"chars": 1676,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"testing\"\n\n\t\"github"
},
{
"path": "commands/helpers/read_logs.go",
"chars": 4442,
"preview": "package helpers\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/urfave/cli\"\n\n\t\"gitlab.com/gitlab-o"
},
{
"path": "commands/helpers/read_logs_test.go",
"chars": 6089,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stre"
},
{
"path": "commands/helpers/retry_helper.go",
"chars": 2681,
"preview": "package helpers\n\nimport (\n\t\"encoding/xml\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n/"
},
{
"path": "commands/helpers/retry_helper_test.go",
"chars": 2392,
"preview": "//go:build !integration\n\npackage helpers\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.co"
},
{
"path": "commands/helpers/testdata/test-artifacts/file-0",
"chars": 7,
"preview": "file-0\n"
},
{
"path": "commands/helpers/testdata/test-artifacts/file-1",
"chars": 7,
"preview": "file-1\n"
},
{
"path": "commands/helpers/testdata/test-artifacts/file-2",
"chars": 7,
"preview": "file-2\n"
},
{
"path": "commands/helpers/testdata/test-artifacts/file-3",
"chars": 7,
"preview": "file-3\n"
},
{
"path": "commands/helpers/testdata/test-artifacts/file-4",
"chars": 7,
"preview": "file-4\n"
}
]
// ... and 1003 more files (download for full content)
About this extraction
This page contains the full source code of the gitlabhq/gitlab-runner GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1203 files (11.6 MB), approximately 3.1M tokens, and a symbol index with 10688 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.