Class: Gitlab::Ci::RunnerReleases
- Inherits:
-
Object
- Object
- Gitlab::Ci::RunnerReleases
- Includes:
- Singleton
- Defined in:
- lib/gitlab/ci/runner_releases.rb
Constant Summary collapse
- RELEASES_VALIDITY_PERIOD =
1.day
- INITIAL_BACKOFF =
5.seconds
- MAX_BACKOFF =
1.hour
- BACKOFF_GROWTH_FACTOR =
2.0
Instance Method Summary collapse
- #enabled? ⇒ Boolean
-
#initialize ⇒ RunnerReleases
constructor
A new instance of RunnerReleases.
-
#releases ⇒ Object
Returns a sorted list of the publicly available GitLab Runner releases.
-
#releases_by_minor ⇒ Object
Returns a hash with the latest runner version per minor release.
- #reset_backoff! ⇒ Object
Constructor Details
#initialize ⇒ RunnerReleases
Returns a new instance of RunnerReleases.
14 15 16 |
# File 'lib/gitlab/ci/runner_releases.rb', line 14 def initialize reset_backoff! end |
Instance Method Details
#enabled? ⇒ Boolean
18 19 20 |
# File 'lib/gitlab/ci/runner_releases.rb', line 18 def enabled? ::Gitlab::CurrentSettings.current_application_settings.update_runner_versions_enabled? end |
#releases ⇒ Object
Returns a sorted list of the publicly available GitLab Runner releases
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/gitlab/ci/runner_releases.rb', line 24 def releases return unless enabled? return if backoff_active? Rails.cache.fetch( cache_key, skip_nil: true, expires_in: RELEASES_VALIDITY_PERIOD, race_condition_ttl: 10.seconds ) do response = Gitlab::HTTP.try_get(runner_releases_url) @releases_by_minor = nil unless response&.success? @backoff_expire_time = next_backoff.from_now break nil end reset_backoff! extract_releases(response) rescue Errno::ETIMEDOUT @backoff_expire_time = next_backoff.from_now break nil end end |
#releases_by_minor ⇒ Object
Returns a hash with the latest runner version per minor release
52 53 54 55 56 |
# File 'lib/gitlab/ci/runner_releases.rb', line 52 def releases_by_minor return unless releases @releases_by_minor ||= releases.group_by(&:without_patch).transform_values(&:max) end |
#reset_backoff! ⇒ Object
58 59 60 61 |
# File 'lib/gitlab/ci/runner_releases.rb', line 58 def reset_backoff! @backoff_expire_time = nil @backoff_count = 0 end |