mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Reduce Homebrew/brew CI warnings
- Remove a bunch of non-actionable/unnecessary noise in GitHub Actions CI. - Limit number of threads used to generate analytics API data to avoid reproducible failures producing errors and requiring retries. - Move to Debian Old Stable for testing non-system `glibc`. - Remove unneeded core taps/updates. - Improve naming of CI jobs to clarify purpose i.e. we're testing things work on Linux, not Ubuntu specifically. - Remove dedicated non-online/non-generic Linux `brew tests` jobs from 3 to 1. Co-authored-by: Rylan Polster <rslpolster@gmail.com>
This commit is contained in:
parent
1f37a11b79
commit
cc03340af3
63
.github/workflows/tests.yml
vendored
63
.github/workflows/tests.yml
vendored
@ -141,7 +141,7 @@ jobs:
|
|||||||
id: set-up-homebrew
|
id: set-up-homebrew
|
||||||
uses: Homebrew/actions/setup-homebrew@master
|
uses: Homebrew/actions/setup-homebrew@master
|
||||||
with:
|
with:
|
||||||
core: true
|
core: false
|
||||||
cask: false
|
cask: false
|
||||||
test-bot: false
|
test-bot: false
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ jobs:
|
|||||||
id: set-up-homebrew
|
id: set-up-homebrew
|
||||||
uses: Homebrew/actions/setup-homebrew@master
|
uses: Homebrew/actions/setup-homebrew@master
|
||||||
with:
|
with:
|
||||||
core: true
|
core: false
|
||||||
cask: true
|
cask: true
|
||||||
test-bot: false
|
test-bot: false
|
||||||
|
|
||||||
@ -213,7 +213,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- name: update-test (Ubuntu)
|
- name: update-test (Linux)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
- name: update-test (macOS)
|
- name: update-test (macOS)
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
@ -237,7 +237,6 @@ jobs:
|
|||||||
name: ${{ matrix.name }}
|
name: ${{ matrix.name }}
|
||||||
needs: syntax
|
needs: syntax
|
||||||
runs-on: ${{ matrix.runs-on }}
|
runs-on: ${{ matrix.runs-on }}
|
||||||
container: ${{ matrix.container }}
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@ -247,17 +246,10 @@ jobs:
|
|||||||
- name: tests (generic OS)
|
- name: tests (generic OS)
|
||||||
test-flags: --generic --coverage
|
test-flags: --generic --coverage
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
- name: tests (Ubuntu 24.04)
|
- name: tests (Linux)
|
||||||
test-flags: --coverage
|
test-flags: --coverage
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
- name: tests (Ubuntu 22.04)
|
- name: tests (macOS)
|
||||||
test-flags: --coverage
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
- name: tests (Ubuntu 20.04)
|
|
||||||
test-flags: --coverage
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container: ghcr.io/homebrew/ubuntu20.04:latest
|
|
||||||
- name: tests (macOS 15 arm64)
|
|
||||||
test-flags: --coverage
|
test-flags: --coverage
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
steps:
|
steps:
|
||||||
@ -364,9 +356,10 @@ jobs:
|
|||||||
- name: test default formula (Ubuntu 22.04)
|
- name: test default formula (Ubuntu 22.04)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: ghcr.io/homebrew/ubuntu22.04:master
|
container: ghcr.io/homebrew/ubuntu22.04:master
|
||||||
- name: test default formula (Ubuntu 20.04)
|
# Need to keep this as a target that installs a Homebrew glibc
|
||||||
|
- name: test default formula (Debian Old Stable)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: ghcr.io/homebrew/ubuntu20.04:latest
|
container: debian:oldstable
|
||||||
- name: test default formula (macOS 13 x86_64)
|
- name: test default formula (macOS 13 x86_64)
|
||||||
runs-on: macos-13
|
runs-on: macos-13
|
||||||
- name: test default formula (macOS 15 arm64)
|
- name: test default formula (macOS 15 arm64)
|
||||||
@ -375,18 +368,50 @@ jobs:
|
|||||||
HOMEBREW_TEST_BOT_ANALYTICS: 1
|
HOMEBREW_TEST_BOT_ANALYTICS: 1
|
||||||
HOMEBREW_ENFORCE_SBOM: 1
|
HOMEBREW_ENFORCE_SBOM: 1
|
||||||
steps:
|
steps:
|
||||||
|
- name: Install Homebrew and Homebrew's dependencies
|
||||||
|
# All other images are built from our Homebrew Dockerfile.
|
||||||
|
# This is the only one that needs to be set up manually.
|
||||||
|
if: matrix.container == 'debian:oldstable'
|
||||||
|
run: |
|
||||||
|
# Slimmed down version from the Homebrew Dockerfile
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
file \
|
||||||
|
g++ \
|
||||||
|
git-core \
|
||||||
|
less \
|
||||||
|
locales \
|
||||||
|
make \
|
||||||
|
netbase \
|
||||||
|
patch \
|
||||||
|
procps \
|
||||||
|
sudo \
|
||||||
|
uuid-runtime \
|
||||||
|
tzdata
|
||||||
|
|
||||||
|
# Install Homebrew
|
||||||
|
mkdir -p /home/linuxbrew/.linuxbrew/bin
|
||||||
|
# Don't do shallow clone or it's unshallowed by "Set up Homebrew"
|
||||||
|
git clone https://github.com/Homebrew/brew.git /home/linuxbrew/.linuxbrew/Homebrew
|
||||||
|
cd /home/linuxbrew/.linuxbrew/bin
|
||||||
|
ln -s ../Homebrew/bin/brew brew
|
||||||
|
echo "/home/linuxbrew/.linuxbrew/bin" >>"$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Set up Homebrew
|
- name: Set up Homebrew
|
||||||
id: set-up-homebrew
|
id: set-up-homebrew
|
||||||
uses: Homebrew/actions/setup-homebrew@master
|
uses: Homebrew/actions/setup-homebrew@master
|
||||||
with:
|
with:
|
||||||
core: true
|
core: false
|
||||||
cask: false
|
cask: false
|
||||||
test-bot: true
|
test-bot: true
|
||||||
|
|
||||||
- run: brew test-bot --only-cleanup-before
|
- run: brew test-bot --only-cleanup-before
|
||||||
|
|
||||||
- name: Setup environment variables
|
- name: Setup environment variables
|
||||||
if: matrix.container == 'ghcr.io/homebrew/ubuntu20.04:latest'
|
if: matrix.container == 'debian:oldstable'
|
||||||
run: echo "HOMEBREW_GLIBC_TESTING=1" >> "$GITHUB_ENV"
|
run: echo "HOMEBREW_GLIBC_TESTING=1" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- run: brew test-bot --only-setup
|
- run: brew test-bot --only-setup
|
||||||
@ -403,7 +428,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- name: test brew bundle and brew services (Ubuntu)
|
- name: test brew bundle and brew services (Linux)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
- name: test brew bundle and brew services (macOS)
|
- name: test brew bundle and brew services (macOS)
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
@ -412,7 +437,7 @@ jobs:
|
|||||||
id: set-up-homebrew
|
id: set-up-homebrew
|
||||||
uses: Homebrew/actions/setup-homebrew@master
|
uses: Homebrew/actions/setup-homebrew@master
|
||||||
with:
|
with:
|
||||||
core: true
|
core: false
|
||||||
cask: false
|
cask: false
|
||||||
test-bot: false
|
test-bot: false
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ module Cask
|
|||||||
|
|
||||||
oh1 "Installing Cask #{Formatter.identifier(@cask)}"
|
oh1 "Installing Cask #{Formatter.identifier(@cask)}"
|
||||||
# GitHub Actions globally disables Gatekeeper.
|
# GitHub Actions globally disables Gatekeeper.
|
||||||
opoo "macOS's Gatekeeper has been disabled for this Cask" if !quarantine? && !GitHub::Actions.env_set?
|
opoo_outside_github_actions "macOS's Gatekeeper has been disabled for this Cask" unless quarantine?
|
||||||
stage
|
stage
|
||||||
|
|
||||||
@cask.config = @cask.default_config.merge(old_config)
|
@cask.config = @cask.default_config.merge(old_config)
|
||||||
|
@ -77,7 +77,7 @@ module Homebrew
|
|||||||
analytics_data_dir = root_dir/"_data/analytics"
|
analytics_data_dir = root_dir/"_data/analytics"
|
||||||
analytics_api_dir = root_dir/"api/analytics"
|
analytics_api_dir = root_dir/"api/analytics"
|
||||||
|
|
||||||
threads = []
|
analytics_output_queue = Queue.new
|
||||||
|
|
||||||
CATEGORIES.each do |category|
|
CATEGORIES.each do |category|
|
||||||
formula_analytics_args = []
|
formula_analytics_args = []
|
||||||
@ -124,15 +124,40 @@ module Homebrew
|
|||||||
DAYS.each do |days|
|
DAYS.each do |days|
|
||||||
next if days != "30" && category_name == "build-error" && !data_source.nil?
|
next if days != "30" && category_name == "build-error" && !data_source.nil?
|
||||||
|
|
||||||
threads << Thread.new do
|
analytics_output_queue << {
|
||||||
args = %W[--days-ago=#{days}]
|
formula_analytics_args: formula_analytics_args.dup,
|
||||||
(analytics_data_path/"#{days}d.json").write run_formula_analytics(*formula_analytics_args, *args)
|
days: days,
|
||||||
(analytics_api_path/"#{days}d.json").write analytics_json_template(category_name, data_source:)
|
analytics_data_path: analytics_data_path,
|
||||||
end
|
analytics_api_path: analytics_api_path,
|
||||||
|
category_name: category_name,
|
||||||
|
data_source: data_source,
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
threads.each(&:join)
|
workers = []
|
||||||
|
4.times do
|
||||||
|
workers << Thread.new do
|
||||||
|
until analytics_output_queue.empty?
|
||||||
|
analytics_output_type = begin
|
||||||
|
analytics_output_queue.pop(true)
|
||||||
|
rescue ThreadError
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
days = analytics_output_type[:days]
|
||||||
|
args = ["--days-ago=#{days}"]
|
||||||
|
|
||||||
|
(analytics_output_type[:analytics_data_path]/"#{days}d.json").write \
|
||||||
|
run_formula_analytics(*analytics_output_type[:formula_analytics_args], *args)
|
||||||
|
|
||||||
|
data_source = analytics_output_type[:data_source]
|
||||||
|
(analytics_output_type[:analytics_api_path]/"#{days}d.json").write \
|
||||||
|
analytics_json_template(analytics_output_type[:category_name], data_source:)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
workers.each(&:join)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -125,11 +125,14 @@ module Homebrew
|
|||||||
# rubocop:disable Homebrew/MoveToExtendOS
|
# rubocop:disable Homebrew/MoveToExtendOS
|
||||||
unless OS.mac?
|
unless OS.mac?
|
||||||
bundle_args << "--tag" << "~needs_macos" << "--tag" << "~cask"
|
bundle_args << "--tag" << "~needs_macos" << "--tag" << "~cask"
|
||||||
|
bundle_args << "--tag" << "~needs_homebrew_core" if ENV["CI"]
|
||||||
|
bundle_args << "--tag" << "~needs_svn" unless args.online?
|
||||||
|
|
||||||
files = files.grep_v(%r{^test/(os/mac|cask)(/.*|_spec\.rb)$})
|
files = files.grep_v(%r{^test/(os/mac|cask)(/.*|_spec\.rb)$})
|
||||||
end
|
end
|
||||||
|
|
||||||
unless OS.linux?
|
unless OS.linux?
|
||||||
bundle_args << "--tag" << "~needs_linux"
|
bundle_args << "--tag" << "~needs_linux" << "--tag" << "~needs_systemd"
|
||||||
files = files.grep_v(%r{^test/os/linux(/.*|_spec\.rb)$})
|
files = files.grep_v(%r{^test/os/linux(/.*|_spec\.rb)$})
|
||||||
end
|
end
|
||||||
# rubocop:enable Homebrew/MoveToExtendOS
|
# rubocop:enable Homebrew/MoveToExtendOS
|
||||||
@ -139,10 +142,8 @@ module Homebrew
|
|||||||
bundle_args << "--tag" << "~needs_intel" unless Hardware::CPU.intel?
|
bundle_args << "--tag" << "~needs_intel" unless Hardware::CPU.intel?
|
||||||
|
|
||||||
bundle_args << "--tag" << "~needs_network" unless args.online?
|
bundle_args << "--tag" << "~needs_network" unless args.online?
|
||||||
unless ENV["CI"]
|
|
||||||
bundle_args << "--tag" << "~needs_ci" \
|
bundle_args << "--tag" << "~needs_ci" unless ENV["CI"]
|
||||||
<< "--tag" << "~needs_svn"
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "Randomized with seed #{seed}"
|
puts "Randomized with seed #{seed}"
|
||||||
|
|
||||||
|
@ -82,6 +82,17 @@ module Kernel
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Print a warning message only if not running in GitHub Actions.
|
||||||
|
#
|
||||||
|
# @api public
|
||||||
|
sig { params(message: T.any(String, Exception)).void }
|
||||||
|
def opoo_outside_github_actions(message)
|
||||||
|
require "utils/github/actions"
|
||||||
|
return if GitHub::Actions.env_set?
|
||||||
|
|
||||||
|
opoo(message)
|
||||||
|
end
|
||||||
|
|
||||||
# Print an error message.
|
# Print an error message.
|
||||||
#
|
#
|
||||||
# @api public
|
# @api public
|
||||||
|
@ -31,7 +31,8 @@ module Utils
|
|||||||
def self.print_backtrace_message
|
def self.print_backtrace_message
|
||||||
return if @print_backtrace_message
|
return if @print_backtrace_message
|
||||||
|
|
||||||
opoo "Removed Sorbet lines from backtrace!"
|
# This is just unactionable noise in GitHub Actions.
|
||||||
|
opoo_outside_github_actions "Removed Sorbet lines from backtrace!"
|
||||||
puts "Rerun with `--verbose` to see the original backtrace" unless Homebrew::EnvConfig.no_env_hints?
|
puts "Rerun with `--verbose` to see the original backtrace" unless Homebrew::EnvConfig.no_env_hints?
|
||||||
|
|
||||||
@print_backtrace_message = true
|
@print_backtrace_message = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user