github-pages-health-check 1.16.0 → 1.17.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +1 -0
  3. data/.github/dependabot.yml +15 -0
  4. data/.github/workflows/push-cibuild.yml +18 -0
  5. data/.rubocop.yml +13 -16
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +2 -2
  8. data/Dockerfile +18 -0
  9. data/Gemfile +9 -0
  10. data/config/cloudflare-ips.txt +8 -7
  11. data/config/fastly-ips.txt +5 -0
  12. data/github-pages-health-check.gemspec +1 -8
  13. data/lib/github-pages-health-check.rb +3 -3
  14. data/lib/github-pages-health-check/caa.rb +1 -1
  15. data/lib/github-pages-health-check/domain.rb +50 -15
  16. data/lib/github-pages-health-check/error.rb +2 -2
  17. data/lib/github-pages-health-check/errors.rb +1 -1
  18. data/lib/github-pages-health-check/errors/build_error.rb +1 -1
  19. data/lib/github-pages-health-check/errors/deprecated_ip_error.rb +1 -1
  20. data/lib/github-pages-health-check/errors/invalid_a_record_error.rb +1 -1
  21. data/lib/github-pages-health-check/errors/invalid_aaaa_record_error.rb +1 -1
  22. data/lib/github-pages-health-check/errors/invalid_cname_error.rb +1 -1
  23. data/lib/github-pages-health-check/errors/invalid_dns_error.rb +1 -1
  24. data/lib/github-pages-health-check/errors/invalid_domain_error.rb +1 -1
  25. data/lib/github-pages-health-check/errors/not_served_by_pages_error.rb +1 -1
  26. data/lib/github-pages-health-check/printer.rb +1 -1
  27. data/lib/github-pages-health-check/repository.rb +2 -2
  28. data/lib/github-pages-health-check/resolver.rb +6 -6
  29. data/lib/github-pages-health-check/version.rb +1 -1
  30. data/script/cibuild +1 -1
  31. data/script/cibuild-docker +11 -0
  32. data/script/test +1 -1
  33. metadata +17 -89
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d36f33b2755da0128337848a2f1ae21df8abed2c66b202c9ef175a10ee47f62b
4
- data.tar.gz: aa0fde581a8f5009b6bcd55afe68d87363e2d753fb05f054bc123008c81427fe
3
+ metadata.gz: ab80d6cf8da62b7d552dc21cb09fb42835a438cd4c62c84fb7b965120348b8d8
4
+ data.tar.gz: f5d6054ec2d220b5ec775fff2dffc714a2169f3052daa63cb6ae2678a2610fc3
5
5
  SHA512:
6
- metadata.gz: 1eb3bfb1f74f894f8fa93d80452e718cd1f30023c8b197f57f3cca6ddf17feceee8f9c585572daea02569e30f0031ab5cbff8af7e54cba401a3408f0ab6e4c45
7
- data.tar.gz: 2e482e777cbb3c916d3c6fb5d1968a96c5cc6e847e1623a06cea1397d75b669bcaafaf62fa26ee486e77a9ba0512c93fdc4e8b04ffe07cd7edd1dc98f8ed5bc9
6
+ metadata.gz: b9129bccde2467d071eae219e3de4372682f6e95b9622ed7974523a706680370ecea940138e3d6a38fcd0b667d5ef8c2465688c6825ed6e0253ca3aec9340e9a
7
+ data.tar.gz: d4e701f69db381861cde03f85c1c53ee37c39476db2744afaee9b7b810f033579feaf15a3d055849a7937fa7a8fbe70951eeb48749bc486d20351127b35959c9
data/.dockerignore ADDED
@@ -0,0 +1 @@
1
+ Gemfile.lock
@@ -0,0 +1,15 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "10:00"
8
+ timezone: Europe/Vienna
9
+ pull-request-branch-name:
10
+ separator: "-"
11
+ open-pull-requests-limit: 99
12
+ allow:
13
+ - dependency-type: direct
14
+ - dependency-type: indirect
15
+ rebase-strategy: disabled
@@ -0,0 +1,18 @@
1
+ on: push
2
+ name: cibuild on push
3
+ jobs:
4
+ build:
5
+ name: "GitHub Pages Health Check Tests"
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ matrix:
9
+ ruby:
10
+ - 2.5
11
+ - 2.6
12
+ - 2.7
13
+ steps:
14
+ - uses: actions/checkout@master
15
+ - name: script/cibuild-docker
16
+ run: script/cibuild-docker
17
+ env:
18
+ RUBY_VERSION: ${{ matrix.ruby }}
data/.rubocop.yml CHANGED
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  AllCops:
20
- TargetRubyVersion: 2.2
20
+ TargetRubyVersion: 2.6
21
21
  Exclude:
