Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 41 additions & 60 deletions .github/workflows/build-pull-request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,51 +54,36 @@ jobs:
strategy:
fail-fast: false
matrix:
include:
- target: release
os: ubuntu24.04
cuda_version: 13.2.0
optix_version: 9.1.0
geant4_version: 11.4.1
cmake_version: 4.3.1
- target: release
os: ubuntu24.04
cuda_version: 13.0.2
optix_version: 9.0.0
geant4_version: 11.4.1
cmake_version: 4.2.1
- target: release
os: ubuntu22.04
target: [release, develop]
config: &build_configs
- os: ubuntu22.04
cuda_version: 12.1.1
optix_version: 8.0.0
geant4_version: 11.3.2
cmake_version: 3.22.1
- target: develop
os: ubuntu24.04
cuda_version: 13.0.2
optix_version: 9.0.0
geant4_version: 11.4.1
cmake_version: 4.2.1
- target: develop
os: ubuntu24.04
- os: ubuntu24.04
cuda_version: 12.5.1
optix_version: 9.0.0
geant4_version: 11.4.1
cmake_version: 3.28.3
- target: develop
os: ubuntu22.04
cuda_version: 12.1.1
optix_version: 8.0.0
geant4_version: 11.3.2
cmake_version: 3.22.1
- os: ubuntu24.04
cuda_version: 13.0.3
optix_version: 9.0.0
geant4_version: 11.4.2
cmake_version: 4.2.1
- os: ubuntu26.04
cuda_version: 13.3.0
optix_version: 9.1.0
geant4_version: 11.4.2
cmake_version: 4.3.4

steps:
- name: Define environment variables
run: |
IMAGE_NAME=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')-buildcache
REF_SANITIZED=PR-${{ github.event.pull_request.number }}
BASE_VARIANT=cuda${{ matrix.cuda_version }}-base-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.cuda_version }}-${{ matrix.target }}-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BASE_VARIANT=cuda${{ matrix.config.cuda_version }}-base-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.config.cuda_version }}-${{ matrix.target }}-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
echo IMAGE_NAME=${IMAGE_NAME} >> $GITHUB_ENV
echo IMAGE_TAG=${REF_SANITIZED}-${BUILD_VARIANT} >> $GITHUB_ENV
echo BASE_CACHE_REF=${IMAGE_NAME}:${BASE_VARIANT} >> $GITHUB_ENV
Expand All @@ -125,17 +110,17 @@ jobs:
${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
target: ${{ matrix.target }}
build-args: |
OS=${{ matrix.os }}
CUDA_VERSION=${{ matrix.cuda_version }}
OPTIX_VERSION=${{ matrix.optix_version }}
GEANT4_VERSION=${{ matrix.geant4_version }}
CMAKE_VERSION=${{ matrix.cmake_version }}
OS=${{ matrix.config.os }}
CUDA_VERSION=${{ matrix.config.cuda_version }}
OPTIX_VERSION=${{ matrix.config.optix_version }}
GEANT4_VERSION=${{ matrix.config.geant4_version }}
CMAKE_VERSION=${{ matrix.config.cmake_version }}
cache-from: |
type=registry,ref=${{ env.BASE_CACHE_REF }}
type=registry,ref=${{ env.CACHE_REF }}
push: ${{ matrix.target == 'develop' && github.event.pull_request.head.repo.full_name == github.repository }}
push: ${{ github.event.pull_request.head.repo.full_name == github.repository }}

test-develop-image:
test-image:
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
needs: build-image
runs-on: [gpu]
Expand All @@ -145,30 +130,24 @@ jobs:

strategy:
fail-fast: false
matrix: &develop_matrix
include:
- os: ubuntu24.04
cuda_version: 13.0.2
optix_version: 9.0.0
geant4_version: 11.4.1
cmake_version: 4.2.1
- os: ubuntu24.04
cuda_version: 12.5.1
optix_version: 9.0.0
geant4_version: 11.4.1
cmake_version: 3.28.3
- os: ubuntu22.04
cuda_version: 12.1.1
optix_version: 8.0.0
geant4_version: 11.3.2
cmake_version: 3.22.1
matrix:
target: [release, develop]
config: *build_configs
exclude:
# The gpu runner driver does not support the ubuntu26.04/CUDA 13.3.0 image yet.
- config:
os: ubuntu26.04
cuda_version: 13.3.0
optix_version: 9.1.0
geant4_version: 11.4.2
cmake_version: 4.3.4

steps:
- name: Define environment variables
run: |
IMAGE_NAME=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')-buildcache
REF_SANITIZED=PR-${{ github.event.pull_request.number }}
BUILD_VARIANT=cuda${{ matrix.cuda_version }}-develop-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.config.cuda_version }}-${{ matrix.target }}-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
echo IMAGE_NAME=${IMAGE_NAME} >> $GITHUB_ENV
echo IMAGE_TAG=${REF_SANITIZED}-${BUILD_VARIANT} >> $GITHUB_ENV

