1- # Fast builds
1+ # Fast build linux part is working in dockers, Windows is not
22name : FastBuild
33
44on : workflow_call
55
66permissions :
77 contents : read
8+ packages : read
89
910env :
1011 BUILD_DIR : " ${{github.workspace}}/build"
1112 INSTL_DIR : " ${{github.workspace}}/install-dir"
1213
1314jobs :
14- FastBuild :
15- env :
16- VCPKG_PATH : " ${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows"
15+ ubuntu-build :
16+ runs-on : ubuntu-latest
17+ container :
18+ image : ghcr.io/bb-ur/umf-${{ matrix.os }}:latest
19+ options : --user test_user --cap-add=SYS_NICE --cap-add=SYS_PTRACE
20+ volumes :
21+ - ${{ github.workspace }}:${{ github.workspace }}
1722 strategy :
1823 matrix :
1924 include :
20- - os : windows-latest
21- build_tests : ' ON'
22- simple_cmake : ' OFF'
23- # pure C build (Windows)
24- - os : windows-latest
25- # Tests' building is off for a pure C build
26- build_tests : ' OFF'
27- simple_cmake : ' OFF'
28- - os : ubuntu-latest
25+ - os : ubuntu-22.04
2926 build_tests : ' ON'
30- # Windows doesn't recognize 'CMAKE_BUILD_TYPE', it uses '--config' param in build command
31- extra_build_options : ' -DCMAKE_BUILD_TYPE=Release -DUMF_BUILD_BENCHMARKS=ON -DUMF_BUILD_BENCHMARKS_MT=ON'
27+ extra_build_options : ' -DUMF_BUILD_BENCHMARKS=ON -DUMF_BUILD_BENCHMARKS_MT=ON'
3228 simple_cmake : ' OFF'
33- # pure C build (Linux)
34- - os : ubuntu-latest
35- # Windows doesn't recognize 'CMAKE_BUILD_TYPE', it uses '--config' param in build command
29+ # pure C build
30+ - os : ubuntu-22.04
3631 # Tests' building is off for a pure C build
3732 build_tests : ' OFF'
38- extra_build_options : ' -DCMAKE_BUILD_TYPE=Release - DUMF_BUILD_BENCHMARKS=ON'
33+ extra_build_options : ' -DUMF_BUILD_BENCHMARKS=ON'
3934 simple_cmake : ' OFF'
40- # simplest CMake on ubuntu-latest
41- - os : ubuntu-latest
35+ # simplest CMake on Ubuntu 22.04, 24.04
36+ - os : ubuntu-22.04
4237 build_tests : ' ON'
43- extra_build_options : ' -DCMAKE_BUILD_TYPE=Release'
4438 simple_cmake : ' ON'
45- # simplest CMake ubuntu-22.04
46- - os : ubuntu-22.04
39+ - os : ubuntu-24.04
4740 build_tests : ' ON'
48- extra_build_options : ' -DCMAKE_BUILD_TYPE=Release'
4941 simple_cmake : ' ON'
50- name : Fast builds (${{matrix.os}}, build_tests=${{matrix.build_tests}}, simple_cmake=${{matrix.simple_cmake}}, extra_build_options=${{matrix.extra_build_options}})
51- runs-on : ${{ (matrix.os == 'ubuntu-latest' && github.repository_owner == 'oneapi-src') && 'intel-ubuntu-22.04' || matrix.os }}
42+ name : Fast (${{matrix.os}}, build_tests=${{matrix.build_tests}}, simple_cmake=${{matrix.simple_cmake}}, extra_build_options=${{matrix.extra_build_options}})
43+
44+ steps :
45+ - name : Checkout repository
46+ uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
47+ with :
48+ fetch-depth : 0
49+
50+ - name : Configure CMake
51+ if : matrix.simple_cmake == 'OFF'
52+ run : >
53+ cmake
54+ -B ${{env.BUILD_DIR}}
55+ -DCMAKE_BUILD_TYPE=Release
56+ -DUMF_FORMAT_CODE_STYLE=OFF
57+ -DUMF_DEVELOPER_MODE=ON
58+ -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON
59+ -DUMF_BUILD_TESTS=${{matrix.build_tests}}
60+ -DUMF_BUILD_EXAMPLES=ON
61+ -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON
62+ -DUMF_BUILD_CUDA_PROVIDER=ON
63+ -DUMF_TESTS_FAIL_ON_SKIP=ON
64+ -DUMF_BUILD_SHARED_LIBRARY=ON
65+ ${{matrix.extra_build_options}}
66+
67+ - name : Configure CMake (simple)
68+ if : matrix.simple_cmake == 'ON'
69+ run : >
70+ cmake
71+ -B ${{env.BUILD_DIR}}
72+ -DCMAKE_BUILD_TYPE=Release
73+ -DUMF_BUILD_SHARED_LIBRARY=ON
74+ -DUMF_TESTS_FAIL_ON_SKIP=ON
75+ ${{matrix.extra_build_options}}
76+
77+ - name : Build
78+ run : cmake --build ${{env.BUILD_DIR}} --config Release -j $(nproc)
79+
80+ - name : Run examples
81+ working-directory : ${{env.BUILD_DIR}}
82+ run : ctest --output-on-failure --test-dir examples -C Release
83+
84+ - name : Run tests
85+ if : matrix.build_tests == 'ON'
86+ working-directory : ${{env.BUILD_DIR}}
87+ run : ctest --output-on-failure --test-dir test -C Release
88+
89+ # TODO: use dockers
90+ windows-build :
91+ runs-on : windows-latest
92+ env :
93+ VCPKG_PATH : " ${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows"
94+ strategy :
95+ matrix :
96+ include :
97+ - build_tests : ' ON'
98+ simple_cmake : ' OFF'
99+ - build_tests : ' OFF'
100+ simple_cmake : ' OFF'
101+ - build_tests : ' OFF'
102+ simple_cmake : ' ON'
103+ name : Fast (windows-latest, build_tests=${{matrix.build_tests}}, simple_cmake=${{matrix.simple_cmake}})
52104
53105 steps :
54106 - name : Checkout repository
@@ -57,24 +109,16 @@ jobs:
57109 fetch-depth : 0
58110
59111 - name : Initialize vcpkg
60- if : matrix.os == 'windows-latest'
61112 uses : lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5
62113 with :
63114 vcpkgGitCommitId : ea2a964f9303270322cf3f2d51c265ba146c422d # 1.04.2025
64115 vcpkgDirectory : ${{env.BUILD_DIR}}/vcpkg
65116 vcpkgJsonGlob : ' **/vcpkg.json'
66117
67- - name : Install dependencies (windows-latest)
68- if : matrix.os == 'windows-latest'
118+ - name : Install dependencies
69119 run : vcpkg install --triplet x64-windows
70120 shell : pwsh # Specifies PowerShell as the shell for running the script.
71121
72- - name : Install dependencies
73- if : matrix.os != 'windows-latest'
74- run : |
75- sudo apt-get update
76- sudo apt-get install -y cmake libhwloc-dev libnuma-dev libtbb-dev
77-
78122 - name : Configure CMake
79123 if : matrix.simple_cmake == 'OFF'
80124 run : >
@@ -91,17 +135,16 @@ jobs:
91135 -DUMF_BUILD_CUDA_PROVIDER=ON
92136 -DUMF_TESTS_FAIL_ON_SKIP=ON
93137 -DUMF_BUILD_SHARED_LIBRARY=ON
94- ${{matrix.extra_build_options}}
95138
96139 - name : Configure CMake (simple)
97140 if : matrix.simple_cmake == 'ON'
98141 run : >
99142 cmake
100143 -B ${{env.BUILD_DIR}}
101144 -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}"
145+ -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}"
102146 -DUMF_BUILD_SHARED_LIBRARY=ON
103147 -DUMF_TESTS_FAIL_ON_SKIP=ON
104- ${{matrix.extra_build_options}}
105148
106149 - name : Build
107150 run : cmake --build ${{env.BUILD_DIR}} --config Release -j
@@ -118,7 +161,6 @@ jobs:
118161 # TODO: We could add some script to verify metadata of dll's (selected fields, perhaps)
119162 # ref. https://superuser.com/questions/381276/what-are-some-nice-command-line-ways-to-inspect-dll-exe-details
120163 - name : Print metadata of our dll's
121- if : matrix.os == 'windows-latest'
122164 run : |
123165 get-command ${{github.workspace}}/build/bin/Release/umf.dll | format-list
124166 get-command ${{github.workspace}}/build/src/proxy_lib/Release/umf_proxy.dll | format-list
0 commit comments