name: Hostrunner tests on: push: branches: - main pull_request: branches: - main env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release CC: clang CXX: clang++ jobs: hostrunner_tests: runs-on: ${{ matrix.arch }} strategy: matrix: arch: [[self-hosted, x64]] fail-fast: false steps: - uses: actions/checkout@v3 - name: Set runner label run: echo "runner_label=${{ matrix.arch[1] }}" >> $GITHUB_ENV - name: Set rootfs paths run: | echo "FEX_ROOTFS_MOUNT=/mnt/AutoNFS/rootfs/" >> $GITHUB_ENV echo "FEX_ROOTFS_PATH=$HOME/Rootfs/" >> $GITHUB_ENV echo "FEX_ROOTFS=$HOME/Rootfs/" >> $GITHUB_ENV echo "ROOTFS=$HOME/Rootfs/" >> $GITHUB_ENV - name: Update RootFS cache # Use a bash shell so we can use the same syntax for environment variable # access regardless of the host operating system shell: bash run: $GITHUB_WORKSPACE/Scripts/CI_FetchRootFS.py - name : submodule checkout # Need to update submodules run: | git submodule sync --recursive git submodule update --init --depth 1 - name: Clean Build Environment run: rm -Rf ${{runner.workspace}}/build - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands run: cmake -E make_directory ${{runner.workspace}}/build - name: Configure CMake # Use a bash shell so we can use the same syntax for environment variable # access regardless of the host operating system shell: bash working-directory: ${{runner.workspace}}/build # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja -DENABLE_LTO=False -DENABLE_ASSERTIONS=True - name: Build working-directory: ${{runner.workspace}}/build shell: bash # Execute the build. You can specify a specific target with "--target " run: cmake --build . --config $BUILD_TYPE - name: ASM Tests working-directory: ${{runner.workspace}}/build shell: bash # Execute the unit tests run: cmake --build . --config $BUILD_TYPE --target asm_tests - name: ASM Test Results move if: ${{ always() }} shell: bash working-directory: ${{runner.workspace}}/build run: mv ${{runner.workspace}}/build/Testing/Temporary/LastTest.log ${{runner.workspace}}/build/Testing/Temporary/LastTest_ASM.log || true - name: Truncate test results if: ${{ always() }} shell: bash working-directory: ${{runner.workspace}}/build # Cap out the log files at 20M in case something crash spins and dumps fault text # ASM tests get quite close to 10MB run: truncate --size="<20M" ${{runner.workspace}}/build/Testing/Temporary/LastTest_*.log || true - name: Set runner name if: ${{ always() }} run: echo "runner_name=$(hostname)" >> $GITHUB_ENV - name: Upload results if: ${{ always() }} uses: 'actions/upload-artifact@v3' timeout-minutes: 1 with: name: Results-${{ env.runner_name }} path: ${{runner.workspace}}/build/Testing/Temporary/LastTest_*.log retention-days: 3