Skip to content

Commit 08d6371

Browse files
committed
Update CI to use Docker
- Updated reusable_basic.yml and reusable_fast.yml to use Docker images. - Added install_oneAPI.sh to support image setup.
1 parent c66beee commit 08d6371

File tree

4 files changed

+111
-66
lines changed

4 files changed

+111
-66
lines changed

.github/scripts/install_oneAPI.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
# Copyright (C) 2025 Intel Corporation
3+
# Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
4+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
6+
# install_oneAPI.sh - Script for installing Intel oneAPI from the official repository
7+
8+
apt-get update
9+
apt-get install -y gpg-agent gnupg
10+
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor -o /usr/share/keyrings/oneapi-archive-keyring.gpg
11+
echo 'deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main' > /etc/apt/sources.list.d/oneAPI.list
12+
apt-get update
13+
apt-get install -y intel-oneapi-ippcp-devel intel-oneapi-ipp-devel intel-oneapi-common-oneapi-vars intel-oneapi-compiler-dpcpp-cpp

.github/workflows/pr_push.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ concurrency:
1414

1515
permissions:
1616
contents: read
17+
packages: read
1718

1819
jobs:
1920
CodeChecks:

.github/workflows/reusable_basic.yml

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on: workflow_call
55

66
permissions:
77
contents: read
8+
packages: read
89

910
env:
1011
BUILD_DIR : "${{github.workspace}}/build"
@@ -15,6 +16,12 @@ env:
1516
jobs:
1617
ubuntu-build:
1718
name: Ubuntu
19+
runs-on: ubuntu-latest
20+
container:
21+
image: ghcr.io/bb-ur/umf-${{ matrix.os }}:latest
22+
options: --privileged
23+
volumes:
24+
- ${{ github.workspace }}:${{ github.workspace }}
1825
strategy:
1926
matrix:
2027
os: ['ubuntu-22.04', 'ubuntu-24.04']
@@ -93,7 +100,7 @@ jobs:
93100
link_hwloc_statically: 'OFF'
94101
llvm_linker: '-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld"'
95102
cmake_ver: 'default'
96-
# test without installing TBB
103+
# test without installing TBB
97104
- os: 'ubuntu-22.04'
98105
build_type: Release
99106
compiler: {c: gcc, cxx: g++}
@@ -124,52 +131,34 @@ jobs:
124131
disable_hwloc: 'OFF'
125132
link_hwloc_statically: 'ON'
126133
cmake_ver: 'default'
127-
runs-on: ${{matrix.os}}
128-
129134
steps:
130135
- name: Checkout
131136
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
132137
with:
133138
fetch-depth: 0
134139

135-
- name: Install apt packages
136-
run: |
137-
sudo apt-get update
138-
sudo apt-get install -y clang libnuma-dev lcov
139-
140140
- name: Install cmake (non-default version)
141141
if: matrix.cmake_ver != 'default'
142142
run: |
143-
sudo apt-get remove --purge -y cmake
143+
echo ${USERPASS} | sudo -Sk apt-get remove --purge -y cmake
144144
wget https://github.com/Kitware/CMake/releases/download/v${{matrix.cmake_ver}}/cmake-${{matrix.cmake_ver}}-Linux-x86_64.sh
145145
chmod +x cmake-${{matrix.cmake_ver}}-Linux-x86_64.sh
146-
sudo ./cmake-${{matrix.cmake_ver}}-Linux-x86_64.sh --skip-license --prefix=/usr/local
147-
148-
- name: Install hwloc
149-
if: matrix.disable_hwloc == 'OFF'
150-
run: |
151-
sudo apt-get install -y libhwloc-dev
146+
echo ${USERPASS} | sudo -Sk ./cmake-${{matrix.cmake_ver}}-Linux-x86_64.sh --skip-license --prefix=/usr/local
152147
153-
- name: Install TBB apt package
154-
if: matrix.install_tbb == 'ON'
148+
- name: Uninstall TBB apt package
149+
if: matrix.install_tbb == 'OFF'
155150
run: |
156-
sudo apt-get install -y libtbb-dev
151+
echo ${USERPASS} | sudo -Sk apt-get remove --purge -y libtbb-dev
157152
158153
- name: Install oneAPI basekit
159154
if: matrix.compiler.cxx == 'icpx'
155+
# Installing via script to avoid installing multi-line bash command by root
160156
run: |
161-
sudo apt-get install -y gpg-agent wget
162-
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
163-
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
164-
sudo apt-get update
165-
sudo apt-get install -y intel-oneapi-ippcp-devel intel-oneapi-ipp-devel intel-oneapi-common-oneapi-vars intel-oneapi-compiler-dpcpp-cpp
166-
167-
- name: Install g++-7
168-
if: matrix.compiler.cxx == 'g++-7'
169-
run: sudo apt-get install -y ${{matrix.compiler.cxx}}
157+
echo "${USERPASS}" | sudo -Sk ./.github/scripts/install_oneAPI.sh
170158
171159
- name: Get UMF version
172160
run: |
161+
git config --global --add safe.directory $GITHUB_WORKSPACE
173162
VERSION=$(git describe --tags --abbrev=0 | grep -oP '\d+\.\d+\.\d+')
174163
echo "UMF_VERSION=$VERSION" >> $GITHUB_ENV
175164

