Skip to content
Latchkey

Blossom-CI workflow (pytorch/TensorRT)

The Blossom-CI workflow from pytorch/TensorRT, explained and optimized by Latchkey.

B

CI health: B - good

The optimized version below adds job timeouts, SHA-pinned actions.

Source: pytorch/TensorRT.github/workflows/blossom-ci.ymlLicense BSD-3-ClauseView source

What it does

This is the Blossom-CI workflow from the pytorch/TensorRT repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-3-Clause license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
# Copyright (c) 2020-2021, 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.

# A workflow to trigger ci on hybrid infra (github + self hosted runner)
name: Blossom-CI
on:
  issue_comment:
    types: [created]
  workflow_dispatch:
      inputs:
          platform:
            description: 'runs-on argument'
            required: false
          args:
            description: 'argument'
            required: false
jobs:
  Authorization:
    name: Authorization
    runs-on: blossom
    outputs:
      args: ${{ env.args }}

    # This job only runs for pull request comments
    if: |
         contains( 'andi4191, narendasan, peri044, bowang007,', format('{0},', github.actor)) &&
         github.event.comment.body == '/blossom-ci'
    steps:
      - name: Check if comment is issued by authorized person
        run: blossom-ci
        env:
          OPERATION: 'AUTH'
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          REPO_KEY_DATA: ${{ secrets.BLOSSOM_KEY }}

  Vulnerability-scan:
    name: Vulnerability scan
    needs: [Authorization]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v6
        with:
          repository: ${{ fromJson(needs.Authorization.outputs.args).repo }}
          ref: ${{ fromJson(needs.Authorization.outputs.args).ref }}
          lfs: 'true'

      # repo specific steps
      #- name: Setup java
      #  uses: actions/setup-java@v5
      #  with:
      #    java-version: 1.8

      # add blackduck properties https://synopsys.atlassian.net/wiki/spaces/INTDOCS/pages/631308372/Methods+for+Configuring+Analysis#Using-a-configuration-file
      #- name: Setup blackduck properties
      #  run: |
      #       PROJECTS=$(mvn -am dependency:tree | grep maven-dependency-plugin | awk '{ out="com.nvidia:"$(NF-1);print out }' | grep rapids | xargs | sed -e 's/ /,/g')
      #       echo detect.maven.build.command="-pl=$PROJECTS -am" >> application.properties
      #       echo detect.maven.included.scopes=compile >> application.properties

      - name: Run blossom action
        uses: NVIDIA/blossom-action@main
        env:
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          REPO_KEY_DATA: ${{ secrets.BLOSSOM_KEY }}
        with:
          args1: ${{ fromJson(needs.Authorization.outputs.args).args1 }}
          args2: ${{ fromJson(needs.Authorization.outputs.args).args2 }}
          args3: ${{ fromJson(needs.Authorization.outputs.args).args3 }}

  Job-trigger:
    name: Start ci job
    needs: [Vulnerability-scan]
    runs-on: blossom
    steps:
      - name: Start ci job
        run: blossom-ci
        env:
          OPERATION: 'START-CI-JOB'
          CI_SERVER: ${{ secrets.CI_SERVER }}
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  Upload-Log:
    name: Upload log
    runs-on: blossom
    if : github.event_name == 'workflow_dispatch'
    steps:
      - name: Jenkins log for pull request ${{ fromJson(github.event.inputs.args).pr }} (click here)
        run: blossom-ci
        env:
          OPERATION: 'POST-PROCESSING'
          CI_SERVER: ${{ secrets.CI_SERVER }}
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

# Copyright (c) 2020-2021, 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. # A workflow to trigger ci on hybrid infra (github + self hosted runner)name: Blossom-CIon:  issue_comment:    types: [created]  workflow_dispatch:      inputs:          platform:            description: 'runs-on argument'            required: false          args:            description: 'argument'            required: falsejobs:  Authorization:    timeout-minutes: 30    name: Authorization    runs-on: latchkey-small    outputs:      args: ${{ env.args }}     # This job only runs for pull request comments    if: |         contains( 'andi4191, narendasan, peri044, bowang007,', format('{0},', github.actor)) &&         github.event.comment.body == '/blossom-ci'    steps:      - name: Check if comment is issued by authorized person        run: blossom-ci        env:          OPERATION: 'AUTH'          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}          REPO_KEY_DATA: ${{ secrets.BLOSSOM_KEY }}   Vulnerability-scan:    timeout-minutes: 30    name: Vulnerability scan    needs: [Authorization]    runs-on: latchkey-small    steps:      - name: Checkout code        uses: actions/checkout@v6        with:          repository: ${{ fromJson(needs.Authorization.outputs.args).repo }}          ref: ${{ fromJson(needs.Authorization.outputs.args).ref }}          lfs: 'true'       # repo specific steps      #- name: Setup java      #  uses: actions/setup-java@v5      #  with:      #    java-version: 1.8       # add blackduck properties https://synopsys.atlassian.net/wiki/spaces/INTDOCS/pages/631308372/Methods+for+Configuring+Analysis#Using-a-configuration-file      #- name: Setup blackduck properties      #  run: |      #       PROJECTS=$(mvn -am dependency:tree | grep maven-dependency-plugin | awk '{ out="com.nvidia:"$(NF-1);print out }' | grep rapids | xargs | sed -e 's/ /,/g')      #       echo detect.maven.build.command="-pl=$PROJECTS -am" >> application.properties      #       echo detect.maven.included.scopes=compile >> application.properties       - name: Run blossom action        uses: NVIDIA/blossom-action@main        env:          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}          REPO_KEY_DATA: ${{ secrets.BLOSSOM_KEY }}        with:          args1: ${{ fromJson(needs.Authorization.outputs.args).args1 }}          args2: ${{ fromJson(needs.Authorization.outputs.args).args2 }}          args3: ${{ fromJson(needs.Authorization.outputs.args).args3 }}   Job-trigger:    timeout-minutes: 30    name: Start ci job    needs: [Vulnerability-scan]    runs-on: latchkey-small    steps:      - name: Start ci job        run: blossom-ci        env:          OPERATION: 'START-CI-JOB'          CI_SERVER: ${{ secrets.CI_SERVER }}          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}   Upload-Log:    timeout-minutes: 30    name: Upload log    runs-on: latchkey-small    if : github.event_name == 'workflow_dispatch'    steps:      - name: Jenkins log for pull request ${{ fromJson(github.event.inputs.args).pr }} (click here)        run: blossom-ci        env:          OPERATION: 'POST-PROCESSING'          CI_SERVER: ${{ secrets.CI_SERVER }}          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} 

What changed

  • Run on Latchkey managed runners with one line (runs-on), which apply the fixes below automatically and self-heal transient failures. This example uses latchkey-small; pick the runner size that fits the job.
  • Add a job timeout so a hung step cannot burn hours of runner time.

1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.

This workflow runs 4 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow

actions/checkout actions/setup-java NVIDIA/blossom-action

Frequently asked questions

What does the Blossom-CI workflow (pytorch/TensorRT) workflow do?
This is the Blossom-CI workflow from the pytorch/TensorRT repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-3-Clause license.
What CI health grade does this workflow get?
This Java workflow grades B. Paste your own workflow into the Latchkey grader to see its grade and the exact fixes.
How can I improve this Java workflow?
Apply job timeouts, SHA-pinned actions. Latchkey applies these automatically on managed runners when you point runs-on at Latchkey.

References