22
22
  - 'bin/**/*'
23
23
  - 'script/**/*'
@@ -30,10 +30,6 @@ Layout/EndAlignment:
30
30
  Lint/UnreachableCode:
31
31
  Severity: error
32
32
 
33
- Style/StringLiterals:
34
- EnforcedStyle: double_quotes
35
- Severity: error
36
-
37
33
  Style/StringLiteralsInInterpolation:
38
34
  EnforcedStyle: double_quotes
39
35
 
@@ -41,10 +37,10 @@ Style/HashSyntax:
41
37
  EnforcedStyle: hash_rockets
42
38
  Severity: error
43
39
 
44
- Layout/AlignHash:
40
+ Layout/HashAlignment:
45
41
  SupportedLastArgumentHashStyles: always_ignore
46
42
 
47
- Layout/AlignParameters:
43
+ Layout/ParameterAlignment:
48
44
  Enabled: false # This is usually true, but we often want to roll back to
49
45
  # the start of a line.
50
46
 
@@ -55,12 +51,7 @@ Style/Attr:
55
51
  Style/ClassAndModuleChildren:
56
52
  Enabled: false # module X<\n>module Y is just as good as module X::Y.
57
53
 
58
- Style/PercentLiteralDelimiters:
59
- PreferredDelimiters:
60
- '%w': '{}'
61
- '%r': '{}'
62
-
63
- Metrics/LineLength:
54
+ Layout/LineLength:
64
55
  Max: 90
65
56
  Severity: warning
66
57
  Exclude:
@@ -99,13 +90,12 @@ Naming/FileName: #Rubocop doesn't like the Git*H*ub namespace
99
90
  Enabled: false
100
91
 
101
92
  Metrics/ParameterLists: { Max: 4 }
102
- Metrics/AbcSize: { Max: 20 }
103
93
 
104
- Layout/IndentHash: { EnforcedStyle: consistent }
94
+ Layout/FirstHashElementIndentation: { EnforcedStyle: consistent }
105
95
  Layout/MultilineMethodCallIndentation: { EnforcedStyle: indented }
106
96
  Layout/MultilineOperationIndentation: { EnforcedStyle: indented }
107
97
  Layout/FirstParameterIndentation: { EnforcedStyle: consistent }
108
- Layout/IndentArray: { EnforcedStyle: consistent }
98
+ Layout/FirstArrayElementIndentation: { EnforcedStyle: consistent }
109
99
  Layout/ExtraSpacing: { AllowForAlignment: true }
110
100
  Style/SignalException: { EnforcedStyle: only_raise }
111
101
  Style/StringLiterals: { EnforcedStyle: double_quotes }
@@ -155,3 +145,10 @@ Style/FrozenStringLiteralComment:
155
145
 
156
146
  Gemspec/RequiredRubyVersion:
157
147
  Enabled: false
148
+
149
+ Style/HashEachMethods:
150
+ Enabled: false
151
+ Style/HashTransformKeys:
152
+ Enabled: false
153
+ Style/HashTransformValues:
154
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.7.1
data/.travis.yml CHANGED
@@ -1,11 +1,11 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.4
4
3
  - 2.5
5
4
  - 2.6
5
+ - 2.7
6
6
 
7
7
  before_install:
8
- - gem install bundler
8
+ - gem update --system
9
9
 
10
10
  script: "script/cibuild"
11
11
 
data/Dockerfile ADDED
@@ -0,0 +1,18 @@
1
+ ARG RUBY_VERSION
2
+ FROM ruby:$RUBY_VERSION-slim
3
+ RUN set -ex \
4
+ && gem update --system --silent --quiet \
5
+ && apt-get update -y \
6
+ && apt-get upgrade -y \
7
+ && apt-get install -y \
8
+ build-essential \
9
+ git \
10
+ libcurl4-openssl-dev \
11
+ && apt-get clean
12
+ WORKDIR /app/github-pages-health-check
13
+ COPY Gemfile .
14
+ COPY github-pages-health-check.gemspec .
15
+ COPY lib/github-pages-health-check/version.rb lib/github-pages-health-check/version.rb
16
+ RUN bundle install
17
+ COPY . .
18
+ ENTRYPOINT [ "/bin/bash" ]
data/Gemfile CHANGED
@@ -2,4 +2,13 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
+ group :development do
6
+ gem "dotenv", "~> 2.7"
7
+ gem "gem-release", "~> 2.1"
8
+ gem "pry", "~> 0.10"
9
+ gem "rspec", "~> 3.0"
10
+ gem "rubocop", "~> 0.52"
11
+ gem "webmock", "~> 3.8"
12
+ end
13
+
5
14
  gemspec
