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:
parent
fc0ab4c0a3
commit
623840a304
192
.github/workflows/tests.yml
vendored
192
.github/workflows/tests.yml
vendored
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user