diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..b3bd3f1a --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,52 @@ +# Copyright 2024 NVIDIA CORPORATION +# +# 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. + +# Run this workflow on new tags +name: Release + +on: + push: + tags: + - v* + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + name: Check out code + - name: Create Draft Release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OWNER: ${{ github.repository_owner }} + REPO: ${{ github.event.repository.name }} + run: | + GH_EXTRA_ARGS="" + if [[ ${{ github.ref }} == *-rc.* ]]; then + GH_EXTRA_ARGS="--prerelease" + fi + gh release create ${{ github.ref }} \ + --draft \ + -t "${{ github.ref }}" \ + -R $OWNER/$REPO \ + --verify-tag \ + $GH_EXTRA_ARGS + + - name: Upload Release Artifacts + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OWNER: ${{ github.repository_owner }} + REPO: ${{ github.event.repository.name }} + run: | + gh release upload ${{ github.ref }} CHANGELOG.md -R $OWNER/$REPO diff --git a/CHANGELOG.md b/CHANGELOG.md index 201598ca..c577df9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,20 @@ # NVIDIA Container Toolkit Changelog ## v1.16.0-rc.1 -* Move `nvidia-ctk hook` commands to a separate `nvidia-cdi-hook` binary. The same subcommands are supported. + +- Support vulkan ICD files directly in a driver root. This allows for the discovery of vulkan files in GKE driver installations. +- Increase priority of ld.so.conf.d config file injected into container. This ensures that injected libraries are preferred over libraries present in the container. +- Set default CDI spec permissions to 644. This fixes permission issues when using the `nvidia-ctk cdi transform` functions. +- Add `dev-root` option to `nvidia-ctk system create-device-nodes` command. +- Fix location of `libnvidia-ml.so.1` when a non-standard driver root is used. This enabled CDI spec generation when using the driver container on a host. +- Recalculate minimum required CDI spec version on save. +- Move `nvidia-ctk hook` commands to a separate `nvidia-cdi-hook` binary. The same subcommands are supported. +- Use `:` as an `nvidia-ctk config --set` list separator. This fixes a bug when trying to set config options that are lists. + +- [toolkit-container] Bump CUDA base image version to 12.5.0 +- [toolkit-container] Allow the path to `toolkit.pid` to be specified directly. +- [toolkit-container] Remove provenance information from image manifests. +- [toolkit-container] Add `dev-root` option when configuring the toolkit. This adds support for GKE driver installations. ## v1.15.0 diff --git a/hack/generate-changelog.sh b/hack/generate-changelog.sh new file mode 100755 index 00000000..784cddb6 --- /dev/null +++ b/hack/generate-changelog.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +# Copyright (c) 2024, 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. + +set -o pipefail +this=`basename $0` + +usage () { +cat << EOF +Generate a changelog for the specified tag +Usage: $this --reference [--remote ] + +Options: + --since specify the tag to start the changelog from (default: latest tag) + --remote specify the remote to fetch tags from (default: upstream) + --version specify the version to be released + --help/-h show this help and exit + +EOF +} + +REMOTE="upstream" +VERSION="" +REFERENCE= + +# Parse command line options +while [[ $# -gt 0 ]]; do + key="$1" + case $key in + --since) + REFERENCE="$2" + shift # past argument + shift # past value + ;; + --remote) + REMOTE="$2" + shift # past argument + shift # past value + ;; + --version) + VERSION="$2" + shift # past argument + shift # past value + ;; + --help/-h) usage + exit 0 + ;; + *) usage + exit 1 + ;; + esac +done + +# Fetch the latest tags from the remote +git fetch $REMOTE --tags + +# if REFERENCE is not set, get the latest tag +if [ -z "$REFERENCE" ]; then + REFERENCE=$(git describe --tags $(git rev-list --tags --max-count=1)) +fi + +# Print the changelog +echo "## Changelog" +echo "" +echo "### Version $VERSION" + +# Iterate over the commit messages and ignore the ones that start with "Merge" or "Bump" +git log --pretty=format:"%s" $REFERENCE..@ | grep -Ev "(^Merge )|(^Bump)" | sed 's/^\(.*\)/- \1/g'