@@ -1,14 +1,15 @@
1
+ 173.245.48.0/20
1
2
  103.21.244.0/22
2
3
  103.22.200.0/22
3
4
  103.31.4.0/22
4
- 104.16.0.0/12
5
- 108.162.192.0/18
6
- 131.0.72.0/22
7
5
  141.101.64.0/18
8
- 162.158.0.0/15
9
- 172.64.0.0/13
10
- 173.245.48.0/20
11
- 188.114.96.0/20
6
+ 108.162.192.0/18
12
7
  190.93.240.0/20
8
+ 188.114.96.0/20
13
9
  197.234.240.0/22
14
10
  198.41.128.0/17
11
+ 162.158.0.0/15
12
+ 172.64.0.0/13
13
+ 131.0.72.0/22
14
+ 104.16.0.0/13
15
+ 104.24.0.0/14
@@ -4,8 +4,13 @@
4
4
  103.245.222.0/23
5
5
  103.245.224.0/24
6
6
  104.156.80.0/20
7
+ 146.75.0.0/17
7
8
  151.101.0.0/16
8
9
  157.52.64.0/18
10
+ 167.82.0.0/17
11
+ 167.82.128.0/20
12
+ 167.82.160.0/20
13
+ 167.82.224.0/20
9
14
  172.111.64.0/18
10
15
  185.31.16.0/22
11
16
  199.27.72.0/21
@@ -19,13 +19,6 @@ Gem::Specification.new do |s|
19
19
  s.add_dependency("addressable", "~> 2.3")
20
20
  s.add_dependency("dnsruby", "~> 1.60")
21
21
  s.add_dependency("octokit", "~> 4.0")
22
- s.add_dependency("public_suffix", "~> 3.0")
22
+ s.add_dependency("public_suffix", ">= 3.0", "< 5.0")
23
23
  s.add_dependency("typhoeus", "~> 1.3")
24
-
25
- s.add_development_dependency("dotenv", "~> 1.0")
26
- s.add_development_dependency("gem-release", "~> 0.7")
27
- s.add_development_dependency("pry", "~> 0.10")
28
- s.add_development_dependency("rspec", "~> 3.0")
29
- s.add_development_dependency("rubocop", "~> 0.52")
30
- s.add_development_dependency("webmock", "~> 1.21")
31
24
  end
@@ -37,9 +37,9 @@ module GitHubPages
37
37
  # DNS and HTTP timeout, in seconds
38
38
  TIMEOUT = 7
39
39
 
40
- HUMAN_NAME = "GitHub Pages Health Check".freeze
41
- URL = "https://github.com/github/pages-health-check".freeze
42
- USER_AGENT = "Mozilla/5.0 (compatible; #{HUMAN_NAME}/#{VERSION}; +#{URL})".freeze
40
+ HUMAN_NAME = "GitHub Pages Health Check"
41
+ URL = "https://github.com/github/pages-health-check"
42
+ USER_AGENT = "Mozilla/5.0 (compatible; #{HUMAN_NAME}/#{VERSION}; +#{URL})"
43
43
 
44
44
  TYPHOEUS_OPTIONS = {
45
45
  :followlocation => true,
@@ -9,7 +9,7 @@ module GitHubPages
9
9
  class CAA
10
10
  attr_reader :host, :error, :nameservers
11
11
 
12
- def initialize(host, nameservers: :default)
12
+ def initialize(host:, nameservers: :default)
13
13
  raise ArgumentError, "host cannot be nil" if host.nil?
14
14
 
15
15
  @host = host
@@ -85,7 +85,7 @@ module GitHubPages
85
85
  cname_to_fastly? pointed_to_github_pages_ip?
86
86
  non_github_pages_ip_present? pages_domain?
87
87
  served_by_pages? valid? reason valid_domain? https?
88
- enforces_https? https_error https_eligible? caa_error
88
+ enforces_https? https_error https_eligible? caa_error dns_zone_soa? dns_zone_ns?
89
89
  ].freeze
