diff --git a/.github/workflows/rubyci-alerts.yml b/.github/workflows/rubyci-alerts.yml index 1bcf2c319..b4f03ee7e 100644 --- a/.github/workflows/rubyci-alerts.yml +++ b/.github/workflows/rubyci-alerts.yml @@ -12,7 +12,7 @@ jobs: - uses: ruby/setup-ruby@e81a8fa391b11a595c1b7ed84177cc0fe02faf83 # v1.328.0 with: - ruby-version: 2.7 + ruby-version: "4.0" - name: Use master branch run: git checkout master diff --git a/.github/workflows/rubyci-screenshot.yml b/.github/workflows/rubyci-screenshot.yml deleted file mode 100644 index 3c59b0482..000000000 --- a/.github/workflows/rubyci-screenshot.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: rubyci-screenshot - -on: - push: - branches: - - master - schedule: - - cron: '30 14 * * *' # Daily at 14:30 UTC - - -jobs: - latest: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - - uses: ruby/setup-ruby@e81a8fa391b11a595c1b7ed84177cc0fe02faf83 # v1.328.0 - with: - ruby-version: 2.7 - - - name: Setup the environment - run: | - sudo snap install chromium - bundle install - - - name: Run the script - run: bundle exec ruby rubyci-screenshot.rb - env: - RUBYCI_SCREENSHOT_SLACK_API_TOKEN: ${{ secrets.RUBYCI_SCREENSHOT_SLACK_API_TOKEN }} - RUBYCI_SCREENSHOT_SLACK_CHANNEL_ID: ${{ secrets.RUBYCI_SCREENSHOT_SLACK_CHANNEL_ID }} - -# - uses: actions/upload-artifact@master -# with: -# name: rubyci-screenshot -# path: rubyci.png diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..0185add6f --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,26 @@ +name: test + +on: + push: + branches: + - master + pull_request: + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - uses: ruby/setup-ruby@e81a8fa391b11a595c1b7ed84177cc0fe02faf83 # v1.328.0 + with: + ruby-version: "4.0" + bundler-cache: true + + - name: Run the tests + run: bundle exec rake test diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 77497590c..000000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -rubyci.orig.png -rubyci.png diff --git a/Gemfile b/Gemfile index dfba848bc..eb8619204 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,4 @@ source "https://rubygems.org" -gem "selenium-webdriver" +gem "rake" +gem "test-unit" diff --git a/Gemfile.lock b/Gemfile.lock index b176b7cfe..4c27565fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,17 +1,17 @@ GEM remote: https://rubygems.org/ specs: - childprocess (3.0.0) - rubyzip (3.4.0) - selenium-webdriver (3.142.6) - childprocess (>= 0.5, < 4.0) - rubyzip (>= 1.2.2) + power_assert (3.1.0) + rake (13.4.2) + test-unit (3.7.8) + power_assert PLATFORMS ruby DEPENDENCIES - selenium-webdriver + rake + test-unit BUNDLED WITH - 2.1.2 + 4.0.20 diff --git a/Rakefile b/Rakefile new file mode 100644 index 000000000..5d28d9f1b --- /dev/null +++ b/Rakefile @@ -0,0 +1,5 @@ +require "rake/testtask" + +Rake::TestTask.new + +task default: :test diff --git a/rubyci-alerts.rb b/rubyci-alerts.rb index fccc7ae59..3e4ad773d 100644 --- a/rubyci-alerts.rb +++ b/rubyci-alerts.rb @@ -136,21 +136,23 @@ def filter_failure_reports(failure_reports, timestamps) end end -begin - timestamps = {} - timestamps = JSON.parse(File.read(TIMESTAMPS_JSON)) - - servers = get_servers - failure_reports = get_failure_reports(servers) - filter_failure_reports(failure_reports, timestamps) - failure_reports.each do |_key, report| - notify_simpler_alerts(report) - end +if __FILE__ == $0 + begin + timestamps = {} + timestamps = JSON.parse(File.read(TIMESTAMPS_JSON)) + + servers = get_servers + failure_reports = get_failure_reports(servers) + filter_failure_reports(failure_reports, timestamps) + failure_reports.each do |_key, report| + notify_simpler_alerts(report) + end - File.write(TIMESTAMPS_JSON, JSON.pretty_generate(timestamps)) -rescue => e - NOTIFY_CHANNELS.each do |channel| - notify_slack("ruby/rubyci-alerts failed: #{e.class}: #{ escape(e.message) }", channel: channel) + File.write(TIMESTAMPS_JSON, JSON.pretty_generate(timestamps)) + rescue => e + NOTIFY_CHANNELS.each do |channel| + notify_slack("ruby/rubyci-alerts failed: #{e.class}: #{ escape(e.message) }", channel: channel) + end + puts e.backtrace end - puts e.backtrace end diff --git a/rubyci-screenshot.rb b/rubyci-screenshot.rb deleted file mode 100644 index 77ac16f13..000000000 --- a/rubyci-screenshot.rb +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env ruby - -require "selenium-webdriver" -require "net/http" -require "openssl" - -SLACK_API_TOKEN = ENV["RUBYCI_SCREENSHOT_SLACK_API_TOKEN"] -CHANNEL_ID = ENV["RUBYCI_SCREENSHOT_SLACK_CHANNEL_ID"] -FILES_UPLOAD_URI = "https://slack.com/api/files.upload" - -Dir.chdir(__dir__) - -system("/snap/bin/chromium.chromedriver", "-v") -Selenium::WebDriver::Chrome::Service.driver_path = "/snap/bin/chromium.chromedriver" - -options = Selenium::WebDriver::Chrome::Options.new -options.add_argument("--headless") -options.add_argument("--disable-gpu") -options.add_argument("--disable-dev-shm-usage") -options.add_argument("--no-sandbox") -options.add_argument("--window-size=1280,3000") -driver = Selenium::WebDriver.for(:chrome, options: options) - -driver.navigate.to("https://rubyci.org") -driver.execute_script(< notified } + + filter_failure_reports(reports, timestamps) + + assert_equal ["icc 2025.3 x64 (Ubuntu)"], reports.map {|_key, report| report.name } + assert_equal({ "122" => notified, "40" => Time.iso8601("2026-10-13T18:30:12Z").to_i }, timestamps) + end +end