Skip to content

Release NeMo-Eval

Release NeMo-Eval #115

Workflow file for this run

# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
#
# 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: "Release NeMo-Eval"
on:
workflow_dispatch:
inputs:
component:
description: Component to release
required: true
default: nemo-evaluator
type: choice
options:
- nemo-evaluator
- nemo-evaluator-launcher
release-ref:
description: Full SHA (not short) or tag of the commit to build
required: true
type: string
dry-run:
description: "Dry Run: only publish to test PyPI"
required: true
default: true
type: boolean
create-gh-release:
description: Create a GitHub release
required: true
default: true
type: boolean
version-bump-branch:
description: Branch to push the version bump
required: true
type: string
schedule:
# Mon-Thu
- cron: "0 1 * * 1-4"
permissions:
contents: write # To read repository content
pull-requests: write # To create PRs
jobs:
validate-inputs:
runs-on: ubuntu-latest
steps:
- name: Validate inputs
run: |
if [ "${{ github.event_name }}" == "schedule" ]; then
echo "Skipping validation for scheduled run"
exit 0
fi
if [ "${{ inputs.version-bump-branch }}" == "${{ inputs.release-ref }}" ]; then
echo "Error: version-bump-branch cannot be the same as release-ref"
echo "version-bump-branch: ${{ inputs.version-bump-branch }}"
echo "release-ref: ${{ inputs.release-ref }}"
exit 1
fi
echo "Input validation passed"
release:
if: ${{ github.event_name == 'schedule' || inputs.component == 'nemo-evaluator' }}
needs: validate-inputs
uses: NVIDIA-NeMo/FW-CI-templates/.github/workflows/[email protected]
with:
release-ref: ${{ github.event_name == 'schedule' && github.sha || inputs.release-ref || github.sha }}
python-package: nemo_evaluator
library-name: NeMo Evaluator
# Tricky, below is the exact rewrite of "if it's schedule, then false, else use the version of `inputs.dry-run`"
dry-run: ${{ github.event_name != 'schedule' && inputs.dry-run }}
version-bump-branch: ${{ github.event_name == 'schedule' && 'main' || inputs.version-bump-branch || github.ref_name }}
create-gh-release: ${{ github.event_name == 'schedule' && true || inputs.create-gh-release }}
gh-release-tag-prefix: nemo-evaluator-
packaging: uv
skip-test-wheel: true
app-id: ${{ vars.BOT_ID }}
has-src-dir: true
root-dir: packages/nemo-evaluator
secrets:
TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
SLACK_WEBHOOK_ADMIN: ${{ secrets.SLACK_WEBHOOK_ADMIN }}
SLACK_WEBHOOK: ${{ secrets.SLACK_RELEASE_ENDPOINT }}
PAT: ${{ secrets.PAT }}
SSH_KEY: ${{ secrets.SSH_KEY }}
SSH_PWD: ${{ secrets.SSH_PWD }}
BOT_KEY: ${{ secrets.BOT_KEY }}
release-launcher:
if: ${{ github.event_name == 'schedule' || inputs.component == 'nemo-evaluator-launcher' }}
needs: validate-inputs
uses: NVIDIA-NeMo/FW-CI-templates/.github/workflows/[email protected]
with:
release-ref: ${{ github.event_name == 'schedule' && github.sha || inputs.release-ref || github.sha }}
python-package: nemo_evaluator_launcher
library-name: NeMo Evaluator Launcher
# Tricky, below is the exact rewrite of "if it's schedule, then false, else use the version of `inputs.dry-run`"
dry-run: ${{ github.event_name != 'schedule' && inputs.dry-run }}
version-bump-branch: ${{ github.event_name == 'schedule' && 'main' || inputs.version-bump-branch || github.ref_name }}
create-gh-release: ${{ github.event_name == 'schedule' && true || inputs.create-gh-release }}
gh-release-tag-prefix: nemo-evaluator-launcher-
packaging: uv
skip-test-wheel: true
app-id: ${{ vars.BOT_ID }}
has-src-dir: true
root-dir: packages/nemo-evaluator-launcher
secrets:
TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
SLACK_WEBHOOK_ADMIN: ${{ secrets.SLACK_WEBHOOK_ADMIN }}
SLACK_WEBHOOK: ${{ secrets.SLACK_RELEASE_ENDPOINT }}
PAT: ${{ secrets.PAT }}
SSH_KEY: ${{ secrets.SSH_KEY }}
SSH_PWD: ${{ secrets.SSH_PWD }}
BOT_KEY: ${{ secrets.BOT_KEY }}