Expand All @@ -179,7 +158,7 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Pull develop image
- name: Pull PR image
run: |
docker pull ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}

Expand All @@ -202,21 +181,23 @@ jobs:

cleanup-pr-images:
if: ${{ success() && github.event.pull_request.head.repo.full_name == github.repository }}
needs: test-develop-image
needs: test-image
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix: *develop_matrix
matrix:
target: [release, develop]
config: *build_configs

steps:
- name: Define environment variables
run: |
PACKAGE_NAME=$(echo ${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')-buildcache
REF_SANITIZED=PR-${{ github.event.pull_request.number }}
BUILD_VARIANT=cuda${{ matrix.cuda_version }}-develop-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.config.cuda_version }}-${{ matrix.target }}-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
echo PACKAGE_NAME=${PACKAGE_NAME} >> $GITHUB_ENV
echo IMAGE_TAG=${REF_SANITIZED}-${BUILD_VARIANT} >> $GITHUB_ENV

Expand Down
64 changes: 28 additions & 36 deletions .github/workflows/build-push.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ on:
push:
branches:
- main
- test

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name || github.event_name }}
cancel-in-progress: true

permissions:
contents: read
Expand All @@ -18,51 +21,40 @@ jobs:
strategy:
fail-fast: false
matrix:
include:
- target: release
os: ubuntu24.04
cuda_version: 13.2.0
target: [release, develop]
config:
- os: ubuntu26.04
cuda_version: 13.3.0
optix_version: 9.1.0
geant4_version: 11.4.1
cmake_version: 4.3.1
- target: release
os: ubuntu24.04
cuda_version: 13.0.2
optix_version: 9.0.0
geant4_version: 11.4.1
cmake_version: 4.2.1
- target: release
os: ubuntu22.04
cuda_version: 12.1.1
optix_version: 8.0.0
geant4_version: 11.3.2
cmake_version: 3.22.1
- target: develop
os: ubuntu24.04
cuda_version: 13.0.2
geant4_version: 11.4.2
cmake_version: 4.3.4
default_alias: false
- os: ubuntu24.04
cuda_version: 13.0.3
optix_version: 9.0.0
geant4_version: 11.4.1
geant4_version: 11.4.2
cmake_version: 4.2.1
- target: develop
os: ubuntu24.04
default_alias: true
- os: ubuntu24.04
cuda_version: 12.5.1
optix_version: 9.0.0
geant4_version: 11.4.1
cmake_version: 3.28.3
- target: develop
os: ubuntu22.04
default_alias: false
- os: ubuntu22.04
cuda_version: 12.1.1
optix_version: 8.0.0
geant4_version: 11.3.2
cmake_version: 3.22.1
default_alias: false

steps:
- name: Define environment variables
run: |
IMAGE_NAME=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
CACHE_IMAGE_NAME=${IMAGE_NAME}-buildcache
BASE_VARIANT=cuda${{ matrix.cuda_version }}-base-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.cuda_version }}-${{ matrix.target }}-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BASE_VARIANT=cuda${{ matrix.config.cuda_version }}-base-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.config.cuda_version }}-${{ matrix.target }}-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
echo IMAGE_NAME=${IMAGE_NAME} >> $GITHUB_ENV
echo IMAGE_TAG=${BUILD_VARIANT} >> $GITHUB_ENV
echo BASE_CACHE_REF=${CACHE_IMAGE_NAME}:${BASE_VARIANT} >> $GITHUB_ENV
Expand Down Expand Up @@ -90,18 +82,18 @@ jobs:
${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
target: ${{ matrix.target }}
build-args: |
OS=${{ matrix.os }}
CUDA_VERSION=${{ matrix.cuda_version }}
OPTIX_VERSION=${{ matrix.optix_version }}
GEANT4_VERSION=${{ matrix.geant4_version }}
CMAKE_VERSION=${{ matrix.cmake_version }}
OS=${{ matrix.config.os }}
CUDA_VERSION=${{ matrix.config.cuda_version }}
OPTIX_VERSION=${{ matrix.config.optix_version }}
GEANT4_VERSION=${{ matrix.config.geant4_version }}
CMAKE_VERSION=${{ matrix.config.cmake_version }}
cache-from: |
type=registry,ref=${{ env.BASE_CACHE_REF }}
type=registry,ref=${{ env.CACHE_REF }}
cache-to: type=registry,ref=${{ env.CACHE_REF }},mode=max

- name: Add devel alias tag for default CUDA
if: ${{ github.ref_name == 'main' && matrix.target == 'develop' && matrix.os == 'ubuntu24.04' && matrix.cuda_version == '13.0.2' && matrix.optix_version == '9.0.0' && matrix.geant4_version == '11.4.1' && matrix.cmake_version == '4.2.1' }}
- name: Add alias tag for default configuration
if: ${{ github.ref_name == 'main' && matrix.target == 'develop' && matrix.config.default_alias }}
run: |
docker buildx imagetools create -t ${{ env.IMAGE_NAME }}:develop ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}

