Skip to content

[CI] First build Base and Build images, then Intel Drivers #1296

[CI] First build Base and Build images, then Intel Drivers

[CI] First build Base and Build images, then Intel Drivers #1296

name: CI Containers
on:
workflow_dispatch:
schedule:
# Every 1st and 15th day of month
- cron: '0 0 1,15 * *'
push:
branches:
- sycl
paths:
- 'devops/actions/build_container/**'
- 'devops/containers/**'
- 'devops/dependencies.json'
- 'devops/scripts/install_drivers.sh'
- 'devops/scripts/install_build_tools.sh'
- '.github/workflows/sycl-containers.yaml'
pull_request:
paths:
- 'devops/actions/build_container/**'
- 'devops/containers/**'
- 'devops/dependencies.json'
- 'devops/scripts/install_drivers.sh'
- 'devops/scripts/install_build_tools.sh'
- '.github/workflows/sycl-containers.yaml'
permissions: read-all
jobs:
# First build "Base" and "Build" images
build_and_push_non_intel_images:
if: github.repository == 'intel/llvm'
name: "Containers"
runs-on: ubuntu-latest
permissions:
packages: write
strategy:
matrix:
include:
- name: Base Ubuntu 22.04 Docker image
file: ubuntu2204_base
tag: latest
build_args: ""
- name: Base Ubuntu 24.04 Docker image
file: ubuntu2404_base
tag: latest
build_args: ""
- name: Build Ubuntu 22.04 Docker image
file: ubuntu2204_build
tag: latest
build_args: ""
- name: Build Ubuntu 24.04 Docker image
file: ubuntu2404_build
tag: latest
build_args: ""
steps:
# Cleanup runner before building containers, as sometimes it
# runs out of space during image build.
- name: Cleanup runner
run: |
echo "Available space before:"
df -hT
rm -rf /opt/hostedtoolcache
rm -rf /usr/share/dotnet/
rm -rf /usr/share/swift
rm -rf /usr/local/graalvm/
sudo rm -rf /usr/local/share/powershell
sudo rm -rf /usr/local/share/chromium
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/local/lib/node_modules
echo "Available space after:"
df -hT
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 2
- name: Build and Push Container
uses: ./devops/actions/build_container
with:
push: ${{ github.event_name != 'pull_request' }}
file: ${{ matrix.file }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
tags: |
ghcr.io/${{ github.repository }}/${{ matrix.file }}:${{ matrix.tag }}-${{ github.sha }}
ghcr.io/${{ github.repository }}/${{ matrix.file }}:${{ matrix.tag }}
build-args: ${{ matrix.build_args }}
# Then build "Intel Drivers" images that depend on previous images.
# Note: Building these images on PR means using old "Base" and "Build" images,
# as the ones above were not yet pushed.
build_and_push_intel_images:
needs: build_and_push_non_intel_images
name: "Containers"
runs-on: ubuntu-latest
permissions:
packages: write
strategy:
matrix:
include:
- name: Intel Drivers Ubuntu 22.04 Docker image
file: ubuntu2204_intel_drivers
tag: latest
build_args: ""
- name: Intel Drivers Ubuntu 24.04 Docker image
file: ubuntu2404_intel_drivers
tag: latest
build_args: ""
- name: Build + Intel Drivers Ubuntu 22.04 Docker image
file: ubuntu2204_intel_drivers
tag: alldeps
build_args: |
base_image=ghcr.io/intel/llvm/ubuntu2204_build
base_tag=latest
- name: Build + Intel Drivers Ubuntu 24.04 Docker image
file: ubuntu2404_intel_drivers
tag: alldeps
build_args: |
base_image=ghcr.io/intel/llvm/ubuntu2404_build
base_tag=latest
steps:
# Cleanup runner before building containers, as sometimes it
# runs out of space during image build.
- name: Cleanup runner
run: |
echo "Available space before:"
df -hT
rm -rf /opt/hostedtoolcache
rm -rf /usr/share/dotnet/
rm -rf /usr/share/swift
rm -rf /usr/local/graalvm/
sudo rm -rf /usr/local/share/powershell
sudo rm -rf /usr/local/share/chromium
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/local/lib/node_modules
echo "Available space after:"
df -hT
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 2
- name: Build and Push Container
uses: ./devops/actions/build_container
with:
push: ${{ github.event_name != 'pull_request' }}
file: ${{ matrix.file }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
tags: |
ghcr.io/${{ github.repository }}/${{ matrix.file }}:${{ matrix.tag }}-${{ github.sha }}
ghcr.io/${{ github.repository }}/${{ matrix.file }}:${{ matrix.tag }}
build-args: ${{ matrix.build_args }}