.github/workflows/reusable_fast.yml

Lines changed: 81 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,106 @@
1-
# Fast builds
1+
# Fast build linux part is working in dockers, Windows is not
22
name: FastBuild
33

44
on: workflow_call
55

66
permissions:
77
contents: read
8+
packages: read
89

910
env:
1011
BUILD_DIR : "${{github.workspace}}/build"
1112
INSTL_DIR : "${{github.workspace}}/install-dir"
1213

1314
jobs:
14-
FastBuild:
15-
name: Fast builds
16-
env:
17-
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+
name: Linux
17+
runs-on: ${{ github.repository_owner == 'oneapi-src' && 'intel-ubuntu-22.04' || 'ubuntu-22.04' }}
18+
container:
19+
image: ghcr.io/bb-ur/umf-${{ matrix.os }}:latest
20+
options: --user test_user --privileged
21+
volumes:
22+
- ${{ github.workspace }}:${{ github.workspace }}
1823
strategy:
1924
matrix:
2025
include:
21-
- os: windows-latest
26+
- os: 'ubuntu-22.04'
2227
build_tests: 'ON'
28+
extra_build_options: ' -DUMF_BUILD_BENCHMARKS=ON -DUMF_BUILD_BENCHMARKS_MT=ON'
2329
simple_cmake: 'OFF'
24-
# pure C build (Windows)
25-
- os: windows-latest
30+
# pure C build
31+
- os: 'ubuntu-22.04'
2632
# Tests' building is off for a pure C build
2733
build_tests: 'OFF'
34+
extra_build_options: '-DUMF_BUILD_BENCHMARKS=ON'
2835
simple_cmake: 'OFF'
29-
- os: ubuntu-latest
36+
# simplest CMake on Ubuntu 22.04, 24.04
37+
- os: 'ubuntu-22.04'
3038
build_tests: 'ON'
31-
# Windows doesn't recognize 'CMAKE_BUILD_TYPE', it uses '--config' param in build command
32-
extra_build_options: '-DCMAKE_BUILD_TYPE=Release -DUMF_BUILD_BENCHMARKS=ON -DUMF_BUILD_BENCHMARKS_MT=ON'
33-
simple_cmake: 'OFF'
34-
# pure C build (Linux)
35-
- os: ubuntu-latest
36-
# Windows doesn't recognize 'CMAKE_BUILD_TYPE', it uses '--config' param in build command
37-
# Tests' building is off for a pure C build
38-
build_tests: 'OFF'
39-
extra_build_options: '-DCMAKE_BUILD_TYPE=Release -DUMF_BUILD_BENCHMARKS=ON'
40-
simple_cmake: 'OFF'
41-
# simplest CMake on ubuntu-latest
42-
- os: ubuntu-latest
43-
build_tests: 'ON'
44-
extra_build_options: '-DCMAKE_BUILD_TYPE=Release'
4539
simple_cmake: 'ON'
46-
# simplest CMake ubuntu-22.04
47-
- os: ubuntu-22.04
40+
- os: ubuntu-24.04
4841
build_tests: 'ON'
49-
extra_build_options: '-DCMAKE_BUILD_TYPE=Release'
5042
simple_cmake: 'ON'
51-
runs-on: ${{ (matrix.os == 'ubuntu-latest' && github.repository_owner == 'oneapi-src') && 'intel-ubuntu-22.04' || matrix.os }}
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+
windows-build:
90+
name: Windows
91+
runs-on: windows-latest
92+
93+
env:
94+
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"
95+
strategy:
96+
matrix:
97+
include:
98+
- build_tests: 'ON'
99+
simple_cmake: 'OFF'
100+
- build_tests: 'OFF'
101+
simple_cmake: 'OFF'
102+
- build_tests: 'OFF'
103+
simple_cmake: 'ON'
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

Comments
 (0)