workflows/tests: consolidate macOS tests.

We have a limited number of macOS workers (for the Homebrew
organisation) and queuing these seems to be slowing things down overall
compared to when we had one big job.

Linux throughput is still significantly quicker so it makes sense to
split up those jobs for providing quick feedback on breakages that are
cross-platform (which ends up being most but definitely not all of
them).
This commit is contained in:
Mike McQuaid 2020-12-04 10:13:01 +00:00
parent fc0ab4c0a3
commit 623840a304
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70

View File

@ -43,17 +43,8 @@ jobs:
hadolint Dockerfile hadolint Dockerfile
tap-syntax: tap-syntax:
name: ${{ matrix.name }} name: tap syntax (Linux)
runs-on: ${{ matrix.os }} runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: tap syntax (Linux)
os: ubuntu-latest
core-tap: linuxbrew-core
- name: tap syntax (macOS)
os: macos-latest
core-tap: homebrew-core
steps: steps:
- name: Set up Homebrew - name: Set up Homebrew
id: set-up-homebrew id: set-up-homebrew
@ -61,10 +52,6 @@ jobs:
- run: brew test-bot --only-cleanup-before - run: brew test-bot --only-cleanup-before
- name: Set up Xcode
if: matrix.os == 'macos-11.0'
run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer
- run: brew config - run: brew config
- name: Cache Bundler RubyGems - name: Cache Bundler RubyGems
@ -86,63 +73,23 @@ jobs:
brew update-test --to-tag brew update-test --to-tag
brew update-test --commit=HEAD brew update-test --commit=HEAD
- name: Set up all Homebrew taps
if: runner.os == 'macOS'
run: |
brew tap homebrew/cask
brew tap homebrew/cask-drivers
brew tap homebrew/cask-fonts
brew tap homebrew/cask-versions
brew update-reset Library/Taps/homebrew/homebrew-bundle \
Library/Taps/homebrew/homebrew-cask \
Library/Taps/homebrew/homebrew-cask-versions \
Library/Taps/homebrew/homebrew-services
- name: Run brew readall on all taps - name: Run brew readall on all taps
run: brew readall --aliases run: brew readall --aliases
- name: Run brew style on ${{ matrix.core-tap }} - name: Run brew style on linuxbrew-core
run: brew style --display-cop-names homebrew/core run: brew style --display-cop-names homebrew/core
- name: Run brew style on official taps
if: runner.os == 'macOS'
run: |
brew style --display-cop-names homebrew/bundle \
homebrew/services \
homebrew/test-bot
- name: Run brew style on cask taps
if: runner.os == 'macOS'
run: |
brew style --display-cop-names homebrew/cask \
homebrew/cask-drivers \
homebrew/cask-fonts \
homebrew/cask-versions
- name: Run brew audit --skip-style on all taps - name: Run brew audit --skip-style on all taps
run: brew audit --skip-style run: brew audit --skip-style
vendored-gems: vendored-gems:
name: ${{ matrix.name }} name: vendored gems (Linux)
runs-on: ${{ matrix.os }} runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: vendored gems (Linux)
os: ubuntu-latest
core-tap: linuxbrew-core
- name: vendored gems (macOS)
os: macos-11.0
core-tap: homebrew-core
steps: steps:
- 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
- name: Set up Xcode
if: matrix.os == 'macos-11.0'
run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer
- name: Configure Git user - name: Configure Git user
uses: Homebrew/actions/git-user-config@master uses: Homebrew/actions/git-user-config@master
with: with:
@ -180,39 +127,21 @@ jobs:
tests: tests:
name: ${{ matrix.name }} name: ${{ matrix.name }}
runs-on: ${{ matrix.os }} runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
include: include:
- name: tests (no-compatibility mode) - name: tests (no-compatibility mode)
os: ubuntu-latest
test-flags: --no-compat --online --coverage test-flags: --no-compat --online --coverage
- name: tests (generic OS) - name: tests (generic OS)
os: ubuntu-latest
test-flags: --generic --online --coverage test-flags: --generic --online --coverage
- name: tests (Linux) - name: tests (Linux)
os: ubuntu-latest
test-flags: --online --coverage
- name: tests (macOS)
os: macos-11.0
test-flags: --online --coverage test-flags: --online --coverage
steps: steps:
- 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
- name: Set up Xcode
if: matrix.os == 'macos-11.0'
run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer
- name: Install brew tests dependencies
if: runner.os == 'macOS'
run: |
brew install subversion
Library/Homebrew/shims/scm/svn --homebrew=print-path
which svn
which svnadmin
- name: Cache Bundler RubyGems - name: Cache Bundler RubyGems
uses: actions/cache@v1 uses: actions/cache@v1
with: with:
@ -225,42 +154,105 @@ jobs:
- name: Run brew tests - name: Run brew tests
run: | run: |
if ${{ runner.os == 'Linux' }}; then # brew tests doesn't like world writable directories
# brew tests doesn't like world writable directories sudo chmod -R g-w,o-w /home/linuxbrew/.linuxbrew/Homebrew
sudo chmod -R g-w,o-w /home/linuxbrew/.linuxbrew/Homebrew
elif ${{ runner.os == 'macOS' }}; then
# These cannot be queried at the macOS level on GitHub Actions.
export HOMEBREW_LANGUAGES='en-GB'
fi
if ${{ contains(matrix.test-flags, '--coverage') }}; then
# Set variables for coverage reporting.
export HOMEBREW_CODECOV_TOKEN='3ea0364c-80ce-47a3-9fba-93a940d4b5d7'
fi
brew tests ${{ matrix.test-flags }} brew tests ${{ matrix.test-flags }}
env: env:
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_CODECOV_TOKEN: 3ea0364c-80ce-47a3-9fba-93a940d4b5d7
test-default-formula: test-default-formula-linux:
name: ${{ matrix.name }} name: test default formula (Linux)
runs-on: ${{ matrix.os }} runs-on: ubuntu-latest
strategy: steps:
matrix: - name: Set up Homebrew
include: id: set-up-homebrew
- name: test default formula (Linux) uses: Homebrew/actions/setup-homebrew@master
os: ubuntu-latest
- name: test default formula (macOS) - run: brew test-bot --only-cleanup-before
os: macos-latest
- run: brew test-bot --only-formulae --test-default-formula
test-everything:
name: test everything (macOS)
runs-on: macos-11.0
steps: steps:
- 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
- name: Set up Xcode - name: Set up Xcode
if: matrix.os == 'macos-11.0'
run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer
- run: brew test-bot --only-cleanup-before - run: brew test-bot --only-cleanup-before
- run: brew config
# Can't cache this because we need to check that it doesn't fail the
# "uncommitted RubyGems" step with a cold cache.
- name: Install Bundler RubyGems
run: brew install-bundler-gems
- name: Check for uncommitted RubyGems
run: git diff --stat --exit-code Library/Homebrew/vendor/bundle/ruby
- run: brew doctor
- name: Run brew update-tests
if: github.event_name == 'pull_request'
run: |
brew update-test
brew update-test --to-tag
brew update-test --commit=HEAD
- name: Set up all Homebrew taps
run: |
brew tap homebrew/cask
brew tap homebrew/cask-drivers
brew tap homebrew/cask-fonts
brew tap homebrew/cask-versions
brew update-reset Library/Taps/homebrew/homebrew-bundle \
Library/Taps/homebrew/homebrew-cask \
Library/Taps/homebrew/homebrew-cask-versions \
Library/Taps/homebrew/homebrew-services
- name: Run brew readall on all taps
run: brew readall --aliases
- name: Run brew style on homebrew-core
run: brew style --display-cop-names homebrew/core
- name: Run brew style on official taps
run: |
brew style --display-cop-names homebrew/bundle \
homebrew/services \
homebrew/test-bot
- name: Run brew style on cask taps
run: |
brew style --display-cop-names homebrew/cask \
homebrew/cask-drivers \
homebrew/cask-fonts \
homebrew/cask-versions
- name: Run brew audit --skip-style on all taps
run: brew audit --skip-style
- name: Install brew tests dependencies
run: |
brew install subversion
Library/Homebrew/shims/scm/svn --homebrew=print-path
which svn
which svnadmin
- name: Run brew tests
run: brew tests --online --coverage
env:
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Set variables for coverage reporting.
HOMEBREW_CODECOV_TOKEN: 3ea0364c-80ce-47a3-9fba-93a940d4b5d7
# These cannot be queried at the macOS level on GitHub Actions.
HOMEBREW_LANGUAGES: en-GB
- run: brew test-bot --only-formulae --test-default-formula - run: brew test-bot --only-formulae --test-default-formula