workflows/tests: split out jobs.
Separate out the slow parts of tests into jobs that can be run in parallel. Also: - general refactoring from YAML linter. - don't build on `macOS-latest` now that Big Sur is the latest stable release. - Use `runner.os` when it improves readability over `matrix.os`.
This commit is contained in:
parent
7afaebc7f8
commit
5f42fd9545
261
.github/workflows/tests.yml
vendored
261
.github/workflows/tests.yml
vendored
@ -1,25 +1,128 @@
|
||||
name: GitHub Actions CI
|
||||
name: CI
|
||||
on:
|
||||
push:
|
||||
branches: master
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
env:
|
||||
HOMEBREW_DEVELOPER: 1
|
||||
HOMEBREW_NO_AUTO_UPDATE: 1
|
||||
jobs:
|
||||
tests:
|
||||
syntax:
|
||||
if: github.repository == 'Homebrew/brew'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
|
||||
- name: Cache Bundler RubyGems
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: ${{ steps.set-up-homebrew.outputs.gems-path }}
|
||||
key: ${{ runner.os }}-rubygems-${{ steps.set-up-homebrew.outputs.gems-hash }}
|
||||
restore-keys: ${{ runner.os }}-rubygems-
|
||||
|
||||
- run: brew install-bundler-gems
|
||||
|
||||
- run: brew style --display-cop-names
|
||||
|
||||
- run: brew man --fail-if-changed
|
||||
|
||||
- run: brew typecheck
|
||||
|
||||
- name: Run vale for docs linting
|
||||
run: |
|
||||
brew install vale
|
||||
vale docs/
|
||||
|
||||
- name: Lint Dockerfile
|
||||
run: |
|
||||
brew install hadolint
|
||||
hadolint Dockerfile
|
||||
|
||||
brew-tests:
|
||||
needs: syntax
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- test-flags: --no-compat --online
|
||||
- test-flags: --generic --online
|
||||
- test-flags: --online
|
||||
steps:
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
|
||||
- name: Cache Bundler RubyGems
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: ${{ steps.set-up-homebrew.outputs.gems-path }}
|
||||
key: ${{ runner.os }}-rubygems-${{ steps.set-up-homebrew.outputs.gems-hash }}
|
||||
restore-keys: ${{ runner.os }}-rubygems-
|
||||
|
||||
- run: brew install-bundler-gems
|
||||
|
||||
- name: Run brew tests
|
||||
run: |
|
||||
# brew tests doesn't like world writable directories
|
||||
sudo chmod -R g-w,o-w /home/linuxbrew/.linuxbrew/Homebrew
|
||||
|
||||
brew tests ${{ matrix.test_flags }}
|
||||
env:
|
||||
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
brew-tests-coverage:
|
||||
needs: syntax
|
||||
runs-on: macos-11.0
|
||||
steps:
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
|
||||
- name: Set up Xcode
|
||||
run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer
|
||||
|
||||
- name: Install brew tests dependencies
|
||||
run: |
|
||||
brew install subversion
|
||||
Library/Homebrew/shims/scm/svn --homebrew=print-path
|
||||
which svn
|
||||
which svnadmin
|
||||
|
||||
- name: Cache Bundler RubyGems
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: ${{ steps.set-up-homebrew.outputs.gems-path }}
|
||||
key: ${{ runner.os }}-rubygems-${{ steps.set-up-homebrew.outputs.gems-hash }}
|
||||
restore-keys: ${{ runner.os }}-rubygems-
|
||||
|
||||
- run: brew install-bundler-gems
|
||||
|
||||
- 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
|
||||
|
||||
more-tests-and-syntax:
|
||||
needs: syntax
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macOS-latest, macOS-11.0]
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-11.0
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
core-tap: 'linuxbrew-core'
|
||||
- os: macOS-latest
|
||||
core-tap: 'homebrew-core'
|
||||
- os: macOS-11.0
|
||||
core-tap: 'homebrew-core'
|
||||
core-tap: "linuxbrew-core"
|
||||
- os: macos-11.0
|
||||
core-tap: "homebrew-core"
|
||||
steps:
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
@ -33,7 +136,7 @@ jobs:
|
||||
- run: brew test-bot --only-cleanup-before
|
||||
|
||||
- name: Set up Xcode
|
||||
if: matrix.os == 'macOS-11.0'
|
||||
if: matrix.os == 'macos-11.0'
|
||||
run: sudo xcode-select --switch /Applications/Xcode_12.2.app/Contents/Developer
|
||||
|
||||
- run: brew config
|
||||
@ -48,64 +151,23 @@ jobs:
|
||||
|
||||
- run: brew doctor
|
||||
|
||||
- name: Set up Homebrew official command taps
|
||||
run: |
|
||||
# Setup taps needed for 'brew tests' and 'brew man'
|
||||
cd "$(brew --repo)"
|
||||
|
||||
if [ "$RUNNER_OS" = "macOS" ]; then
|
||||
brew update-reset Library/Taps/homebrew/homebrew-bundle \
|
||||
Library/Taps/homebrew/homebrew-cask \
|
||||
Library/Taps/homebrew/homebrew-cask-versions \
|
||||
Library/Taps/homebrew/homebrew-services
|
||||
else
|
||||
brew update-reset Library/Taps/homebrew/homebrew-services
|
||||
fi
|
||||
|
||||
- name: Run brew style on Homebrew/brew
|
||||
run: brew style --display-cop-names
|
||||
|
||||
- name: Run brew man
|
||||
run: brew man --fail-if-changed
|
||||
|
||||
- name: Install brew tests dependencies
|
||||
if: matrix.os != 'ubuntu-latest'
|
||||
run: |
|
||||
brew install subversion
|
||||
Library/Homebrew/shims/scm/svn --homebrew=print-path
|
||||
which svn
|
||||
which svnadmin
|
||||
|
||||
- name: Run brew tests
|
||||
run: |
|
||||
# brew tests doesn't like world writable directories
|
||||
if [[ "$RUNNER_OS" = "Linux" ]]; then
|
||||
sudo chmod -R g-w,o-w /home/linuxbrew/.linuxbrew/Homebrew
|
||||
fi
|
||||
|
||||
# don't bother running all tests on both platforms (for speed)
|
||||
if [ "$RUNNER_OS" = "Linux" ]; then
|
||||
brew tests --no-compat --online
|
||||
brew tests --generic --online
|
||||
brew tests --online
|
||||
else
|
||||
brew tests --online --coverage
|
||||
fi
|
||||
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
|
||||
|
||||
- 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
|
||||
if: github.event_name == 'pull_request'
|
||||
|
||||
- name: Set up all Homebrew taps
|
||||
if: runner.os == 'macOS'
|
||||
run: |
|
||||
brew update-reset Library/Taps/homebrew/homebrew-bundle \
|
||||
Library/Taps/homebrew/homebrew-cask \
|
||||
Library/Taps/homebrew/homebrew-services
|
||||
brew tap homebrew/cask
|
||||
brew tap homebrew/cask-drivers
|
||||
brew tap homebrew/cask-fonts
|
||||
brew tap homebrew/cask-versions
|
||||
|
||||
- name: Run brew readall on all taps
|
||||
run: brew readall --aliases
|
||||
@ -114,18 +176,16 @@ jobs:
|
||||
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
|
||||
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: matrix.os != 'ubuntu-latest'
|
||||
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 style --display-cop-names \
|
||||
homebrew/cask \
|
||||
brew style --display-cop-names homebrew/cask \
|
||||
homebrew/cask-drivers \
|
||||
homebrew/cask-fonts \
|
||||
homebrew/cask-versions
|
||||
@ -133,37 +193,46 @@ jobs:
|
||||
- name: Run brew audit --skip-style on all taps
|
||||
run: brew audit --skip-style
|
||||
|
||||
- run: brew typecheck
|
||||
|
||||
- name: Run vale for docs linting
|
||||
run: |
|
||||
brew install vale
|
||||
vale docs/
|
||||
|
||||
- name: Lint Dockerfile
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
brew install hadolint
|
||||
hadolint Dockerfile
|
||||
docker:
|
||||
needs: syntax
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
|
||||
- name: Build Docker image
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: docker build -t brew --build-arg=version=16.04 .
|
||||
|
||||
- name: Run brew test-bot --only-formulae --test-default-formula
|
||||
run: |
|
||||
if [ "$RUNNER_OS" = "Linux" ]; then
|
||||
docker run --rm brew brew test-bot --only-formulae --test-default-formula
|
||||
else
|
||||
brew test-bot --only-formulae --test-default-formula
|
||||
fi
|
||||
|
||||
- name: Deploy the Docker image to GitHub Packages and Docker Hub
|
||||
if: matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/master'
|
||||
if: github.ref == 'refs/heads/master'
|
||||
run: |
|
||||
echo ${{secrets.HOMEBREW_GITHUB_PACKAGES_API_TOKEN}} | docker login ghcr.io -u BrewTestBot --password-stdin
|
||||
echo ${{secrets.HOMEBREW_GITHUB_PACKAGES_API_TOKEN}} | \
|
||||
docker login ghcr.io -u BrewTestBot --password-stdin
|
||||
docker tag brew "ghcr.io/homebrew/ubuntu16.04:master"
|
||||
docker push "ghcr.io/homebrew/ubuntu16.04:master"
|
||||
echo ${{secrets.DOCKER_TOKEN}} | docker login -u brewtestbot --password-stdin
|
||||
echo ${{secrets.DOCKER_TOKEN}} | \
|
||||
docker login -u brewtestbot --password-stdin
|
||||
docker tag brew "homebrew/ubuntu16.04:master"
|
||||
docker push "homebrew/ubuntu16.04:master"
|
||||
|
||||
test-bot-default-formula:
|
||||
needs: syntax
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-11.0
|
||||
steps:
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
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
|
||||
|
||||
- run: brew test-bot --only-cleanup-before
|
||||
|
||||
- run: brew test-bot --only-formulae --test-default-formula
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user