Skip to content

Release

Release #28

Workflow file for this run

# 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.
# This workflow will install Python dependencies,
# run tests with a variety of Python versions,
# and upload a new build to TestPyPI.
#
# For more information see:
# https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version (e.g. v1.2.34)'
required: true
type: string
default: v
rc:
description: 'RC Build Number'
required: false
type: number
ga:
description: 'GA (Official) Build'
required: true
type: boolean
default: false
jobs:
pre-commit:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.12"]
env:
PYTHON_VERSION: ${{ matrix.python-version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: Gr1N/setup-poetry@v9
- name: Install library and dependencies
run: |
poetry run pip install --upgrade pip setuptools
poetry -vvv install --with test
- name: Run pre-commit Check
uses: pre-commit/[email protected]
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python:
[
{ version: "3.9", coveralls: false },
{ version: "3.10", coveralls: false },
{ version: "3.11", coveralls: false },
{ version: "3.12", coveralls: true }, # publish coverage with latest version of Python
]
env:
PYTHON_VERSION: ${{ matrix.python.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python.version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python.version }}
- name: Install Poetry
uses: Gr1N/setup-poetry@v9
- name: Install library and dependencies
run: |
poetry run pip install --upgrade pip setuptools
poetry install --with test
- name: Run Pytest + Coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PLATFORM: ${{ matrix.os }}
run: |
poetry run pytest
- name: Upload Coverage Report
uses: actions/[email protected]
if: ${{ matrix.python.coveralls }}
with:
name: coverage
path: tests/reports/.coverage.lcov
- name: Upload Coveralls Report
uses: coverallsapp/[email protected]
if: ${{ matrix.python.coveralls }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
file: tests/reports/.coverage.lcov
build:
name: build wheel
runs-on: ubuntu-latest
needs: [pre-commit, test]
permissions:
id-token: write
contents: write
steps:
- name: Create tag
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/${{ github.event.inputs.version }}',
sha: context.sha
})
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Poetry
uses: Gr1N/setup-poetry@v9
- name: Build
env:
rc: ${{ github.event.inputs.rc }}
run: |
git tag -l
poetry run which python
source $(poetry env info --path)/bin/activate
poetry install
poetry dynamic-versioning -vvv
poetry build -vvv -f wheel --clean
- uses: actions/upload-artifact@v4
name: Upload build
with:
name: build-artifact
path: dist/*.whl
verification-test:
runs-on: ${{ matrix.os }}
needs: [build]
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.12"]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download build
uses: actions/[email protected]
with:
name: build-artifact
- name: Install ShellSpec
run: curl -fsSL https://git.io/shellspec | sh -s -- --yes
- name: Install Holoscan CLI
run: |
wheel=$(find . -name holoscan_cli-*.whl)
pip install ${wheel}
- name: Verification Test
working-directory: tests/verification
run: |
VERSION=${{ github.event.inputs.version }}
VERSION="${VERSION/?}"
shellspec -e VERSION=$VERSION -o j
- name: Upload Test Report
uses: test-summary/[email protected]
if: always()
with:
paths: 'tests/verification/report/*.xml'
testpypi-deploy:
if: ${{ inputs.ga == false }}
name: publish-test-pypi
permissions:
id-token: write
runs-on: ubuntu-latest
needs: [verification-test]
steps:
- name: Download build
uses: actions/[email protected]
with:
name: build-artifact
path: dist/
- name: Publish package distributions to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
verbose: true