Skip to content

Commit e9b5a8e

Browse files
authored
[CI] Verify driver in pre-commit on config change (#5757)
When `dependency.json` file is updated, use an empty container and install drivers manually, using the version from the updated config. This way we can test new driver before committing the updated driver version.
1 parent 8471ff3 commit e9b5a8e

File tree

3 files changed

+53
-2
lines changed

3 files changed

+53
-2
lines changed

.github/workflows/sycl_linux_build_and_test.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,13 @@ jobs:
172172
outputs:
173173
lts: ${{ steps.work.outputs.lts }}
174174
steps:
175-
- name: Download scripts
175+
- name: Download scripts and configs
176176
run: |
177177
wget raw.githubusercontent.com/intel/llvm/${{ github.sha }}/devops/scripts/generate_test_matrix.js
178178
wget raw.githubusercontent.com/intel/llvm/${{ github.sha }}/devops/test_configs.json
179+
wget raw.githubusercontent.com/intel/llvm/sycl/devops/dependencies.json
180+
mv dependencies.json dependencies.sycl.json
181+
wget raw.githubusercontent.com/intel/llvm/${{ github.sha }}/devops/dependencies.json
179182
- id: work
180183
uses: actions/github-script@v6
181184
name: Generate matrix
@@ -196,6 +199,7 @@ jobs:
196199
include: ${{ fromJSON(needs.resolve_matrix.outputs.lts) }}
197200
name: ${{ matrix.name }}
198201
runs-on: ${{ matrix.runs-on }}
202+
env: ${{ matrix.env }}
199203
container:
200204
image: ${{ matrix.image }}
201205
options: ${{ matrix.container_options }}
@@ -208,6 +212,15 @@ jobs:
208212
- run: cp -r /actions .
209213
- name: Register cleanup after job is finished
210214
uses: ./actions/cleanup
215+
- name: Install drivers
216+
if: env.compute_runtime_tag != ''
217+
run: |
218+
if [ -e /opt/install_drivers.sh ]; then
219+
# TODO pack this script into container
220+
wget raw.githubusercontent.com/intel/llvm/${{ github.sha }}/devops/scripts/get_release.py
221+
sudo mv get_release.py /opt/
222+
sudo -E /opt/install_drivers.sh --all
223+
fi
211224
# FIXME cached_checkout fails here, but works everywhere else
212225
- uses: actions/checkout@v2
213226
with:

devops/scripts/generate_test_matrix.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,45 @@ module.exports = ({core, process}) => {
44
if (err) {
55
console.log(`Error reading file from disk: ${err}`);
66
} else {
7+
const driverNew =
8+
JSON.parse(fs.readFileSync('./dependencies.json', 'utf8'));
9+
const driverOld =
10+
JSON.parse(fs.readFileSync('./dependencies.sycl.json', 'utf8'));
711
const testConfigs = JSON.parse(data);
812
const inputs = JSON.parse(process.env.GHA_INPUTS);
13+
const needsDrivers =
14+
driverNew["linux"]["compute_runtime"]["version"] !==
15+
driverOld["linux"]["compute_runtime"]["version"] ||
16+
driverNew["linux"]["igc"]["version"] !==
17+
driverOld["linux"]["igc"]["version"] ||
18+
driverNew["linux"]["cm"]["version"] !==
19+
driverOld["linux"]["cm"]["version"] ||
20+
driverNew["linux"]["tbb"]["version"] !==
21+
driverOld["linux"]["tbb"]["version"] ||
22+
driverNew["linux"]["oclcpu"]["version"] !==
23+
driverOld["linux"]["oclcpu"]["version"] ||
24+
driverNew["linux"]["fpgaemu"]["version"] !==
25+
driverOld["linux"]["fpgaemu"]["version"];
926

1027
const ltsConfigs = inputs.lts_config.split(';');
1128

1229
const enabledLTSConfigs = [];
1330

1431
testConfigs.lts.forEach(v => {
1532
if (ltsConfigs.includes(v.config)) {
33+
if (needsDrivers) {
34+
v["env"] = {
35+
"compute_runtime_tag" :
36+
driverNew["linux"]["compute_runtime"]["github_tag"],
37+
"igc_tag" : driverNew["linux"]["igc"]["github_tag"],
38+
"cm_tag" : driverNew["linux"]["cm"]["github_tag"],
39+
"tbb_tag" : driverNew["linux"]["tbb"]["github_tag"],
40+
"cpu_tag" : driverNew["linux"]["oclcpu"]["github_tag"],
41+
"fpgaemu_tag" : driverNew["linux"]["fpgaemu"]["github_tag"],
42+
};
43+
} else {
44+
v["env"] = {};
45+
}
1646
enabledLTSConfigs.push(v);
1747
}
1848
});
@@ -23,6 +53,11 @@ module.exports = ({core, process}) => {
2353
for (let [key, value] of Object.entries(inputs)) {
2454
ltsString = ltsString.replaceAll("${{ inputs." + key + " }}", value);
2555
}
56+
if (needsDrivers) {
57+
ltsString = ltsString.replaceAll(
58+
"ghcr.io/intel/llvm/ubuntu2004_intel_drivers:latest",
59+
"ghcr.io/intel/llvm/ubuntu2004_base:latest");
60+
}
2661

2762
core.setOutput('lts', ltsString);
2863
}

devops/scripts/install_drivers.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ fi;
2121

2222
InstallTBB () {
2323
if [ "$TBB_INSTALLED" = false ]; then
24+
mkdir -p $INSTALL_LOCATION
2425
cd $INSTALL_LOCATION
2526
echo "Installing TBB..."
2627
echo "TBB version $TBB_TAG"
@@ -54,6 +55,7 @@ InstallIGFX () {
5455
InstallCPURT () {
5556
echo "Installing Intel OpenCL CPU Runtime..."
5657
echo "CPU Runtime version $CPU_TAG"
58+
mkdir -p $INSTALL_LOCATION
5759
cd $INSTALL_LOCATION
5860
if [ -d "$INSTALL_LOCATION/oclcpu" ]; then
5961
echo "$INSTALL_LOCATION/oclcpu exists and will be removed!"
@@ -73,12 +75,13 @@ InstallCPURT () {
7375
InstallFPGAEmu () {
7476
echo "Installing Intel FPGA Fast Emulator..."
7577
echo "FPGA Emulator version $FPGA_TAG"
78+
mkdir -p $INSTALL_LOCATION
7679
cd $INSTALL_LOCATION
7780
if [ -d "$INSTALL_LOCATION/fpgaemu" ]; then
7881
echo "$INSTALL_LOCATION/fpgaemu exists and will be removed!"
7982
rm -Rf $INSTALL_LOCATION/oclcpu;
8083
fi
81-
python3 /get_release.py intel/llvm $FPGA_TAG \
84+
python3 $LOCATION/get_release.py intel/llvm $FPGA_TAG \
8285
| grep -E ".*fpgaemu.*tar.gz" \
8386
| wget -qi - && \
8487
mkdir fpgaemu && tar -xf *.tar.gz -C fpgaemu && rm *.tar.gz

0 commit comments

Comments
 (0)