aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/main.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/main.yml')
-rw-r--r--.github/workflows/main.yml403
1 files changed, 403 insertions, 0 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 000000000..a852b8809
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,403 @@
+name: Build and test Qbs
+
+on: [push]
+
+jobs:
+ build-linux:
+ name: ${{ matrix.config.name }}
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {
+ name: 'Build on Linux (gcc)',
+ options: 'modules.cpp.compilerWrapper:ccache modules.qbs.debugInformation:true modules.qbsbuildconfig.enableBundledQt:true',
+ script: './scripts/build-qbs-with-qbs.sh',
+ cacheid: '{{ runner.os }}-gcc-ccache',
+ }
+ env:
+ BUILD_OPTIONS: ${{ matrix.config.options }}
+ WITH_TESTS: 0
+ steps:
+ - uses: actions/checkout@v1
+ - name: Create .ccache dir
+ run: mkdir -p ~/.ccache
+ - name: prepare timestamp
+ id: ccache_cache_timestamp
+ run: |
+ export TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
+ echo ::set-output name=timestamp::$TIMESTAMP
+ - name: ccache cache files
+ uses: actions/cache@v2
+ with:
+ path: ~/.ccache
+ key: ${{ matrix.config.cacheid }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
+ restore-keys: ${{ matrix.config.cacheid }}
+ - name: Pull the Bionic Image
+ run: docker-compose pull bionic
+ - name: Print ccache stats
+ run: docker-compose run bionic ccache -s
+ - name: Build Qbs
+ run: docker-compose run bionic ${{ matrix.config.script }}
+ - name: Print ccache stats
+ run: docker-compose run bionic ccache -s
+ - name: Create acrhive
+ run: tar -C release/install-root/ -cJf qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz usr/local
+ - name: Upload artifacts
+ uses: 'actions/upload-artifact@v2'
+ with:
+ name: qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz
+ path: qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz
+
+ build-linux-extra:
+ name: ${{ matrix.config.name }}
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {
+ name: 'Build on Linux (clang_tidy)',
+ script: './scripts/run-analyzer.sh',
+ options: 'profile:qt-clang_64 modules.cpp.compilerWrapper:ccache',
+ cacheid: '{{ runner.os }}-clang-ccache',
+ }
+ - {
+ name: 'Build on Linux (CMake)',
+ script: './scripts/build-qbs-with-cmake.sh',
+ cacheid: '{{ runner.os }}-cmake-ccache',
+ }
+ - {
+ name: 'Build on Linux (QMake)',
+ script: './scripts/build-qbs-with-qmake.sh',
+ options: 'CONFIG+=ccache',
+ cacheid: '{{ runner.os }}-qmake-ccache',
+ }
+ env:
+ BUILD_OPTIONS: ${{ matrix.config.options }}
+ QTEST_FUNCTION_TIMEOUT: 9000000
+ steps:
+ - uses: actions/checkout@v1
+ - name: Create .ccache dir
+ run: mkdir -p ~/.ccache
+ - name: prepare timestamp
+ id: ccache_cache_timestamp
+ run: |
+ export TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
+ echo ::set-output name=timestamp::$TIMESTAMP
+ - name: ccache cache files
+ uses: actions/cache@v2
+ with:
+ path: ~/.ccache
+ key: ${{ matrix.config.cacheid }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
+ restore-keys: ${{ matrix.config.cacheid }}
+ - name: Pull the Bionic Image
+ run: docker-compose pull bionic
+ - name: Print ccache stats
+ run: docker-compose run bionic ccache -s
+ - name: Build Qbs
+ run: docker-compose run bionic ${{ matrix.config.script }}
+ - name: Print ccache stats
+ run: docker-compose run bionic ccache -s
+
+ build-macos:
+ name: Build on macOS
+ runs-on: macos-latest
+ timeout-minutes: 45
+ env:
+ BUILD_OPTIONS: 'modules.cpp.compilerWrapper:ccache modules.qbs.debugInformation:true modules.qbsbuildconfig.enableAddressSanitizer:false modules.qbsbuildconfig.enableBundledQt:true'
+ WITH_TESTS: 0
+ steps:
+ - uses: actions/checkout@v1
+ - name: Create .ccache dir
+ run: mkdir -p ~/.ccache
+ - name: prepare timestamp
+ id: ccache_cache_timestamp
+ run: |
+ export TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
+ echo ::set-output name=timestamp::$TIMESTAMP
+ - name: ccache cache files
+ uses: actions/cache@v2
+ with:
+ path: ~/.ccache
+ key: ${{ runner.os }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
+ restore-keys: ${{ runner.os }}-ccache-
+ - name: Install required packages
+ run: |
+ brew install ccache p7zip
+ /usr/bin/python3 -m pip install --user beautifulsoup4 lxml
+ - name: Install Qt
+ uses: ./.github/actions/download-qt
+ with:
+ toolchain: clang_64
+ - name: Install Qt Creator
+ uses: ./.github/actions/download-qtc
+ - name: Print ccache stats
+ run: ccache -s
+ - name: Setup Qbs
+ run: |
+ qbs setup-toolchains --detect
+ qbs setup-qt --detect
+ qbs config profiles.qt.baseProfile xcode-macosx-x86_64
+ qbs config defaultProfile qt
+ qbs config --list
+ - name: Build Qbs
+ run: scripts/build-qbs-with-qbs.sh
+ - name: Print ccache stats
+ run: ccache -s
+ - name: Create acrhive
+ run: tar -C release/install-root/ -cJf qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz usr/local
+ - name: Upload artifacts
+ uses: 'actions/upload-artifact@v2'
+ with:
+ name: qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz
+ path: qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz
+
+ build-windows:
+ name: Build on Windows
+ runs-on: windows-latest
+ timeout-minutes: 45
+ env:
+ BUILD_OPTIONS: 'modules.cpp.compilerWrapper:clcache modules.qbsbuildconfig.enableAddressSanitizer:false modules.qbsbuildconfig.enableBundledQt:true'
+ WITH_TESTS: 0
+ steps:
+ - uses: actions/checkout@v1
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.8
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install beautifulsoup4 lxml
+ pip install git+https://github.com/frerich/clcache.git@cae73d8255d78db8ba11e23c51fd2c9a89e7475b
+ - name: clcache cache files
+ uses: actions/cache@v2
+ with:
+ path: ~/clcache
+ key: ${{ runner.os }}-clcache-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
+ restore-keys: ${{ runner.os }}-clcache-
+ - name: Print clcache stats
+ run: clcache -s
+ - name: Install Qt
+ uses: ./.github/actions/download-qt
+ with:
+ toolchain: win64_msvc2019_64
+ - name: Install Qt Creator
+ uses: ./.github/actions/download-qtc
+ - name: Setup Qbs
+ run: |
+ qbs setup-toolchains --detect
+ qbs setup-qt $(which qmake).exe qt
+ qbs config defaultProfile qt
+ qbs config --list
+ shell: bash
+ - name: Build Qbs
+ run: scripts/build-qbs-with-qbs.sh
+ shell: bash
+ - name: Print clcache stats
+ run: clcache -s
+ - name: Create acrhive
+ run: 7z a qbs-${{ runner.os }}-${{ github.run_id }}.7z release/install-root/ -r
+ shell: bash
+ - name: Upload artifacts
+ uses: 'actions/upload-artifact@v2'
+ with:
+ name: qbs-${{ runner.os }}-${{ github.run_id }}.7z
+ path: qbs-${{ runner.os }}-${{ github.run_id }}.7z
+
+ test-linux:
+ name: ${{ matrix.config.name }}
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+ needs: build-linux
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {
+ name: 'Run Linux tests (gcc)',
+ image: 'bionic',
+ profile: 'qt-gcc_64',
+ script: './scripts/test-qbs.sh',
+ }
+ - {
+ name: 'Run Linux tests (clang)',
+ image: 'bionic',
+ profile: 'qt-clang_64',
+ script: './scripts/test-qbs.sh',
+ }
+ - {
+ name: 'Run Android tests (Qt 5.13)',
+ image: 'bionic-android-513',
+ profile: '',
+ script: './scripts/test-qt-for-android.sh',
+ }
+ - {
+ name: 'Run Android tests (Qt 5.14)',
+ image: 'bionic-android-514',
+ profile: '',
+ script: './scripts/test-qt-for-android.sh',
+ }
+ env:
+ QBS_TEST_SOURCE_ROOT: 'tests'
+ QBS_AUTOTEST_PROFILE: ${{ matrix.config.profile }}
+ QTEST_FUNCTION_TIMEOUT: 9000000
+ steps:
+ - uses: actions/checkout@v1
+ - name: Download artifact
+ uses: actions/download-artifact@v1
+ with:
+ name: qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz
+ path: ./
+ - name: Unpack artifact
+ run: mkdir -p release/install-root/ && tar xf qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz -C release/install-root/
+ - name: Pull the Docker Image
+ run: docker-compose pull ${{ matrix.config.image }}
+ - name: Run tests
+ run: docker-compose run ${{ matrix.config.image }} ${{ matrix.config.script }} release/install-root/usr/local/bin
+
+ test-baremetal:
+ name: Run Baremetal tests
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+ needs: build-linux
+ env:
+ QBS_TEST_SOURCE_ROOT: 'tests'
+ steps:
+ - uses: actions/checkout@v1
+ - name: Download artifact
+ uses: actions/download-artifact@v1
+ with:
+ name: qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz
+ path: ./
+ - name: Unpack artifact
+ run: mkdir -p release/install-root/ && tar xf qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz -C release/install-root/
+ - name: Pull the Focal-Baremetal Image
+ run: docker-compose pull focal-baremetal
+ - name: arm-none-eabi-gcc-9_2
+ run: QBS_AUTOTEST_PROFILE=arm-none-eabi-gcc-9_2 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
+ - name: avr-gcc-5_4
+ run: QBS_AUTOTEST_PROFILE=avr-gcc-5_4 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
+ - name: msp430-gcc-4_6
+ run: QBS_AUTOTEST_PROFILE=msp430-gcc-4_6 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
+ - name: sdcc-3_8_0-mcs51
+ run: QBS_AUTOTEST_PROFILE=sdcc-3_8_0-mcs51 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
+ - name: sdcc-3_8_0-stm8
+ run: QBS_AUTOTEST_PROFILE=sdcc-3_8_0-stm8 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
+
+ test-macos:
+ name: ${{ matrix.config.name }}
+ runs-on: macos-latest
+ timeout-minutes: 45
+ needs: build-macos
+ env:
+ QTEST_FUNCTION_TIMEOUT: 9000000
+ QBS_AUTOTEST_PROFILE: 'qt'
+ QBS_TEST_SOURCE_ROOT: 'tests'
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {
+ name: 'Run macOS tests (Xcode 11.6)',
+ target: 'desktop',
+ toolchain: 'clang_64',
+ testProfile: 'xcode_11_6-macosx-x86_64',
+ }
+ - {
+ name: 'Run macOS tests (Xcode 10.3)',
+ target: 'desktop',
+ toolchain: 'clang_64',
+ testProfile: 'xcode_10_3-macosx-x86_64',
+ }
+ - {
+ name: 'Run iOS tests (Xcode 11.6)',
+ target: 'ios',
+ toolchain: 'ios',
+ testProfile: 'xcode_11_6-iphoneos-arm64',
+ }
+ steps:
+ - uses: actions/checkout@v1
+ - name: Download artifact
+ uses: actions/download-artifact@v1
+ with:
+ name: qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz
+ path: ./
+ - name: Unpack artifact
+ run: mkdir -p release/install-root/ && tar xf qbs-${{ runner.os }}-${{ github.run_id }}.tar.xz -C release/install-root/
+ - name: Update PATH
+ run: echo ::add-path::./release/install-root/usr/local/bin
+ - name: Install required packages
+ run: brew install capnp ccache grpc icoutils makensis protobuf p7zip
+ - name: Install Qt
+ uses: ./.github/actions/download-qt
+ with:
+ target: ${{ matrix.config.target }}
+ toolchain: ${{ matrix.config.toolchain }}
+ - name: Setup Qbs
+ run: |
+ qbs setup-toolchains --detect
+ qbs setup-qt --detect
+ qbs config profiles.qt.baseProfile ${{ matrix.config.testProfile }}
+ qbs config defaultProfile qt
+ qbs config --list
+ - name: Run Tests
+ run: ./scripts/test-qbs.sh ./release/install-root/usr/local/bin
+
+ test-windows:
+ name: ${{ matrix.config.name }}
+ runs-on: windows-latest
+ timeout-minutes: 45
+ needs: build-windows
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {
+ name: 'Run Windows tests (MSVC 2019)',
+ target: 'desktop',
+ toolchain: 'win64_msvc2019_64',
+ testProfile: 'MSVC2019-x64',
+ }
+ - {
+ name: 'Run Windows tests (clang-cl)',
+ target: 'desktop',
+ toolchain: 'win64_msvc2019_64',
+ testProfile: 'clang-cl-x86_64',
+ }
+ env:
+ QTEST_FUNCTION_TIMEOUT: 9000000
+ QBS_AUTOTEST_PROFILE: 'qt'
+ QBS_TEST_SOURCE_ROOT: 'tests'
+ steps:
+ - uses: actions/checkout@v1
+ - name: Download artifact
+ uses: actions/download-artifact@v1
+ with:
+ name: qbs-${{ runner.os }}-${{ github.run_id }}.7z
+ path: ./
+ - name: Unpack artifact
+ run: 7z x qbs-${{ runner.os }}-${{ github.run_id }}.7z
+ shell: bash
+ - name: Update PATH
+ run: echo ::add-path::./release/install-root/bin
+ shell: bash
+ - name: Install Qt
+ uses: ./.github/actions/download-qt
+ with:
+ toolchain: ${{ matrix.config.toolchain }}
+ - name: Setup Qbs
+ run: |
+ qbs setup-toolchains --detect
+ qbs setup-qt $(which qmake).exe qt
+ qbs config profiles.qt.baseProfile ${{ matrix.config.testProfile }}
+ qbs config defaultProfile qt
+ qbs config --list
+ shell: bash
+ - name: Run Tests
+ run: ./scripts/test-qbs.sh ./release/install-root/bin
+ shell: bash