Skip to content

Merge pull request #23 from NVIDIA/feat/scanner-update-comment #28

Merge pull request #23 from NVIDIA/feat/scanner-update-comment

Merge pull request #23 from NVIDIA/feat/scanner-update-comment #28

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
on:
push:
branches:
- main
permissions:
contents: write # Create releases and tags
issues: write # Comment on released issues
pull-requests: write # Comment on released PRs
jobs:
release:
name: Semantic Release
runs-on: ubuntu-latest # FIXME: Replace with NV Runners
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for semantic-release
token: ${{ secrets.GITHUB_TOKEN }}
- name: Semantic Release
id: semantic
uses: ./.github/actions/semantic-release
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update Major Version Tag
if: steps.semantic.outputs.new-release-published == 'true'
run: |
NEW_VERSION="v${{ steps.semantic.outputs.new-release-version }}"
MAJOR_VERSION="v${{ steps.semantic.outputs.new-release-major-version }}"
# Configure git
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Force update major version tag (e.g., v1 points to latest v1.x.x)
git tag -fa "$MAJOR_VERSION" -m "Update $MAJOR_VERSION to $NEW_VERSION"
git push origin "$MAJOR_VERSION" --force
echo "✅ Updated major version tag: $MAJOR_VERSION -> $NEW_VERSION"
- name: Prepare Release Notes for Slack
if: steps.semantic.outputs.new-release-published == 'true'
id: prepare-notes
run: |
# Truncate and escape release notes for JSON
NOTES=$(echo '${{ steps.semantic.outputs.new-release-notes }}' | head -c 2000 | jq -Rs .)
echo "notes=$NOTES" >> $GITHUB_OUTPUT
# Also create a simple summary
SUMMARY=$(echo '${{ steps.semantic.outputs.new-release-notes }}' | head -n 3 | sed 's/^# //' | tr '\n' ' ')
echo "summary=$SUMMARY" >> $GITHUB_OUTPUT
- name: Notify Slack - Release Published
if: steps.semantic.outputs.new-release-published == 'true'
uses: ./.github/actions/slack-notify
with:
slack-bot-token: ${{ secrets.CDS_SLACK_BOT_OAUTH_TOKEN }}
channel-id: C0A14US6GFP # cds-release-notifications
payload: |
{
"text": "New release v${{ steps.semantic.outputs.new-release-version }} published for ${{ github.repository }}",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "🎉 New Release Published"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Repository:*\n${{ github.repository }}"
},
{
"type": "mrkdwn",
"text": "*Version:*\nv${{ steps.semantic.outputs.new-release-version }}"
},
{
"type": "mrkdwn",
"text": "*Released by:*\n${{ github.actor }}"
},
{
"type": "mrkdwn",
"text": "*Major Tag:*\nv${{ steps.semantic.outputs.new-release-major-version }}"
}
]
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "${{ steps.prepare-notes.outputs.summary }}"
}
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View Release Notes"
},
"url": "${{ github.server_url }}/${{ github.repository }}/releases/tag/v${{ steps.semantic.outputs.new-release-version }}"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View Workflow"
},
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}
]
}
]
}
- name: Notify Slack - No Release
if: steps.semantic.outputs.new-release-published != 'true'
uses: ./.github/actions/slack-notify
with:
slack-bot-token: ${{ secrets.CDS_SLACK_BOT_OAUTH_TOKEN }}
channel-id: C0A14US6GFP # cds-release-notifications
errors: 'false'
message: |
ℹ️ *No New Release*
*Repository:* ${{ github.repository }}
*Branch:* ${{ github.ref_name }}
*Commit:* `${{ github.sha }}`
*Author:* ${{ github.actor }}
No releasable changes were found in this push.
<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Workflow>
- name: Notify Slack - Release Failed
if: failure()
uses: ./.github/actions/slack-notify
with:
slack-bot-token: ${{ secrets.CDS_SLACK_BOT_OAUTH_TOKEN }}
channel-id: C0A14US6GFP # cds-release-notifications
errors: 'false'
message: |
❌ *Release Workflow Failed*
*Repository:* ${{ github.repository }}
*Branch:* ${{ github.ref_name }}
*Triggered by:* ${{ github.actor }}
The release workflow encountered an error. Please check the logs for details.
<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Logs>