Skip to content
Closed
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
69 changes: 55 additions & 14 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,41 @@ on:
workflow_dispatch:
inputs:
branch:
description: |
branch: git branch the workflow run targets.
Required even when 'sha' is provided because it is also used for organizing artifacts.
required: true
type: string
date:
description: "date: Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds"
required: true
type: string
sha:
description: "sha: full git commit SHA to check out"
required: true
type: string
build_type:
description: "build_type: one of [branch, nightly, pull-request]"
type: string
default: nightly
workflow_call:
inputs:
branch:
description: |
branch: git branch the workflow run targets.
Required even when 'sha' is provided because it is also used for organizing artifacts.
required: true
type: string
date:
description: "date: Date (YYYY-MM-DD) this run is for. Used to organize artifacts produced by nightly builds"
required: true
type: string
sha:
description: "sha: full git commit SHA to check out"
required: true
type: string
build_type:
description: "build_type: one of [branch, nightly, pull-request]"
type: string
default: nightly

Expand All @@ -42,36 +68,40 @@ concurrency:

jobs:
cpp-build:
name: cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
script: ci/build_cpp.sh
python-build:
name: python-build
needs: [cpp-build]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
script: ci/build_python.sh
upload-conda:
name: upload-conda
needs: [cpp-build, python-build]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
wheel-build-cuopt-mps-parser:
name: wheel-build-cuopt-mps-parser
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -84,9 +114,10 @@ jobs:
# need 1 build per Python version and arch (but CUDA version doesn't matter so choose the latest)
matrix_filter: 'group_by([.ARCH, (.PY_VER |split(".") | map(tonumber))])|map(max_by([(.CUDA_VER|split(".")|map(tonumber))]))'
wheel-publish-cuopt-mps-parser:
name: wheel-publish-cuopt-mps-parser
needs: wheel-build-cuopt-mps-parser
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -95,9 +126,10 @@ jobs:
package-name: cuopt_mps_parser
package-type: python
wheel-build-libcuopt:
name: wheel-build-libcuopt
needs: wheel-build-cuopt-mps-parser
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -108,9 +140,10 @@ jobs:
package-type: cpp
matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber)))
wheel-publish-libcuopt:
name: wheel-publish-libcuopt
needs: wheel-build-libcuopt
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -119,9 +152,10 @@ jobs:
package-name: libcuopt
package-type: cpp
wheel-build-cuopt:
name: wheel-build-cuopt
needs: [wheel-build-cuopt-mps-parser, wheel-build-libcuopt]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -131,9 +165,10 @@ jobs:
package-name: cuopt
package-type: python
wheel-publish-cuopt:
name: wheel-publish-cuopt
needs: wheel-build-cuopt
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -142,9 +177,10 @@ jobs:
package-name: cuopt
package-type: python
wheel-build-cuopt-server:
name: wheel-build-cuopt-server
needs: wheel-build-cuopt
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -154,9 +190,10 @@ jobs:
package-name: cuopt_server
package-type: python
wheel-publish-cuopt-server:
name: wheel-publish-cuopt-server
needs: wheel-build-cuopt-server
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -165,9 +202,10 @@ jobs:
package-name: cuopt_server
package-type: python
docs-build:
name: docs-build
needs: [python-build]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
node_type: "gpu-l4-latest-1"
Expand All @@ -180,9 +218,10 @@ jobs:
container_image: "rapidsai/ci-conda:25.10-latest"
script: "ci/build_docs.sh"
wheel-build-cuopt-sh-client:
name: wheel-build-cuopt-sh-client
needs: wheel-build-cuopt
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -195,9 +234,10 @@ jobs:
# only need 1 build (noarch package): this selects amd64, oldest-supported Python, latest-supported CUDA
matrix_filter: '[map(select(.ARCH == "amd64")) | min_by((.PY_VER | split(".") | map(tonumber)), (.CUDA_VER | split(".") | map(-tonumber)))]'
wheel-publish-cuopt-sh-client:
name: wheel-publish-cuopt-sh-client
needs: wheel-build-cuopt-sh-client
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuopt-testing
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
Expand All @@ -206,6 +246,7 @@ jobs:
package-name: cuopt_sh_client
package-type: python
build-images:
name: build-images
needs: [wheel-publish-cuopt, wheel-publish-cuopt-server]
uses: ./.github/workflows/build_test_publish_images.yaml
secrets: inherit
Expand Down
35 changes: 18 additions & 17 deletions .github/workflows/build_images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ jobs:
PYTHON_VER: ["${{ inputs.PYTHON_VER }}"]
LINUX_VER: ["${{ inputs.LINUX_VER }}"]
fail-fast: false
name: ${{ matrix.CUDA_VER }}, ${{ matrix.PYTHON_VER }}, ${{ matrix.ARCH }}, ${{ matrix.LINUX_VER }}
runs-on: "linux-${{ matrix.ARCH }}-cpu4"
steps:
- name: Checkout code repo
Expand Down Expand Up @@ -90,21 +91,21 @@ jobs:
run: |
echo "CUDA_SHORT=$(echo '${{ inputs.CUDA_VER }}' | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_OUTPUT
echo "PYTHON_SHORT=$(echo '${{ inputs.PYTHON_VER }}' | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_OUTPUT
- name: Build image and push to DockerHub and NGC
uses: docker/build-push-action@v6
with:
context: ./ci/docker/context
file: ./ci/docker/Dockerfile
push: true
pull: true
build-args: |
CUDA_VER=${{ inputs.CUDA_VER }}
PYTHON_SHORT_VER=${{ steps.trim.outputs.PYTHON_SHORT }}
CUOPT_VER=${{ inputs.CUOPT_VER }}
LINUX_VER=${{ inputs.LINUX_VER }}
tags: nvidia/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }}
# - name: Build image and push to DockerHub and NGC
# uses: docker/build-push-action@v6
# with:
# context: ./ci/docker/context
# file: ./ci/docker/Dockerfile
# push: true
# pull: true
# build-args: |
# CUDA_VER=${{ inputs.CUDA_VER }}
# PYTHON_SHORT_VER=${{ steps.trim.outputs.PYTHON_SHORT }}
# CUOPT_VER=${{ inputs.CUOPT_VER }}
# LINUX_VER=${{ inputs.LINUX_VER }}
# tags: nvidia/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }}

