base
This commit is contained in:
8
examples/template/content/catalog-info.yaml
Normal file
8
examples/template/content/catalog-info.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: backstage.io/v1alpha1
|
||||
kind: Component
|
||||
metadata:
|
||||
name: ${{ values.name | dump }}
|
||||
spec:
|
||||
type: service
|
||||
owner: user:guest
|
||||
lifecycle: experimental
|
1
examples/template/content/index.js
Normal file
1
examples/template/content/index.js
Normal file
@@ -0,0 +1 @@
|
||||
console.log('Hello from ${{ values.name }}!');
|
5
examples/template/content/package.json
Normal file
5
examples/template/content/package.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "${{ values.name }}",
|
||||
"private": true,
|
||||
"dependencies": {}
|
||||
}
|
74
examples/template/template.yaml
Normal file
74
examples/template/template.yaml
Normal file
@@ -0,0 +1,74 @@
|
||||
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 }}
|
Reference in New Issue
Block a user