Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
b7457e0
Add version change
rgsl888prabhu Jul 1, 2025
2c83df0
Add workflow to build image
rgsl888prabhu Jul 1, 2025
49f4095
add docker folder and update yml
rgsl888prabhu Jul 1, 2025
369d079
Update dockerfile
rgsl888prabhu Jul 2, 2025
23a34eb
Update workflow
rgsl888prabhu Jul 2, 2025
3757392
Merge branch 'branch-25.08' into add_nightly_container_support
rgsl888prabhu Jul 2, 2025
48544e1
Add changes to accomdate image tag
rgsl888prabhu Jul 2, 2025
0efc4b7
Merge branch 'add_nightly_container_support' of github.com:rgsl888pra…
rgsl888prabhu Jul 2, 2025
3968704
Add multi arch script
rgsl888prabhu Jul 2, 2025
de1e24e
Add multi arch script
rgsl888prabhu Jul 2, 2025
6ddf3a7
enable nightly build
rgsl888prabhu Jul 3, 2025
812d751
test nightly
rgsl888prabhu Jul 3, 2025
be5f42c
fix
rgsl888prabhu Jul 3, 2025
e9dad7f
test workflow
rgsl888prabhu Jul 3, 2025
80bc564
test workflow
rgsl888prabhu Jul 3, 2025
bfdb580
reconfigure test
rgsl888prabhu Jul 3, 2025
b9b76f2
fix workflow type
rgsl888prabhu Jul 3, 2025
8770f90
name changes
rgsl888prabhu Jul 3, 2025
aa077e0
name update
rgsl888prabhu Jul 3, 2025
6df3fc6
fix workflow
rgsl888prabhu Jul 3, 2025
ab66e7b
fix errors
rgsl888prabhu Jul 3, 2025
9b8870b
fix errors
rgsl888prabhu Jul 3, 2025
a3b2106
fix error
rgsl888prabhu Jul 3, 2025
2c527d3
fix error[A
rgsl888prabhu Jul 3, 2025
9bb6ec5
fix error
rgsl888prabhu Jul 3, 2025
df5c2b8
fix error
rgsl888prabhu Jul 3, 2025
f55ba0a
fix error
rgsl888prabhu Jul 3, 2025
fb70698
fix error
rgsl888prabhu Jul 3, 2025
5109fe5
fix error
rgsl888prabhu Jul 3, 2025
a5548f8
fix
rgsl888prabhu Jul 3, 2025
b0aa963
fix image
rgsl888prabhu Jul 3, 2025
9a6b3eb
fix image
rgsl888prabhu Jul 3, 2025
ee88039
fix image
rgsl888prabhu Jul 3, 2025
cd28dc5
fix image
rgsl888prabhu Jul 3, 2025
caace75
fix image
rgsl888prabhu Jul 3, 2025
3dfaad3
fix image
rgsl888prabhu Jul 3, 2025
65655f2
fix image
rgsl888prabhu Jul 3, 2025
3dc77a7
create a context folder and setup context
rgsl888prabhu Jul 3, 2025
c750458
create a context folder and setup context
rgsl888prabhu Jul 3, 2025
c97b9be
fix context
rgsl888prabhu Jul 3, 2025
4dfdfb4
fix version
rgsl888prabhu Jul 3, 2025
55600a7
fix branch name quotes
rgsl888prabhu Jul 3, 2025
7749150
fix manifest
rgsl888prabhu Jul 3, 2025
1441318
fix manifest job
rgsl888prabhu Jul 3, 2025
92f3ec7
fix manifest
rgsl888prabhu Jul 7, 2025
272d12a
fix manifest
rgsl888prabhu Jul 7, 2025
fab26a4
fix manifest
rgsl888prabhu Jul 7, 2025
1ab9265
fix docker image names and manifest
rgsl888prabhu Jul 7, 2025
89c5f49
fix image
rgsl888prabhu Jul 7, 2025
623e7c6
fix image
rgsl888prabhu Jul 7, 2025
b26ce5d
fix image names
rgsl888prabhu Jul 7, 2025
8c94fed
fix image names
rgsl888prabhu Jul 7, 2025
67f6a4e
update workflows
rgsl888prabhu Jul 7, 2025
5f38cd8
update workflow
rgsl888prabhu Jul 7, 2025
ef09b4d
Add copyright
rgsl888prabhu Jul 7, 2025
6e60a2d
Add testing
rgsl888prabhu Jul 7, 2025
d7c9b1c
Testing container
rgsl888prabhu Jul 7, 2025
a41f9a3
update test yaml
rgsl888prabhu Jul 7, 2025
155310a
update test yaml
rgsl888prabhu Jul 7, 2025
b20b3bf
update test yaml
rgsl888prabhu Jul 7, 2025
0836421
update test yaml
rgsl888prabhu Jul 7, 2025
e48aa05
update test yaml
rgsl888prabhu Jul 7, 2025
589dfec
update test yaml
rgsl888prabhu Jul 7, 2025
efba520
update test yaml
rgsl888prabhu Jul 7, 2025
a73c809
update test yaml
rgsl888prabhu Jul 7, 2025
8ca1e5d
update test yaml
rgsl888prabhu Jul 7, 2025
ee0236e
update test yaml
rgsl888prabhu Jul 7, 2025
9034cf3
update test yaml
rgsl888prabhu Jul 7, 2025
8fcd63b
update test yaml
rgsl888prabhu Jul 7, 2025
de306f1
update test yaml
rgsl888prabhu Jul 8, 2025
d9a1243
update test yaml
rgsl888prabhu Jul 8, 2025
5744e79
update test yaml
rgsl888prabhu Jul 8, 2025
d97d8a8
update test yaml
rgsl888prabhu Jul 8, 2025
f965aa8
Add debug
rgsl888prabhu Jul 8, 2025
78b043e
Add debug
rgsl888prabhu Jul 8, 2025
95bc449
fix debug
rgsl888prabhu Jul 8, 2025
685eac5
debug
rgsl888prabhu Jul 8, 2025
4a54a31
debug
rgsl888prabhu Jul 8, 2025
e80e8a3
enable python path
rgsl888prabhu Jul 8, 2025
d040fc0
update workflow
rgsl888prabhu Jul 8, 2025
f189f59
update
rgsl888prabhu Jul 8, 2025
ba609c7
update
rgsl888prabhu Jul 8, 2025
9d2001d
python commit
rgsl888prabhu Jul 8, 2025
6ee65c3
change HOME
rgsl888prabhu Jul 8, 2025
a51a7f7
change HOME
rgsl888prabhu Jul 8, 2025
20744e8
utils
rgsl888prabhu Jul 8, 2025
3073554
update utils
rgsl888prabhu Jul 8, 2025
bd5a624
update utils
rgsl888prabhu Jul 8, 2025
cdf2e75
new changes
rgsl888prabhu Jul 8, 2025
bb89f2e
fix issues
rgsl888prabhu Jul 8, 2025
67db1aa
fix issues
rgsl888prabhu Jul 8, 2025
36ce08f
test all
rgsl888prabhu Jul 9, 2025
c444d90
fix cli test and remove exhaustive testing
rgsl888prabhu Jul 9, 2025
a158339
Add fix to testing
rgsl888prabhu Jul 9, 2025
2d552c9
enable all the tests
rgsl888prabhu Jul 9, 2025
a3742bc
update
rgsl888prabhu Jul 9, 2025
fe4be7f
update
rgsl888prabhu Jul 10, 2025
38f2177
Update
rgsl888prabhu Jul 10, 2025
9327151
change name
rgsl888prabhu Jul 10, 2025
edfd72b
test with complete workflow
rgsl888prabhu Jul 10, 2025
d36ffb1
fix issue
rgsl888prabhu Jul 10, 2025
0f0b797
fix testing and docker file
rgsl888prabhu Jul 10, 2025
db00b53
fix PR
rgsl888prabhu Jul 10, 2025
28096a9
fix style
rgsl888prabhu Jul 11, 2025
fee1a48
Merge github.com:nvidia/cuopt into add_nightly_container_support
rgsl888prabhu Jul 11, 2025
65234a9
remove debug and update README
rgsl888prabhu Jul 11, 2025
f0afd7e
remove stale files and update license header
rgsl888prabhu Jul 11, 2025
51f58b1
Add missing file
rgsl888prabhu Jul 11, 2025
07c6a68
Update license
rgsl888prabhu Jul 11, 2025
98887c1
fix style
rgsl888prabhu Jul 11, 2025
c234a70
remove debug
rgsl888prabhu Jul 11, 2025
5528353
fix style
rgsl888prabhu Jul 11, 2025
cc20c7f
Update docker to accept PYTHON_SHORT_VER arg
rgsl888prabhu Jul 14, 2025
9248e65
Address review comments
rgsl888prabhu Jul 15, 2025
51a4fad
test
rgsl888prabhu Jul 15, 2025
c8d3808
Add new line
rgsl888prabhu Jul 15, 2025
4530995
fix Docker file
rgsl888prabhu Jul 15, 2025
81e3c3b
fix gcc requirement
rgsl888prabhu Jul 15, 2025
757da9c
fix testing
rgsl888prabhu Jul 15, 2025
0949da0
revert cahnges to pr
rgsl888prabhu Jul 15, 2025
3f7d167
Merge branch 'branch-25.08' into add_nightly_container_support
rgsl888prabhu Jul 17, 2025
48f0c15
Merge github.com:nvidia/cuopt into add_nightly_container_support
rgsl888prabhu Jul 18, 2025
9f9a322
style
rgsl888prabhu Jul 18, 2025
454b6e7
fix style
rgsl888prabhu Jul 18, 2025
b1de01b
update
rgsl888prabhu Jul 21, 2025
898dffc
Merge branch 'branch-25.08' into add_nightly_container_support
rgsl888prabhu Jul 21, 2025
9d6a7f5
Polish and remove gcc at the end
rgsl888prabhu Jul 22, 2025
2fd0755
Merge branch 'add_nightly_container_support' of github.com:rgsl888pra…
rgsl888prabhu Jul 22, 2025
563871a
add third party license to container
rgsl888prabhu Jul 22, 2025
7219e46
remove unwated changes
rgsl888prabhu Jul 22, 2025
6d5e14b
accept matrix data as input in workflow
rgsl888prabhu Jul 24, 2025
303a73f
address review comments and testing
rgsl888prabhu Jul 24, 2025
f530e5f
add docker contex folder
rgsl888prabhu Jul 24, 2025
f1bdf17
move gcc purge down
rgsl888prabhu Jul 24, 2025
3d3c84d
revert testing
rgsl888prabhu Jul 24, 2025
1fe2e09
fix style
rgsl888prabhu Jul 24, 2025
25a7d1d
Merge branch 'branch-25.08' into add_nightly_container_support
rgsl888prabhu Jul 24, 2025
97512f1
Update test_image.sh
rgsl888prabhu Jul 24, 2025
0275741
address review comments
rgsl888prabhu Jul 25, 2025
e5f1248
Merge branch 'add_nightly_container_support' of github.com:rgsl888pra…
rgsl888prabhu Jul 25, 2025
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
29 changes: 9 additions & 20 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -207,23 +207,12 @@ jobs:
date: ${{ inputs.date }}
package-name: cuopt_sh_client
package-type: python
service-container:
if: inputs.build_type == 'nightly'
needs: [wheel-build-cuopt, wheel-build-cuopt-server]
runs-on: ubuntu-latest
steps:
- name: Checkout code repo
uses: actions/checkout@v3
with:
ref: ${{ inputs.sha }}
fetch-depth: 0 # unshallow fetch for setuptools-scm
persist-credentials: false
- name: build service
env:
GH_TOKEN: ${{ github.token }}
run: |
gh workflow run service_nightly.yaml \
-f branch=${{ inputs.branch }} \
-f sha=${{ inputs.sha }} \
-f date=${{ inputs.date }} \
-f build_type=${{ inputs.build_type }}
build-images:
needs: [wheel-publish-cuopt, wheel-publish-cuopt-server]
uses: ./.github/workflows/build_test_publish_images.yaml
secrets: inherit
with:
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
build_type: ${{ inputs.build_type || 'branch' }}
102 changes: 102 additions & 0 deletions .github/workflows/build_images.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Build and push image variant

on:
workflow_call:
inputs:
ARCHES:
required: true
type: string
CUDA_VER:
required: true
type: string
CUOPT_VER:
required: true
type: string
IMAGE_TAG_PREFIX:
required: true
type: string
LINUX_VER:
required: true
type: string
PYTHON_VER:
required: true
type: string

jobs:
build:
strategy:
matrix:
ARCH: ["${{ inputs.ARCHES }}"]
CUDA_VER: ["${{ inputs.CUDA_VER }}"]
PYTHON_VER: ["${{ inputs.PYTHON_VER }}"]
LINUX_VER: ["${{ inputs.LINUX_VER }}"]
fail-fast: false
runs-on: "linux-${{ matrix.ARCH }}-cpu4"
steps:
- name: Checkout code repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.CUOPT_DOCKERHUB_USERNAME }}
password: ${{ secrets.CUOPT_DOCKERHUB_TOKEN }}
- name: Copy License and Version files
run: |
cp ./LICENSE ./ci/docker/context/LICENSE
cp ./VERSION ./ci/docker/context/VERSION
cp ./thirdparty/THIRD_PARTY_LICENSES ./ci/docker/context/THIRD_PARTY_LICENSES
- name: Login to NGC
uses: docker/login-action@v3
with:
registry: "nvcr.io"
username: "$oauthtoken"
password: ${{ secrets.CUOPT_NGC_DOCKER_KEY }}
- name: Set up Docker Context for Buildx
id: buildx-context
run: |
docker context create builders
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
endpoint: ./ci/docker/context
- name: Trim CUDA and Python versions
id: trim
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: 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 }}
185 changes: 185 additions & 0 deletions .github/workflows/build_test_publish_images.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Build, Test and Publish cuopt images

