Skip to content

Commit 19a6ead

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 19a6ead

File tree

4 files changed

+115
-64
lines changed

4 files changed

+115
-64
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: 19 additions & 25 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,39 @@ 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
146+
echo ${USERPASS} | sudo -Sk ./cmake-${{matrix.cmake_ver}}-Linux-x86_64.sh --skip-license --prefix=/usr/local
147147
148-
- name: Install hwloc
149-
if: matrix.disable_hwloc == 'OFF'
148+
- name: Uninstall hwloc
149+
if: matrix.disable_hwloc == 'ON'
150150
run: |
151-
sudo apt-get install -y libhwloc-dev
151+
echo ${USERPASS} | sudo -Sk apt-get remove --purge -y libhwloc-dev
152152
153-
- name: Install TBB apt package
154-
if: matrix.install_tbb == 'ON'
153+
- name: Uninstall TBB apt package
154+
if: matrix.install_tbb == 'OFF'
155155
run: |
156-
sudo apt-get install -y libtbb-dev
156+
echo ${USERPASS} | sudo -Sk apt-get remove --purge -y libtbb-dev
157157
158158
- name: Install oneAPI basekit
159159
if: matrix.compiler.cxx == 'icpx'
160+
# Installing via script to avoid installing multi-line bash command by root
160161
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}}
162+
echo "${USERPASS}" | sudo -Sk ./.github/scripts/install_oneAPI.sh
170163
171164
- name: Get UMF version
172165
run: |
166+
git config --global --add safe.directory $GITHUB_WORKSPACE
173167
VERSION=$(git describe --tags --abbrev=0 | grep -oP '\d+\.\d+\.\d+')
174168
echo "UMF_VERSION=$VERSION" >> $GITHUB_ENV
175169

.github/workflows/reusable_fast.yml

Lines changed: 82 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,107 @@
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+
# TODO: use dockers
90+
windows-build:
91+
name: Windows
92+
runs-on: windows-latest
93+
94+
env:
95+
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"
96+
strategy:
97+
matrix:
98+
include:
99+
- build_tests: 'ON'
100+
simple_cmake: 'OFF'
101+
- build_tests: 'OFF'
102+
simple_cmake: 'OFF'
103+
- build_tests: 'OFF'
104+
simple_cmake: 'ON'
52105

53106
steps:
54107
- name: Checkout repository
@@ -57,24 +110,16 @@ jobs:
57110
fetch-depth: 0
58111

59112
- name: Initialize vcpkg
60-
if: matrix.os == 'windows-latest'
61113
uses: lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5
62114
with:
63115
vcpkgGitCommitId: ea2a964f9303270322cf3f2d51c265ba146c422d # 1.04.2025
64116
vcpkgDirectory: ${{env.BUILD_DIR}}/vcpkg
65117
vcpkgJsonGlob: '**/vcpkg.json'
66118

67-
- name: Install dependencies (windows-latest)
68-
if: matrix.os == 'windows-latest'
119+
- name: Install dependencies
69120
run: vcpkg install --triplet x64-windows
70121
shell: pwsh # Specifies PowerShell as the shell for running the script.
71122

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-
78123
- name: Configure CMake
79124
if: matrix.simple_cmake == 'OFF'
80125
run: >
@@ -91,17 +136,16 @@ jobs:
91136
-DUMF_BUILD_CUDA_PROVIDER=ON
92137
-DUMF_TESTS_FAIL_ON_SKIP=ON
93138
-DUMF_BUILD_SHARED_LIBRARY=ON
94-
${{matrix.extra_build_options}}
95139
96140
- name: Configure CMake (simple)
97141
if: matrix.simple_cmake == 'ON'
98142
run: >
99143
cmake
100144
-B ${{env.BUILD_DIR}}
101145
-DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}"
146+
-DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}"
102147
-DUMF_BUILD_SHARED_LIBRARY=ON
103148
-DUMF_TESTS_FAIL_ON_SKIP=ON
104-
${{matrix.extra_build_options}}
105149
106150
- name: Build
107151
run: cmake --build ${{env.BUILD_DIR}} --config Release -j
@@ -118,7 +162,6 @@ jobs:
118162
# TODO: We could add some script to verify metadata of dll's (selected fields, perhaps)
119163
# ref. https://superuser.com/questions/381276/what-are-some-nice-command-line-ways-to-inspect-dll-exe-details
120164
- name: Print metadata of our dll's
121-
if: matrix.os == 'windows-latest'
122165
run: |
123166
get-command ${{github.workspace}}/build/bin/Release/umf.dll | format-list
124167
get-command ${{github.workspace}}/build/src/proxy_lib/Release/umf_proxy.dll | format-list

0 commit comments

Comments
 (0)