Skip to content

Try Test Run Workflow #109

Try Test Run Workflow

Try Test Run Workflow #109

Workflow file for this run

# Changes in this file need to be pushed to the main branch to take effect.
# pull_request_target
# Unfortunately, we want to access GitHub secrets in this workflow,
# which is only possible by using pull_request_target.
# But that means, every PR runs with the pipeline from the main branch.
name: build-all-configs
on:
push:
branches:
- main
- feature/generator-choice # TODO remove this line after PR is merged
pull_request_target:
types: [assigned, opened, synchronize, reopened]
jobs:
build-on-osx-for-objectiveC:
runs-on: macos-12
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/get-generator.yml
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_OBJC=ON -G Xcode
- name: Build release
run: cmake --build build --parallel $(sysctl -n hw.ncpu) --config Release -DDJINNI_EXECUTABLE="$(pwd)/zz/djinni"
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
- name: Install files
run: cmake --build build --parallel $(sysctl -n hw.ncpu) --config Release --target install -- DESTDIR=check_install_root
- name: List installed files
working-directory: build/check_install_root
run: du -a | tail -r | awk -F ' ' '{print $2}'
- name: Test if expected files have been installed
working-directory: build/check_install_root
run: diff -u ../../test/objc_list.txt <(du -a | tail -r | awk -F ' ' '{print $2}')
build-on-osx-for-python:
runs-on: macos-12
strategy:
matrix:
python-version: ["3.7.17", "3.12.1"] # oldest and newest chached on gh actions (at the moment of writing this)
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install Python dependencies
uses: py-actions/py-dependency-install@v3
with:
path: "requirements.txt"
- uses: ./.github/actions/get-generator.yml
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_PYTHON=ON -DDJINNI_EXECUTABLE="$(pwd)/zz/djinni"
- name: Build release
run: cmake --build build --parallel $(sysctl -n hw.ncpu) --config Release
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
build-on-ubuntu-for-jni:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_JNI=ON
- name: Build release
run: cmake --build build --parallel $(nproc) --config Release
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
- name: Install files
run: cmake --build build --parallel $(nproc) --config Release --target install -- DESTDIR=check_install_root
- name: List installed files
working-directory: build/check_install_root
run: du -a | tac | awk -F ' ' '{print $2}' | sort
- name: Test if expected files have been installed
working-directory: build/check_install_root
run: diff -u ../../test/jni_list.txt <(du -a | tac | awk -F ' ' '{print $2}' | sort)
build-on-ubuntu-for-jni-with-thread-attach:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_JNI=ON -DJNI_CPP_THREAD_ATTACH=ON -DCMAKE_BUILD_TYPE=Release
- name: Build release
run: cmake --build build --parallel $(nproc)
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
build-on-ubuntu-for-android_arm32-with-thread-attach:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- uses: ashutoshvarma/setup-ninja@master
with:
version: 1.10.2
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_JNI=ON -DJNI_CPP_THREAD_ATTACH=ON -DCMAKE_BUILD_TYPE=Release -DJINNI_BUILD_TESTING=OFF -DCMAKE_TOOLCHAIN_FILE=${ANDROID_SDK_ROOT}/ndk/$(ls ${ANDROID_SDK_ROOT}/ndk -C1 | sort -r | head -1)/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-26 -DANDROID_NATIVE_API_LEVEL=26 -DANDROID_ABI=armeabi-v7a -G Ninja
- name: Build release
run: cmake --build build --parallel $(nproc)
build-on-ubuntu-for-python:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Install dependencies
uses: py-actions/py-dependency-install@v3
with:
path: "requirements.txt"
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_PYTHON=ON
- name: Build release
run: cmake --build build --parallel $(nproc) --config Release
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
build-on-windows-for-cppcli:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: install djinni
run: |
$VERSION = 'v' + [regex]::Match((Get-Content .tool-versions), '^djinni (\d+.\d+.\d+)').captures.groups[1].value
$URL = 'https://github.com/cross-language-cpp/djinni-generator/releases/download/' + $VERSION + '/djinni.bat'
Invoke-WebRequest -Uri $URL -OutFile djinni.bat
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_CPPCLI=ON -DCMAKE_INSTALL_PREFIX=build/check_install_root -DDJINNI_EXECUTABLE="$(((Get-Location).Path) -replace "\\","/")/djinni.bat" -G "Visual Studio 17 2022"
- name: Install nuget dependencies
working-directory: build/test-suite
run: dotnet restore DjinniCppCliTest.csproj --runtime win-x64
- name: Build release
run: cmake --build build --config Release
- name: Run tests
working-directory: build/test-suite
run: dotnet test Release/DjinniCppCliTest.dll
- name: Install files
run: cmake --build build --config Release --target install
- name: List installed files
working-directory: build/check_install_root
run: Resolve-Path -Path (Get-ChildItem -Recurse).FullName -Relative
- name: Test if expected files have been installed
working-directory: build/check_install_root
run: if((Compare-Object (Get-Content ..\..\test\cppcli_list.txt) (Resolve-Path -Path (Get-ChildItem -Recurse).FullName -Relative))) { Write-Error "file list not equal" }
check_generator_used:
needs: ["build-on-windows-for-cppcli", "build-on-ubuntu-for-python", "build-on-ubuntu-for-android_arm32-with-thread-attach", "build-on-ubuntu-for-jni-with-thread-attach", "build-on-ubuntu-for-jni", "build-on-osx-for-python", "build-on-osx-for-objectiveC"]
runs-on: ubuntu-latest
steps:
- name: Check release generator was used
run: |
dl_arg=$(head -n 1 generator.cfg | awk '{print $1}')
if [ "$dl_arg" != "release" ]; then
echo "dl_arg is not 'release'"
exit 1
fi