on:
workflow_call:
inputs:
branch:
type: string
date:
type: string
sha:
type: string
build_type:
type: string
arch:
type: string
default: '["amd64", "arm64"]'
description: 'JSON array of architectures to build for'
cuda_ver:
type: string
default: '["12.8.0"]'
description: 'JSON array of CUDA versions to build for'
python_ver:
type: string
default: '["3.12.11"]'
description: 'JSON array of Python versions to build for'
linux_ver:
type: string
default: '["22.04"]'
description: 'JSON array of Linux versions to build for'


defaults:
run:
shell: bash

permissions:
actions: read
checks: none
contents: read
deployments: none
discussions: none
id-token: write
issues: none
packages: read
pages: none
pull-requests: read
repository-projects: none
security-events: none
statuses: none

jobs:
compute-matrix:
runs-on: ubuntu-latest
container:
image: rapidsai/ci-conda:25.08-latest
outputs:
MATRIX: ${{ steps.compute-matrix.outputs.MATRIX }}
CUOPT_VER: ${{ steps.compute-cuopt-ver.outputs.CUOPT_VER }}
IMAGE_TAG_PREFIX: ${{ steps.compute-cuopt-ver.outputs.IMAGE_TAG_PREFIX }}

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # unshallow fetch for setuptools-scm
persist-credentials: false

