Create Black Duck Project

Action ID: blackduck:create:project
NPM Package:

@backstage-community/plugin-scaffolder-backend-module-blackduck

Description

Create a Blackduck project

Input Schema

PropertyTypeDescriptionRequired
projectNamestringName of the project to be created
instanceNamestringName of the Instance
versionPhasestringPhase Dev / QA / Prod
projectVersionstringVersion of the project to be created
versionDistributionstringDistribution Internal / External

Output Schema

No output schema defined for this action.

Usage Examples

Create a Dev project for a new microservice

Creates a Black Duck project and initial Dev version when scaffolding a new service. Use this to prepare internal scanning early in development. This example uses fetch:template to set up source files first.

Copy
steps:
  - id: fetch-skeleton
    action: fetch:template
    input:
      url: ./skeleton
      targetPath: .
      values:
        serviceName: ${{ parameters.serviceName }}
        owner: ${{ parameters.owner }}

  - id: create-blackduck-project
    action: blackduck:create:project
    input:
      projectName: ${{ parameters.serviceName }}
      projectVersion: 0.1.0
      versionPhase: Dev
      versionDistribution: Internal
      instanceName: corp-blackduck

Create a QA project version for a release candidate

Creates a project version in phase QA for a release candidate. Use this when promoting builds to a test environment. The repo is prepared with fetch:template.

Copy
steps:
  - id: fetch-skeleton
    action: fetch:template
    input:
      url: ./service-template
      targetPath: .
      values:
        name: ${{ parameters.name }}
        owner: ${{ parameters.owner }}

  - id: create-blackduck-qa-version
    action: blackduck:create:project
    input:
      projectName: payments-service
      projectVersion: ${{ parameters.releaseVersion }}-rc.1
      versionPhase: QA
      versionDistribution: Internal
      instanceName: blackduck-eu

Create a Prod project for an externally distributed library

Creates a project and version in phase Prod with External distribution. Use this when publishing a library to external consumers. Source files are fetched using fetch:template.

Copy
steps:
  - id: fetch-skeleton
    action: fetch:template
    input:
      url: ./library-template
      targetPath: .
      values:
        packageName: ${{ parameters.packageName }}
        owner: ${{ parameters.owner }}

  - id: create-blackduck-prod-project
    action: blackduck:create:project
    input:
      projectName: ${{ parameters.packageName }}
      projectVersion: ${{ parameters.version }}
      versionPhase: Prod
      versionDistribution: External
      instanceName: blackduck-prod

Create a project for a monorepo package with team prefix

Creates a Black Duck project for a monorepo package using a naming convention with a team prefix. Use this to keep project names consistent across teams. The files are prepared with fetch:template.

Copy
steps:
  - id: fetch-skeleton
    action: fetch:template
    input:
      url: ./monorepo-package-template
      targetPath: packages/${{ parameters.packageName }}
      values:
        packageName: ${{ parameters.packageName }}
        team: ${{ parameters.team }}

  - id: create-blackduck-project
    action: blackduck:create:project
    input:
      projectName: ${{ parameters.team }}-${{ parameters.packageName }}
      projectVersion: 1.3.0
      versionPhase: Dev
      versionDistribution: Internal
      instanceName: platform-blackduck

Create a per-branch Dev project version for preview environments

Creates a Dev version per branch for preview builds so each branch can be scanned independently. Use this for feature branch workflows. The repo setup uses fetch:template.

Copy
steps:
  - id: fetch-skeleton
    action: fetch:template
    input:
      url: ./service-template
      targetPath: .
      values:
        serviceName: ${{ parameters.serviceName }}
        branchName: ${{ parameters.branchName }}

  - id: create-blackduck-branch-version
    action: blackduck:create:project
    input:
      projectName: ${{ parameters.serviceName }}
      projectVersion: ${{ parameters.branchName }}
      versionPhase: Dev
      versionDistribution: Internal
      instanceName: blackduck-sandbox