Bump version. No binary change, but does affect environment. #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################################################ | |
# Build and Test tidy on the latest versions of all of the major platforms. | |
# | |
# - Build on multiple operating systems, and where possible, multiple | |
# architectures. On Windows, we will also build and test mingw in | |
# addition to MSVC. | |
# | |
# - Report the version number for each binary that is built. | |
# | |
# - Run each binary against the regression test suite. | |
# | |
################################################################################ | |
name: Build and Test | |
on: | |
push: | |
paths: | |
- 'src/**' | |
- 'include/**' | |
- '.github/workflows/**' | |
- 'CMakeLists.txt' | |
branches: | |
- 'master' | |
- 'next' | |
pull_request: | |
paths: | |
- 'src/**' | |
- 'include/**' | |
- '.github/workflows/**' | |
- 'CMakeLists.txt' | |
jobs: | |
build_and_test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
############################################################ | |
# Ubuntu latest is a normal build with nothing special that | |
# really need be done. | |
############################################################ | |
- os: ubuntu-latest | |
name: Standard | |
cmake_command: "cmake ../.. -DCMAKE_BUILD_TYPE=Release" | |
build_command: "cmake --build . --config Release" | |
vers_command: "./tidy --version" | |
test_command: "ruby test.rb test" | |
############################################################ | |
# On macOS, we'll build both architectures. | |
############################################################ | |
- os: macOS-latest | |
name: X86_64 & Arm64 | |
cmake_command: "cmake ../.. -DCMAKE_BUILD_TYPE=Release '-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'" | |
build_command: "cmake --build . --config Release" | |
vers_command: "./tidy --version" | |
test_command: "ruby test.rb test" | |
############################################################ | |
# The standard Windows build is perfectly vanilla, and as | |
# of now is using MSVC 19. | |
############################################################ | |
- os: windows-latest | |
name: MSVC | |
cmake_command: "cmake ../.. -DCMAKE_BUILD_TYPE=Release" | |
build_command: "cmake --build . --config Release" | |
vers_command: "./tidy.exe --version" | |
test_command: "ruby test.rb test" | |
############################################################ | |
# We'll also build using MinGW on Windows, because it's | |
# always nice to support FOSS toolchains. While we could | |
# do this another way, we'll use the windows-2016 runner | |
# to distinguish it from the windows-latest runner. | |
############################################################ | |
- os: windows-2016 | |
name: MinGW | |
cmake_command: "cmake ../.. -DCMAKE_BUILD_TYPE=Release -G 'MinGW Makefiles'" | |
build_command: "cmake --build . --config Release" | |
vers_command: "./tidy --version" | |
test_command: "ruby test.rb test" | |
############################################################ | |
# We'll also build using Cygwin on Windows, because even | |
# Windows people sometimes dislike Windows. While we could | |
# do this another way, we'll use the windows-2019 runner to | |
# distinguish it from the windows-latest runner. | |
# Note: only the `tidy` target will be built (without the | |
# man page) for this runner, because xltproc has issues | |
# loading files in the virtual environment. The man page | |
# is tested and builds perfectly fine on real installs. | |
############################################################ | |
- os: windows-2019 | |
name: Cygwin | |
cmake_command: "cmake ../.. -DCMAKE_BUILD_TYPE=Release" | |
build_command: "cmake --build . --target tidy --config Release" | |
vers_command: "./tidy --version" | |
test_command: "ruby test.rb test" | |
steps: | |
############################################################ | |
# Checkput the repository. | |
############################################################ | |
- uses: actions/checkout@v2 | |
############################################################ | |
# Install MinGW-w64 if needed for the current runner. | |
############################################################ | |
- name: Install MinGW-w64 | |
if: ${{matrix.os == 'windows-2016'}} | |
uses: egor-tensin/setup-mingw@v2 | |
with: | |
platform: x64 | |
############################################################ | |
# Install Cygwin if needed for the current runner. | |
############################################################ | |
- name: Install Cygwin | |
if: ${{matrix.os == 'windows-2019'}} | |
uses: egor-tensin/setup-cygwin@v3 | |
with: | |
platform: x64 | |
packages: make gcc-core gcc-g++ cmake | |
############################################################ | |
# Cmake and Make the project. | |
############################################################ | |
- name: Build | |
working-directory: ${{github.workspace}}/build/cmake | |
run: | | |
${{matrix.cmake_command}} | |
${{matrix.build_command}} | |
############################################################ | |
# Windows MSVC is the only oddball here; why does it | |
# install the binary into a subfolder, unlike all of the | |
# other builds? Let's make everything else easier by | |
# relocating it to the same spot as all the other build | |
# locations. | |
############################################################ | |
- name: Move the MSVC exe to someplace sensible | |
if: ${{matrix.os == 'windows-latest'}} | |
run: | | |
move-item -path "${{github.workspace}}/build/cmake/Release/tidy.exe" -destination "${{github.workspace}}/build/cmake/" | |
############################################################ | |
# Just so that a human can make a quick sanity check. | |
############################################################ | |
- name: Show Version | |
working-directory: ${{github.workspace}}/build/cmake | |
run: | | |
${{matrix.vers_command}} | |
############################################################ | |
# Install Ruby for running our regression tests. It's quite | |
# nice that this package is generic enough to work on all | |
# of the different runners. | |
############################################################ | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 2.7 | |
bundler-cache: true | |
############################################################ | |
# Ensure that dependencies are met. | |
############################################################ | |
- name: Bundle Install | |
working-directory: ${{github.workspace}}/regression_testing | |
run: | | |
bundle install | |
############################################################ | |
# Finally, check for regressions. | |
############################################################ | |
- name: Run Regression Test | |
working-directory: ${{github.workspace}}/regression_testing | |
run: | | |
${{matrix.test_command}} |