- name: Compute matrix
id: compute-matrix
run: |
MATRIX=$(jq -c '.' <<EOF
{
"arch": ${{ inputs.arch }},
"cuda_ver": ${{ inputs.cuda_ver }},
"python_ver": ${{ inputs.python_ver }},
"linux_ver": ${{ inputs.linux_ver }}
}
EOF
)
echo "MATRIX=$MATRIX" >> $GITHUB_OUTPUT

- name: Install gha-tools
run: |
mkdir -p /tmp/gha-tools
curl -s -L 'https://github.com/rapidsai/gha-tools/releases/latest/download/tools.tar.gz' | tar -xz -C /tmp/gha-tools
echo "/tmp/gha-tools" >> "${GITHUB_PATH}"

- name: Compute cuopt version
id: compute-cuopt-ver
run: |
ver=$(rapids-generate-version)
# Remove starting 0s from version 25.08.0a18 -> 25.8.0a18
CUOPT_VER=$(echo "$ver" | sed -E 's/\.0+([0-9])/\.\1/g')
echo "CUOPT_VER=$CUOPT_VER" >> $GITHUB_OUTPUT
if rapids-is-release-build; then
IMAGE_TAG_PREFIX="$CUOPT_VER"
else
IMAGE_TAG_PREFIX=$(echo "$CUOPT_VER" | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+)a.*/\1a/')
fi
echo "IMAGE_TAG_PREFIX=$IMAGE_TAG_PREFIX" >> $GITHUB_OUTPUT