90
90
 
91
91
  def self.redundant(host)
@@ -100,22 +100,24 @@ module GitHubPages
100
100
  @host = normalize_host(host)
101
101
  @nameservers = nameservers
102
102
  @resolver = GitHubPages::HealthCheck::Resolver.new(self.host,
103
- :nameservers => nameservers)
103
+ :nameservers => nameservers)
104
104
  end
105
105
 
106
106
  # Runs all checks, raises an error if invalid
107
+ # rubocop:disable Metrics/AbcSize
107
108
  def check!
108
- raise Errors::InvalidDomainError, :domain => self unless valid_domain?
109
- raise Errors::InvalidDNSError, :domain => self unless dns_resolves?
110
- raise Errors::DeprecatedIPError, :domain => self if deprecated_ip?
109
+ raise Errors::InvalidDomainError.new :domain => self unless valid_domain?
110
+ raise Errors::InvalidDNSError.new :domain => self unless dns_resolves?
111
+ raise Errors::DeprecatedIPError.new :domain => self if deprecated_ip?
111
112
  return true if proxied?
112
- raise Errors::InvalidARecordError, :domain => self if invalid_a_record?
113
- raise Errors::InvalidCNAMEError, :domain => self if invalid_cname?
114
- raise Errors::InvalidAAAARecordError, :domain => self if invalid_aaaa_record?
115
- raise Errors::NotServedByPagesError, :domain => self unless served_by_pages?
113
+ raise Errors::InvalidARecordError.new :domain => self if invalid_a_record?
114
+ raise Errors::InvalidCNAMEError.new :domain => self if invalid_cname?
115
+ raise Errors::InvalidAAAARecordError.new :domain => self if invalid_aaaa_record?
116
+ raise Errors::NotServedByPagesError.new :domain => self unless served_by_pages?
116
117
 
117
118
  true
118
119
  end
120
+ # rubocop:enable Metrics/AbcSize
119
121
 
120
122
  def deprecated_ip?
121
123
  return @deprecated_ip if defined? @deprecated_ip
@@ -162,7 +164,10 @@ module GitHubPages
162
164
  # Is this domain an apex domain, meaning a CNAME would be innapropriate
163
165
  def apex_domain?
164
166
  return @apex_domain if defined?(@apex_domain)
165
- return unless valid_domain?
167
+
168
+ return false unless valid_domain?
169
+
170
+ return true if dns_zone_soa? && dns_zone_ns?
166
171
 
167
172
  # PublicSuffix.domain pulls out the apex-level domain name.
168
173
  # E.g. PublicSuffix.domain("techblog.netflix.com") # => "netflix.com"
@@ -175,6 +180,30 @@ module GitHubPages
175
180
  :ignore_private => true) == unicode_host
176
181
  end
177
182
 
183
+ #
184
+ # Does the domain have an associated SOA record?
185
+ #
186
+ def dns_zone_soa?
187
+ return @soa_records if defined?(@soa_records)
188
+ return false unless dns?
189
+
190
+ @soa_records = dns.any? do |answer|
191
+ answer.type == Dnsruby::Types::SOA && answer.name.to_s == host
192
+ end
193
+ end
194
+
195
+ #
196
+ # Does the domain have assoicated NS records?
197
+ #
198
+ def dns_zone_ns?
199
+ return @ns_records if defined?(@ns_records)
200
+ return false unless dns?
201
+
202
+ @ns_records = dns.any? do |answer|
203
+ answer.type == Dnsruby::Types::NS && answer.name.to_s == host
204
+ end
205
+ end
206
+
178
207
  # Should the domain use an A record?
179
208
  def should_be_a_record?
180
209
  !pages_io_domain? && (apex_domain? || mx_records_present?)
@@ -276,7 +305,9 @@ module GitHubPages
276
305
  Dnsruby::Types::A,
277
306
  Dnsruby::Types::AAAA,
278
307
  Dnsruby::Types::CNAME,
279
- Dnsruby::Types::MX
308
+ Dnsruby::Types::MX,
309
+ Dnsruby::Types::NS,
310
+ Dnsruby::Types::SOA
280
311
  ].freeze
281
312
 
282
313
  # Returns an array of DNS answers
@@ -337,6 +368,8 @@ module GitHubPages
337
368
  # The domain to which this domain's CNAME resolves