Expand Down
37 changes: 23 additions & 14 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ on:
tags:
- '[0-9]*'

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

permissions:
contents: read
packages: write
Expand All @@ -16,22 +20,23 @@ jobs:

strategy:
matrix:
include:
- target: release
os: ubuntu24.04
cuda_version: 13.0.2
target: [release]
config:
- os: ubuntu24.04
cuda_version: 13.0.3
optix_version: 9.0.0
geant4_version: 11.4.1
geant4_version: 11.4.2
cmake_version: 4.2.1
default_alias: true

steps:
- name: Define environment variables
run: |
IMAGE_NAME=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
CACHE_IMAGE_NAME=${IMAGE_NAME}-buildcache
REF_SANITIZED=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9._-]/-/g')
BASE_VARIANT=cuda${{ matrix.cuda_version }}-base-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.cuda_version }}-${{ matrix.target }}-${{ matrix.os }}-optix${{ matrix.optix_version }}-geant4${{ matrix.geant4_version }}-cmake${{ matrix.cmake_version }}
BASE_VARIANT=cuda${{ matrix.config.cuda_version }}-base-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
BUILD_VARIANT=cuda${{ matrix.config.cuda_version }}-${{ matrix.target }}-${{ matrix.config.os }}-optix${{ matrix.config.optix_version }}-geant4${{ matrix.config.geant4_version }}-cmake${{ matrix.config.cmake_version }}
echo IMAGE_NAME=${IMAGE_NAME} >> $GITHUB_ENV
echo IMAGE_TAG=${REF_SANITIZED}-${BUILD_VARIANT} >> $GITHUB_ENV
echo IMAGE_TAG_SHORT=${REF_SANITIZED} >> $GITHUB_ENV
Expand All @@ -58,20 +63,24 @@ jobs:
push: true
tags: |
${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG_SHORT }}
${{ env.IMAGE_NAME }}:latest
target: ${{ matrix.target }}
build-args: |
OS=${{ matrix.os }}
CUDA_VERSION=${{ matrix.cuda_version }}
OPTIX_VERSION=${{ matrix.optix_version }}
GEANT4_VERSION=${{ matrix.geant4_version }}
CMAKE_VERSION=${{ matrix.cmake_version }}
OS=${{ matrix.config.os }}
CUDA_VERSION=${{ matrix.config.cuda_version }}
OPTIX_VERSION=${{ matrix.config.optix_version }}
GEANT4_VERSION=${{ matrix.config.geant4_version }}
CMAKE_VERSION=${{ matrix.config.cmake_version }}
cache-from: |
type=registry,ref=${{ env.BASE_CACHE_REF }}
type=registry,ref=${{ env.CACHE_REF }}
cache-to: type=registry,ref=${{ env.CACHE_REF }},mode=max

- name: Add alias tag for default configuration
if: ${{ matrix.target == 'release' && matrix.config.default_alias }}
run: |
docker buildx imagetools create -t ${{ env.IMAGE_NAME }}:latest ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
docker buildx imagetools create -t ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG_SHORT }} ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}

cleanup:
runs-on: ubuntu-latest
needs: release
Expand Down
11 changes: 8 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# syntax=docker/dockerfile:latest

ARG OS=ubuntu24.04
ARG CUDA_VERSION=13.0.2
ARG CUDA_VERSION=13.0.3
ARG OPTIX_VERSION=9.0.0
ARG GEANT4_VERSION=11.4.1
ARG GEANT4_VERSION=11.4.2
ARG CMAKE_VERSION=4.2.1
ARG PYTHON_VERSION=3.13
ARG SPACK_BUILDCACHE_MIRROR=oci://ghcr.io/bnlnpps/simphony-spack-buildcache
ARG SPACK_TARGET=x86_64_v2

Expand All @@ -13,6 +14,7 @@ FROM nvidia/cuda:${CUDA_VERSION}-devel-${OS} AS base
ARG OPTIX_VERSION
ARG GEANT4_VERSION
ARG CMAKE_VERSION
ARG PYTHON_VERSION
ARG CMAKE_BUILD_JOBS

ENV DEBIAN_FRONTEND=noninteractive
Expand Down Expand Up @@ -52,6 +54,9 @@ RUN mkdir -p /opt/optix && curl -sL https://github.com/NVIDIA/optix-dev/archive/

RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/usr/local/bin sh

ENV UV_PYTHON=${PYTHON_VERSION}
ENV UV_MANAGED_PYTHON=1

SHELL ["/bin/bash", "-l", "-c"]

# Set up non-interactive shells by sourcing all of the scripts in /etc/profile.d/
Expand Down Expand Up @@ -82,7 +87,7 @@ WORKDIR $SIMPHONY_HOME
# Install Python dependencies
COPY pyproject.toml uv.lock $SIMPHONY_HOME/
COPY optiphy $SIMPHONY_HOME/optiphy
RUN uv sync
RUN uv sync --python "${PYTHON_VERSION}" --managed-python


FROM base AS release
Expand Down
Loading
Loading