- name: Push image to NGC
run: |
docker tag nvidia/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }} nvcr.io/nvstaging/nvaie/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }}
docker push nvcr.io/nvstaging/nvaie/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }}
# - name: Push image to NGC
# run: |
# docker tag nvidia/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }} nvcr.io/nvstaging/nvaie/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }}
# docker push nvcr.io/nvstaging/nvaie/cuopt:${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ steps.trim.outputs.CUDA_SHORT }}-py${{ steps.trim.outputs.PYTHON_SHORT }}-${{ matrix.ARCH }}
31 changes: 17 additions & 14 deletions .github/workflows/build_test_publish_images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ permissions:

jobs:
compute-matrix:
# Setting 'name' here helps differentiate jobs in the GitHub UI,
# especially when this workflow is >=2 levels deep (e.g. called by a workflow called by another workflow).
name: build-test-publish-images (compute-matrix)
runs-on: ubuntu-latest
container:
image: rapidsai/ci-conda:25.10-latest
Expand Down Expand Up @@ -156,20 +159,20 @@ jobs:
registry: "nvcr.io"
username: "$oauthtoken"
password: ${{ secrets.CUOPT_NGC_DOCKER_KEY }}
- name: Trim CUDA and Python versions
id: trim
run: |
echo "CUDA_SHORT=$(echo '${{ matrix.CUDA_VER }}' | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_OUTPUT
echo "PYTHON_SHORT=$(echo '${{ matrix.PYTHON_VER }}' | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_OUTPUT
- name: Create multiarch manifest
shell: bash
env:
CUOPT_VER: ${{ needs.compute-matrix.outputs.CUOPT_VER }}
CUDA_SHORT: ${{ steps.trim.outputs.CUDA_SHORT }}
PYTHON_SHORT: ${{ steps.trim.outputs.PYTHON_SHORT }}
IMAGE_TAG_PREFIX: ${{ needs.compute-matrix.outputs.IMAGE_TAG_PREFIX }}
BUILD_TYPE: ${{ inputs.build_type }}
run: bash ci/docker/create_multiarch_manifest.sh
# - name: Trim CUDA and Python versions
# id: trim
# run: |
# echo "CUDA_SHORT=$(echo '${{ matrix.CUDA_VER }}' | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_OUTPUT
# echo "PYTHON_SHORT=$(echo '${{ matrix.PYTHON_VER }}' | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_OUTPUT
# - name: Create multiarch manifest
# shell: bash
# env:
# CUOPT_VER: ${{ needs.compute-matrix.outputs.CUOPT_VER }}
# CUDA_SHORT: ${{ steps.trim.outputs.CUDA_SHORT }}
# PYTHON_SHORT: ${{ steps.trim.outputs.PYTHON_SHORT }}
# IMAGE_TAG_PREFIX: ${{ needs.compute-matrix.outputs.IMAGE_TAG_PREFIX }}
# BUILD_TYPE: ${{ inputs.build_type }}
# run: bash ci/docker/create_multiarch_manifest.sh

test-images:
name: Test images
Expand Down
Loading
Loading