338
369
  # Returns nil if the domain is not a CNAME
339
370
  def cname
371
+ return unless dns?
372
+
340
373
  cnames = dns.take_while { |answer| answer.type == Dnsruby::Types::CNAME }
341
374
  return if cnames.empty?
342
375
 
@@ -354,11 +387,10 @@ module GitHubPages
354
387
  return unless dns_resolves?
355
388
 
356
389
  @served_by_pages = begin
357
- return false unless response.mock? || response.return_code == :ok
358
390
  return true if response.headers["Server"] == "GitHub.com"
359
391
 
360
392
  # Typhoeus mangles the case of the header, compare insensitively
361
- response.headers.any? { |k, _v| k =~ /X-GitHub-Request-Id/i }
393
+ response.headers.any? { |k, _v| k.downcase == "x-github-request-id" }
362
394
  end
363
395
  end
364
396
 
@@ -404,7 +436,7 @@ module GitHubPages
404
436
 
405
437
  # Any errors querying CAA records
406
438
  def caa_error
407
- return nil unless caa.errored?
439
+ return nil unless caa&.errored?
408
440
 
409
441
  caa.error.class.name
410
442
  end
@@ -412,7 +444,10 @@ module GitHubPages
412
444
  private
413
445
 
414
446
  def caa
415
- @caa ||= GitHubPages::HealthCheck::CAA.new(host, :nameservers => nameservers)
447
+ @caa ||= GitHubPages::HealthCheck::CAA.new(
448
+ :host => cname&.host || host,
449
+ :nameservers => nameservers
450
+ )
416
451
  end
417
452
 
418
453
  # The domain's response to HTTP(S) requests, following redirects
@@ -3,8 +3,8 @@
3
3
  module GitHubPages
4
4
  module HealthCheck
5
5
  class Error < StandardError
6
- DOCUMENTATION_BASE = "https://help.github.com".freeze
7
- DOCUMENTATION_PATH = "/categories/github-pages-basics/".freeze
6
+ DOCUMENTATION_BASE = "https://help.github.com"
7
+ DOCUMENTATION_PATH = "/categories/github-pages-basics/"
8
8
  LOCAL_ONLY = false # Error is only used when running locally
9
9
 
10
10
  attr_reader :repository, :domain
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Dir[File.expand_path("errors/*_error.rb", __dir__)].each do |f|
3
+ Dir[File.expand_path("errors/*_error.rb", __dir__)].sort.each do |f|
4
4
  require f
5
5
  end
6
6
 
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class BuildError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/troubleshooting-jekyll-builds/".freeze
7
+ DOCUMENTATION_PATH = "/articles/troubleshooting-jekyll-builds/"
8
8
  LOCAL_ONLY = true
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class DeprecatedIPError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/".freeze
7
+ DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/"
8
8
 
9
9
  def message
10
10
  <<-MSG
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class InvalidARecordError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/".freeze
7
+ DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/"
8
8
 
9
9
  def message
10
10
  <<-MSG
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class InvalidAAAARecordError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/".freeze
7
+ DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/"
8
8
 
9
9
  def message
10
10
  <<-MSG
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class InvalidCNAMEError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/".freeze
7
+ DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/"
8
8
 
9
9
  def message
10
10
  <<-MSG
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class InvalidDNSError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/".freeze
7
+ DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/"
8
8
 
9
9
  def message
10
10
  "Domain's DNS record could not be retrieved"
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class InvalidDomainError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/".freeze
7
+ DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/"
8
8
 
9
9
  def message
10
10
  "Domain is not a valid domain"
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  module Errors
6
6
  class NotServedByPagesError < GitHubPages::HealthCheck::Error
7
- DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/".freeze
7
+ DOCUMENTATION_PATH = "/articles/setting-up-a-custom-domain-with-github-pages/"
8
8
 
9
9
  def message
10
10
  "Domain does not resolve to the GitHub Pages server"
@@ -4,7 +4,7 @@ module GitHubPages
4
4
  module HealthCheck
5
5
  class Printer
6
6
  PRETTY_LEFT_WIDTH = 11
7
- PRETTY_JOINER = " | ".freeze
7
+ PRETTY_JOINER = " | "
8
8
 
9
9
  attr_reader :health_check
10
10
 
@@ -47,11 +47,11 @@ module GitHubPages
47
47
  alias reason build_error
48
48
 
49
49
  def build_duration
