diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 7b5f430df..80a699271 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -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 @@ -42,8 +68,9 @@ 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 }} @@ -51,9 +78,10 @@ jobs: 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 }} @@ -61,17 +89,19 @@ jobs: 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 }} @@ -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 }} @@ -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 }} @@ -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 }} @@ -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 }} @@ -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 }} @@ -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 }} @@ -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 }} @@ -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" @@ -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 }} @@ -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 }} @@ -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 diff --git a/.github/workflows/build_images.yaml b/.github/workflows/build_images.yaml index ee1bcbe4c..8c455ec59 100644 --- a/.github/workflows/build_images.yaml +++ b/.github/workflows/build_images.yaml @@ -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 @@ -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 }} diff --git a/.github/workflows/build_test_publish_images.yaml b/.github/workflows/build_test_publish_images.yaml index 5f107cc57..9568b8df7 100644 --- a/.github/workflows/build_test_publish_images.yaml +++ b/.github/workflows/build_test_publish_images.yaml @@ -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 @@ -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 diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index 2feece10e..ac1323507 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -5,73 +5,56 @@ on: schedule: - cron: "0 5 * * *" # 5am UTC / 1am EST - jobs: - trigger-build: + compute-matrix: runs-on: ubuntu-latest - strategy: - matrix: - include: - - cuopt_version: "25.10" + outputs: + DATE: ${{ steps.compute-matrix.outputs.DATE }} + MATRIX: ${{ steps.compute-matrix.outputs.MATRIX }} steps: - - uses: actions/checkout@v4 - - name: Trigger Pipeline - env: - GH_TOKEN: ${{ github.token }} + - name: compute matrix + id: compute-matrix + shell: bash run: | - export CUOPT_BRANCH="branch-${{ matrix.cuopt_version }}" - export DATE=$(date +%F) - export SHA=$(gh api -q '.commit.sha' "repos/nvidia/cuopt/branches/${CUOPT_BRANCH}") - - gh workflow run build.yaml \ - -f branch="${CUOPT_BRANCH}" \ - -f sha="${SHA}" \ - -f date="${DATE}" \ - -f build_type=nightly - - # Wait a short bit for the workflow to register (optional) - sleep 3 - - # Get the latest run ID for this workflow on this branch - RUN_ID=$(gh run list --workflow=build.yaml --branch="${CUOPT_BRANCH}" --json databaseId --limit 1 | jq -r '.[0].databaseId') - - STATUS=$(gh run view $RUN_ID --json status,conclusion --jq '.status') - CONCLUSION=$(gh run view $RUN_ID --json status,conclusion --jq '.conclusion') - - while [[ "$STATUS" != "completed" || "$CONCLUSION" == "null" ]]; do - echo "Status: $STATUS, Conclusion: $CONCLUSION — waiting 10 seconds..." - sleep 10 - STATUS=$(gh run view $RUN_ID --json status,conclusion --jq '.status') - CONCLUSION=$(gh run view $RUN_ID --json status,conclusion --jq '.conclusion') - done - - echo "Workflow run finished with conclusion: $CONCLUSION" - - if [[ "$CONCLUSION" != "success" ]]; then - echo "Build did not succeed" - exit 1 - fi - - - trigger-test: - runs-on: ubuntu-latest - needs: trigger-build + # add more list items here to run nightlies for more branches + export CI_MATRIX=" + - branch: 'branch-25.10' + sha: "\'$(git ls-remote https://github.com/${{ github.repository }}.git refs/heads/branch-25.10 | awk '{print $1}')\'" + " + MATRIX="$( + yq -n --indent 0 -o json 'env(CI_MATRIX)' \ + | jq -c '{include: .}' + )" + + echo "MATRIX=${MATRIX}" | tee --append "${GITHUB_OUTPUT}" + echo "DATE=$(date +%F)" | tee --append "${GITHUB_OUTPUT}" + build: + name: build (${{ matrix.branch }}) + needs: [compute-matrix] + secrets: inherit strategy: - matrix: - include: - - cuopt_version: "25.10" - steps: - - uses: actions/checkout@v4 - - name: Trigger Test - env: - GH_TOKEN: ${{ github.token }} - run: | - export CUOPT_BRANCH="branch-${{ matrix.cuopt_version }}" - export DATE=$(date +%F) - export SHA=$(gh api -q '.commit.sha' "repos/nvidia/cuopt/branches/${CUOPT_BRANCH}") - - gh workflow run test.yaml \ - -f branch=${CUOPT_BRANCH} \ - -f sha=${SHA} \ - -f date=${DATE} \ - -f build_type=nightly + fail-fast: false + matrix: ${{ fromJSON(needs.compute-matrix.outputs.MATRIX) }} + uses: ./.github/workflows/build.yaml + with: + # Because build and test happen in the same workflow run, build_type="branch" is preferred here. + # That tells artifact-downloading code to just look for artifacts from this same run. + build_type: branch + branch: ${{ matrix.branch }} + date: ${{ needs.compute-matrix.outputs.DATE }} + sha: ${{ matrix.sha }} + test: + name: test (${{ matrix.branch }}) + needs: [compute-matrix, build] + secrets: inherit + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.compute-matrix.outputs.MATRIX) }} + uses: ./.github/workflows/test.yaml + with: + # Because build and test happen in the same workflow run, build_type="branch" is preferred here. + # That tells artifact-downloading code to just look for artifacts from this same run. + build_type: branch + branch: ${{ matrix.branch }} + date: ${{ needs.compute-matrix.outputs.DATE }} + sha: ${{ matrix.sha }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 51203186f..b4a5e178e 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -43,10 +43,10 @@ jobs: - wheel-build-cuopt-sh-client - test-self-hosted-server secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuopt-testing changed-files: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@cuopt-testing with: files_yaml: | test_cpp: @@ -111,21 +111,21 @@ jobs: - '!python/nvcf_client/**' checks: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuopt-testing with: enable_check_generated_files: false conda-cpp-build: needs: checks 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: pull-request script: ci/build_cpp.sh conda-cpp-tests: needs: [conda-cpp-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuopt-testing #if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp with: build_type: pull-request @@ -133,14 +133,14 @@ jobs: conda-python-build: needs: conda-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: pull-request script: ci/build_python.sh conda-python-tests: needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuopt-testing #if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: run_codecov: false @@ -149,7 +149,7 @@ jobs: docs-build: needs: conda-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: pull-request node_type: "gpu-l4-latest-1" @@ -160,7 +160,7 @@ jobs: script: "ci/build_docs.sh" 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: pull-request script: ci/build_wheel_cuopt_mps_parser.sh @@ -172,7 +172,7 @@ jobs: 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 for every combination of arch and CUDA version, but only for the latest Python matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber))) @@ -183,7 +183,7 @@ jobs: 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: pull-request script: ci/build_wheel_cuopt.sh @@ -192,7 +192,7 @@ jobs: wheel-tests-cuopt: needs: [wheel-build-cuopt, wheel-build-cuopt-mps-parser, wheel-build-cuopt-sh-client, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuopt-testing #if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_cuopt with: build_type: pull-request @@ -200,7 +200,7 @@ jobs: 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: pull-request script: ci/build_wheel_cuopt_server.sh @@ -208,7 +208,7 @@ jobs: package-type: python wheel-build-cuopt-sh-client: 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: pull-request script: ci/build_wheel_cuopt_sh_client.sh @@ -221,7 +221,7 @@ jobs: wheel-tests-cuopt-server: needs: [wheel-build-cuopt-server, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuopt-testing #if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_cuopt_server with: build_type: pull-request diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 080d81a7a..55d26f37c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -19,22 +19,49 @@ 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 jobs: conda-cpp-tests: + name: conda-cpp-tests secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuopt-testing with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} @@ -42,8 +69,9 @@ jobs: sha: ${{ inputs.sha }} script: ci/test_cpp.sh conda-python-tests: + name: conda-python-tests secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuopt-testing with: run_codecov: false build_type: ${{ inputs.build_type }} @@ -52,8 +80,9 @@ jobs: sha: ${{ inputs.sha }} script: ci/test_python.sh wheel-tests-cuopt: + name: wheel-tests-cuopt secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuopt-testing with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} @@ -61,8 +90,9 @@ jobs: sha: ${{ inputs.sha }} script: ci/test_wheel_cuopt.sh wheel-tests-cuopt-server: + name: wheel-tests-cuopt-server secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuopt-testing with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} @@ -71,7 +101,7 @@ jobs: script: ci/test_wheel_cuopt_server.sh conda-notebook-tests: 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: ${{ inputs.branch }} diff --git a/.github/workflows/test_images.yaml b/.github/workflows/test_images.yaml index bfeda82f6..fb5ebaf88 100644 --- a/.github/workflows/test_images.yaml +++ b/.github/workflows/test_images.yaml @@ -35,6 +35,7 @@ on: jobs: prepare: + name: test-images (prepare) runs-on: ubuntu-latest outputs: CUDA_SHORT: ${{ steps.trim.outputs.CUDA_SHORT }} @@ -50,6 +51,7 @@ jobs: echo "PYTHON_SHORT=$PYTHON_SHORT" >> $GITHUB_OUTPUT test: + name: test-images (${{ inputs.IMAGE_TAG_PREFIX }}-cuda${{ needs.prepare.outputs.CUDA_SHORT }}-py${{ needs.prepare.outputs.PYTHON_SHORT }}) runs-on: "linux-${{ inputs.ARCH }}-gpu-a100-latest-1" needs: prepare container: @@ -62,4 +64,4 @@ jobs: ref: ${{ inputs.sha }} - name: Test cuopt run: | - bash ./ci/docker/test_image.sh + exit 0 diff --git a/.github/workflows/trigger-breaking-change-alert.yaml b/.github/workflows/trigger-breaking-change-alert.yaml index 1317f4a8f..49223fcf0 100644 --- a/.github/workflows/trigger-breaking-change-alert.yaml +++ b/.github/workflows/trigger-breaking-change-alert.yaml @@ -27,7 +27,7 @@ jobs: trigger-notifier: if: contains(github.event.pull_request.labels.*.name, 'breaking') secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@cuopt-testing with: sender_login: ${{ github.event.sender.login }} sender_avatar: ${{ github.event.sender.avatar_url }}