b9b03165a5
Has minimal configuration in order to achieve fastest build times. CCache is on, and PCH is off as it significantly reduces the Ccache hit ratio. This Github Workflow has been measured to take around + 30min without any Ccache hits and 8min for a rebuild, on Linux + 20min without any Ccache hits and 4min for a rebuild, on macOS + 1h without any Ccache hits and 20min for a rebuild, on Windows The goal is to use such Cloud building and testing systems as "smoke runs", providing quick feedback, much sooner than the canonical approval from Coin. Additionally having many independent systems helps verify "flakiness" issues. Another big advantage of such systems is their hackability, allowing someone to tweak the build parameters by just editing a couple of YAML lines. Change-Id: I7eca22f513516b9e61f333fb1fe89ab11ed2d1d1 Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
111 lines
3.7 KiB
YAML
111 lines
3.7 KiB
YAML
# Smoke builds
|
|
#
|
|
# The goal of this workflow is to finish as fast as possible. Therefore some
|
|
# choices have been made:
|
|
# - no optimizations
|
|
# - link to system-provided libraries instead of bulding
|
|
# bundled 3rd party libraries
|
|
# - ccache
|
|
|
|
name: Smoke build
|
|
|
|
on: push
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: ubuntu-18.04
|
|
os: ubuntu-18.04
|
|
deps: libgl-dev libglu-dev libpcre2-dev libz-dev libfreetype6-dev libpng-dev libjpeg-dev libsqlite3-dev
|
|
tools: ninja-build ccache
|
|
install_cmd: sudo apt-get -y install
|
|
cmake_flags: -DFEATURE_system_sqlite=ON
|
|
- name: macos-10.15
|
|
os: macos-10.15
|
|
deps: jpeg sqlite
|
|
tools: ninja ccache
|
|
install_cmd: brew install
|
|
cmake_flags: -DFEATURE_system_sqlite=ON
|
|
- name: windows-2019
|
|
os: windows-2019
|
|
install_cmd: choco install
|
|
install_cmd_postfix: --yes --no-progress
|
|
# Chocolatey sqlite package does not come with headers, so we build with bundled sqlite.
|
|
#deps: sqlite
|
|
tools: ninja ccache
|
|
# Because of header conflicts we disable everything else besides sqlite driver
|
|
cmake_flags: -DFEATURE_system_sqlite=OFF -DFEATURE_sql_psql=OFF -DFEATURE_sql_mysql=OFF -DFEATURE_sql_odbc=OFF
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
|
|
steps:
|
|
|
|
- name: prepare Linux
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt-get update
|
|
- name: prepare Windows
|
|
if: runner.os == 'Windows'
|
|
# Header pthread.h from postgres is included and creates issues.
|
|
# Also library zlib.lib is linked instead of the system one.
|
|
run: rm -rf "C:/Program Files/PostgreSQL/"
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: restore ccache
|
|
id: ccache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/.ccache
|
|
# "github.run_id" is unique, which causes the cache to always get
|
|
# saved at the end of a successful run.
|
|
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.run_id }}
|
|
# As the unique "key" above will never be found in the cache when the
|
|
# job starts, we need these broader "restore-keys" in order to match
|
|
# and restore the most recent cache.
|
|
restore-keys: |
|
|
ccache-${{ runner.os }}-${{ github.ref }}-
|
|
ccache-${{ runner.os }}-refs/heads/dev-
|
|
ccache-${{ runner.os }}-
|
|
|
|
- name: install build dependencies
|
|
run: ${{ matrix.install_cmd }} ${{ matrix.deps }} ${{ matrix.install_cmd_postfix }}
|
|
if: matrix.deps != ''
|
|
- name: install compiler tools
|
|
run: ${{ matrix.install_cmd }} ${{ matrix.tools }} ${{ matrix.install_cmd_postfix }}
|
|
- name: print versions and environment
|
|
run: |
|
|
gcc --version | head -1
|
|
cmake --version | head -1
|
|
echo Ninja `ninja --version`
|
|
{ ninja --help || true ; } 2>&1 | grep "run N jobs in parallel"
|
|
ccache --version | head -1
|
|
echo Environment:
|
|
printenv
|
|
|
|
- name: make build directory
|
|
run: mkdir build
|
|
- name: configure
|
|
working-directory: build
|
|
run: ../configure -cmake -opensource -confirm-license \
|
|
\ -debug -no-optimize-debug -nomake tests -nomake examples \
|
|
\ -no-harfbuzz -no-iconv \
|
|
\ -system-pcre -system-zlib -system-freetype -system-libpng -system-libjpeg \
|
|
\ -- -DQT_NO_MAKE_TESTS=ON -DQT_NO_MAKE_EXAMPLES=ON \
|
|
\ -DQT_USE_CCACHE=ON -DBUILD_WITH_PCH=OFF \
|
|
\ ${{ matrix.cmake_flags }}
|
|
- name: ninja
|
|
working-directory: build
|
|
run: ninja
|
|
|
|
- name: various stats
|
|
# Print ccache utilization statistics, then reset them.
|
|
run: ccache -s && ccache -z
|