50
- last_build && last_build.duration
50
+ last_build&.duration
51
51
  end
52
52
 
53
53
  def last_built
54
- last_build && last_build.updated_at
54
+ last_build&.updated_at
55
55
  end
56
56
 
57
57
  def domain
@@ -43,16 +43,16 @@ module GitHubPages
43
43
  self.class.default_resolver
44
44
  when :authoritative
45
45
  Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS.merge(
46
- :nameservers => authoritative_nameservers
47
- ))
46
+ :nameservers => authoritative_nameservers
47
+ ))
48
48
  when :public
49
49
  Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS.merge(
50
- :nameservers => PUBLIC_NAMESERVERS
51
- ))
50
+ :nameservers => PUBLIC_NAMESERVERS
51
+ ))
52
52
  when Array
53
53
  Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS.merge(
54
- :nameservers => nameservers
55
- ))
54
+ :nameservers => nameservers
55
+ ))
56
56
  else
57
57
  raise "Invalid nameserver type: #{nameservers.inspect}"
58
58
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GitHubPages
4
4
  module HealthCheck
5
- VERSION = "1.16.0".freeze
5
+ VERSION = "1.17.6"
6
6
  end
7
7
  end
data/script/cibuild CHANGED
@@ -4,7 +4,7 @@ set -ex
4
4
 
5
5
  script/bootstrap
6
6
 
7
- script/test
7
+ script/test $@
8
8
  script/check-cdn-ips
9
9
  bundle exec script/check www.parkermoore.de | grep 'valid?: true'
10
10
  bundle exec script/check ben.balter.com | grep 'valid?: true'
@@ -0,0 +1,11 @@
1
+ #!/bin/bash
2
+
3
+ : ${RUBY_VERSION:="2.7"}
4
+ docker build -t github-pages-health-check --build-arg RUBY_VERSION=$RUBY_VERSION .
5
+ if [ -n "$DEBUG" ]; then
6
+ # Run a shell.
7
+ docker run -it --rm -v $(pwd):/app/github-pages-health-check github-pages-health-check
8
+ else
9
+ # Run CI
10
+ docker run --rm github-pages-health-check script/cibuild --profile --fail-fast
11
+ fi
data/script/test CHANGED
@@ -3,4 +3,4 @@
3
3
  set -e
4
4
 
5
5
  bundle exec rspec $@
6
- script/fmt $@
6
+ script/fmt
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-pages-health-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.0
4
+ version: 1.17.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-07 00:00:00.000000000 Z
11
+ date: 2021-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -56,16 +56,22 @@ dependencies:
56
56
  name: public_suffix
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.0'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '5.0'
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - "~>"
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: '3.0'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '5.0'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: typhoeus
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -80,100 +86,21 @@ dependencies:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
88
  version: '1.3'
83
- - !ruby/object:Gem::Dependency
84
- name: dotenv
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.0'
97
- - !ruby/object:Gem::Dependency
98
- name: gem-release
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.7'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.7'
111
- - !ruby/object:Gem::Dependency
112
- name: pry
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.10'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.10'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.0'
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.52'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.52'
153
- - !ruby/object:Gem::Dependency
154
- name: webmock
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.21'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.21'
167
89
  description: Checks your GitHub Pages site for commons DNS configuration issues.
168
90
  email: support@github.com
169
91
  executables: []
170
92
  extensions: []
171
93
  extra_rdoc_files: []
172
94
  files:
95
+ - ".dockerignore"
96
+ - ".github/dependabot.yml"
97
+ - ".github/workflows/push-cibuild.yml"
173
98
  - ".gitignore"
174
99
  - ".rspec"
175
100
  - ".rubocop.yml"
101
+ - ".ruby-version"
176
102
  - ".travis.yml"
103
+ - Dockerfile
177
104
  - Gemfile
178
105
  - LICENSE.md
179
106
  - README.md
@@ -209,6 +136,7 @@ files:
209
136
  - script/check
210
137
  - script/check-cdn-ips
211
138
  - script/cibuild
139
+ - script/cibuild-docker
212
140
  - script/console
213
141
  - script/fmt
214
142
  - script/release
@@ -233,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
161
  - !ruby/object:Gem::Version
234
162
  version: '0'
235
163
  requirements: []
236
- rubygems_version: 3.0.1
164
+ rubygems_version: 3.1.2
237
165
  signing_key:
238
166
  specification_version: 4
239
167
  summary: Checks your GitHub Pages site for commons DNS configuration issues