74 lines
2.2 KiB
YAML
74 lines
2.2 KiB
YAML
apiVersion: scaffolder.backstage.io/v1beta3
|
|
# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-template
|
|
kind: Template
|
|
metadata:
|
|
name: example-nodejs-template
|
|
title: Example Node.js Template
|
|
description: An example template for the scaffolder that creates a simple Node.js service
|
|
spec:
|
|
owner: user:guest
|
|
type: service
|
|
|
|
# These parameters are used to generate the input form in the frontend, and are
|
|
# used to gather input data for the execution of the template.
|
|
parameters:
|
|
- title: Fill in some steps
|
|
required:
|
|
- name
|
|
properties:
|
|
name:
|
|
title: Name
|
|
type: string
|
|
description: Unique name of the component
|
|
ui:autofocus: true
|
|
ui:options:
|
|
rows: 5
|
|
- title: Choose a location
|
|
required:
|
|
- repoUrl
|
|
properties:
|
|
repoUrl:
|
|
title: Repository Location
|
|
type: string
|
|
ui:field: RepoUrlPicker
|
|
ui:options:
|
|
allowedHosts:
|
|
- github.com
|
|
|
|
# These steps are executed in the scaffolder backend, using data that we gathered
|
|
# via the parameters above.
|
|
steps:
|
|
# Each step executes an action, in this case one templates files into the working directory.
|
|
- id: fetch-base
|
|
name: Fetch Base
|
|
action: fetch:template
|
|
input:
|
|
url: ./content
|
|
values:
|
|
name: ${{ parameters.name }}
|
|
|
|
# This step publishes the contents of the working directory to GitHub.
|
|
- id: publish
|
|
name: Publish
|
|
action: publish:github
|
|
input:
|
|
allowedHosts: ['github.com']
|
|
description: This is ${{ parameters.name }}
|
|
repoUrl: ${{ parameters.repoUrl }}
|
|
|
|
# The final step is to register our new component in the catalog.
|
|
- id: register
|
|
name: Register
|
|
action: catalog:register
|
|
input:
|
|
repoContentsUrl: ${{ steps['publish'].output.repoContentsUrl }}
|
|
catalogInfoPath: '/catalog-info.yaml'
|
|
|
|
# Outputs are displayed to the user after a successful execution of the template.
|
|
output:
|
|
links:
|
|
- title: Repository
|
|
url: ${{ steps['publish'].output.remoteUrl }}
|
|
- title: Open in catalog
|
|
icon: catalog
|
|
entityRef: ${{ steps['register'].output.entityRef }}
|