build-images:
name: Build images
needs: compute-matrix
secrets: inherit
strategy:
matrix: ${{ fromJson(needs.compute-matrix.outputs.MATRIX) }}
uses: ./.github/workflows/build_images.yaml
with:
ARCHES: ${{ matrix.arch }}
CUDA_VER: ${{ matrix.cuda_ver }}
CUOPT_VER: ${{ needs.compute-matrix.outputs.CUOPT_VER }}
IMAGE_TAG_PREFIX: ${{ needs.compute-matrix.outputs.IMAGE_TAG_PREFIX }}
LINUX_VER: ${{ matrix.linux_ver }}
PYTHON_VER: ${{ matrix.python_ver }}

build-cuopt-multiarch-manifest:
name: Build cuopt multiarch manifest
needs: [build-images, compute-matrix]
strategy:
matrix:
CUDA_VER: ${{ fromJson(needs.compute-matrix.outputs.MATRIX).cuda_ver }}
PYTHON_VER: ${{ fromJson(needs.compute-matrix.outputs.MATRIX).python_ver }}
runs-on: ubuntu-latest
steps:
- name: Checkout code repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.CUOPT_DOCKERHUB_USERNAME }}
password: ${{ secrets.CUOPT_DOCKERHUB_TOKEN }}
- name: Login to NGC
uses: docker/login-action@v3
with:
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

test-images:
name: Test images
needs: [build-cuopt-multiarch-manifest, compute-matrix]
secrets: inherit
strategy:
matrix:
CUDA_VER: ${{ fromJson(needs.compute-matrix.outputs.MATRIX).cuda_ver }}
PYTHON_VER: ${{ fromJson(needs.compute-matrix.outputs.MATRIX).python_ver }}
ARCH: ${{ fromJson(needs.compute-matrix.outputs.MATRIX).arch }}
uses: ./.github/workflows/test_images.yaml
with:
ARCH: ${{ matrix.ARCH }}
CUDA_VER: ${{ matrix.CUDA_VER }}
PYTHON_VER: ${{ matrix.PYTHON_VER }}
IMAGE_TAG_PREFIX: ${{ needs.compute-matrix.outputs.IMAGE_TAG_PREFIX }}
Loading
Loading