This repository has been moved to a new location.
Please visit redhat-developer/red-hat-developer-hub-software-templates for the latest updates.
Collection of Software Templates / Golden Path for Backstage.
Software Template (Backstage)
License: Apache License 2.0
This repository has been moved to a new location.
Please visit redhat-developer/red-hat-developer-hub-software-templates for the latest updates.
Collection of Software Templates / Golden Path for Backstage.
Provide a GPT to create a Python application managed by Argo, using GH Actions. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Python application, which will be managed by Argo using GH Actions
So that I can get started quickly with a Python application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Python GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Python component to the application
Then: A starting point application is committed to a source repository
When using the template, it creates the repository but the ci failes within the 'Build image' step with the following error:
error building at STEP "COPY package.json package-lock.json ./": checking on sources under "/home/runner/work/nodejs-test/nodejs-test": copier: stat: "/package-lock.json": no such file or directory
Seems like the 'package-lock.json' file is missing from the skeleton.
Should we allow for the internal registry to be an option for building. I have an example here if we want to extract it https://github.com/cooktheryan/software-templates/blob/d9d0e4b389396ced89e38426d22ccfafb4f3976d/scaffolder-templates/python-template/template.yaml.
/cc @schultzp2020
As a Developer
I can onboard a new backstage application with predefined environment manifest
So that the application's environments are automatically provisioned at the end of the workflow
Scenario:
Given: An authenticated developer
When: the developer creates a new application in the Backstage UI
Then: the namespaces/environment are provisioned automatically
Provide a GPT to create a Go application managed by Argo, using Tekton. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Go application, which will be managed by Argo using Tekton
So that I can get started quickly with a Go application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Go GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Go component to the application
Then: A starting point application is committed to a source repository
When creating an application from a software template, it should create 2 repos.
For example a sample-app
should have:
sample-app
repo that contains the source code of the applicationsample-app-gitops
repo that contains the manifest filesProvide a GPT to create a .Net application managed by Argo, using Tekton. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a . Net application, which will be managed by Argo using Tekton
So that I can get started quickly with a .Net application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A .Net GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new . Net component to the application
Then: A starting point application is committed to a source repository
An ArgoCD Application
is provisioned in the ${app-name}-build
namespace, but no ArgoCD instance is automatically provisioned, so the Application CR is not reconciled by a controller. This could be addressed by including an ArgoCD
CR in the Backstage application template.
To package more of our products together it would be interesting to see if we could couple StoneSoup and the templates. This would allow for StoneSoup to perform the building, verifying, and securing and then GH actions or Tekton to bump the release.
/cc @jduimovich
A key required flag is skipGitOpsResourceGeneration: true
Provide a GPT to create a SpringBoot application managed by Argo, using Tekton. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a SpringBoot application, which will be managed by Argo using Tekton
So that I can get started quickly with a SpringBoot application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A SpringBoot GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new SpringBoot component to the application
Then: A starting point application is committed to a source repository
The template will create a kind 'System'.
This will allow us to group components.
Provide a GPT to create a Python application managed by Argo, using Tekton. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Python application, which will be managed by Argo using Tekton
So that I can get started quickly with a Python application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Python GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Python component to the application
Then: A starting point application is committed to a source repository
When an application is created from a GPT, the ingress.yaml
manifest is not created. The application is not accessible.
As a Developer
I want a source code template for Quarkus microservice components
So that I can get started quickly with a Quarkus implementation
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Quarkus component template is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Quarkus component to the application
Then: A starting point application is committed to a source repository
Required parameters:
A good place to start:
Adjust Quarkus build Helm chart so that the resulting Tekton pipeline is configured to publish to the internal OpenShift container image registry by default
Provide an initial set of Software Template samples (GPTs Golden Path Templates), which use starter projects from the Devfile registry to start.
Provide a GPT to create a Node application managed by Argo, using GH Actions. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Node application, which will be managed by Argo using GH Actions
So that I can get started quickly with a Node application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Node GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Node component to the application
Then: A starting point application is committed to a source repository
warn YAML error at url:https://github.com/janus-idp/software-templates/tree/main/scaffolder-templates/quarkus-web-template/template.yaml, YAMLParseError: Tabs are not allowed as indentation at line 21, column 1:
- owner
- organization
We want the Quarkus app to register as an API in the Backstage console after it's created.
In the case of an existing app that is not using ArgoCD yet, a user should be able to add ArgoCD via a software template. That will create a -gitops
repo with the manifest files.
It should also create a PR to the app repo adding the annotations to the catalog-info.yaml:
backstage.io/kubernetes-id: ${{kubernetes_id}}
backstage.io/kubernetes-namespace: ${{namespace}}
In the catalog info, the section depends_on
should be linked to the -gitops
repo
The template will ask which component to link with and create a new repo.
EntityPicker:
type: string
ui:field: EntityPicker
ui:options:
catalogFilter:
- kind: component
For example a component with the name node-website
will have a new repo node-website-techdocs
The template skeleton will contain the mkdocs.yaml
with the /docs
folder contains a sample index.md
It will also create the GitHub Action pipeline. For example the one from Showcase: https://github.com/janus-idp/backstage-showcase/blob/main/.github/workflows/techdocs.yaml
No need to do Tekton pipeline yet.
Issues in Epic
Provide a Golden Path Template sample for a Backstage plugin.
This plugin can provide a skeleton, enabling a platform engineer to get started with a new plugin without having to start from the CLI.
As a platform engineer, I struggle with knowing how to start creating a backstage plugin.
The file src/index.ts
should be of type Javascript and not Typescript. If a developer is going to add TS in this file, Node will not start.
When we demo the Tekton pipeline, we may need to run it manually. Today, this involves creating a PipelineRun which requires the user to type a lot of manual parameters. Can we default some parameters based on naming conventions, or otherwise simplify the process of invoking the pipeline?
https://tekton.dev/docs/pipelines/pipelineruns/#default-values
In the step 'step tenant Argcd Fetch Skeleton + Template'
Writing file components/${{values.component_id}}-argocd-app-dev.yaml to template output path with mode 33188. {"timestamp":"2022-11-14T22:46:12.546Z"}
Error: (unknown path) [Line 5, Column 40]
Error: Unable to call `values["application"]["split"]`, which is undefined or falsey
at render (vm.js:10440:93)
Provide a GPT to create a Node application managed by Argo, using Tekton. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Node application, which will be managed by Argo using Tekton
So that I can get started quickly with a Node application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Node GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Node component to the application
Then: A starting point application is committed to a source repository
Provide a GPT to create a Go application managed by Argo, using GH Action. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Go application, which will be managed by Argo using GH Actions
So that I can get started quickly with a Go application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Go GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Go component to the application
Then: A starting point application is committed to a source repository
As a developer,
I want to link my Quarkus component workflow to an Argocd Root Application workflow
I want to create Argocd Application custom resources for my Quarkus component workflow, in different environments
I want to register my Quarkus component's Argocd Application custom resources with the Root Application's project on Argocd.
Related story:
Application namespace and provisioning template #15
Acceptance Criteria:
To link the Root Application template to the Quarkus component template, this should be done
app-gitops
directory in quarkus-web-template
directoryApplication
) to Quarkus component's Backstage scaffolding templateIn the app-gitops
directory, add Argocd Application custom resource templates for Dev, QA and Prod environment deployments
Add steps in the Quarkus component's Backstage scaffolding template to publish a pull request containing component's Argocd Application custom resource
Rename the GPTs titles.
ie
From: .NET Frontend Golden Path Template
To: Create a .NET Frontend application with CI/CD
Show the CI step before the CD step. The CI step will become step 3 and Argo will be step 4.
Update the current description in the CI section.
From: This action will create a simple CI based on chosen method
To: This action will create a CI pipeline for your application based on chosen method
In the ArgoCD step:
During the component workflow, the user must identify which application the component belongs to. Enable the user to select from a drop down of existing applications (systems).
This issue depends on https://github.com/halkyonio/assemble-backstage/issues/7
As a developer
I want the environments for my application to be automatically provisioned at onboarding time
So that I can deploy new components that I add to my application
Acceptance:
As a Developer
I can onboard a new backstage application component with predefined deployment manifest
So that the application can be deployed automatically by the continuous delivery tooling
Scenario:
Given: An authenticated developer
When: the developer creates a new application component in the Backstage UI
Then: A pull request with the component deployment manifest is automatically created against the application GitOps repo
In the ArgoCD template, after creating the -gitops
repo step, add the files step, a new step should be added to and use the argocd:create-resources
action.
This action is already installed in the showcase image.
Provide a GPT to create a Quarkus application managed by Argo, using GH Actions. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Quarkus application, which will be managed by Argo using GH Actions
So that I can get started quickly with a Quarkus application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Quarkus GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Quarkus component to the application
Then: A starting point application is committed to a source repository
Provide a GPT to create a Quarkus application managed by Argo, using Tekton. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a Quarkus application, which will be managed by Argo using Tekton
So that I can get started quickly with a Quarkus application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A Quarkus GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new Quarkus component to the application
Then: A starting point application is committed to a source repository
We should have a new template to create an Object Bucket claim similar to https://github.com/janus-idp/backstage-showcase/blob/main/manifests/base/obc.yaml
The catalog entity should be Resource
kind.
One of the step should ask for which component to attach to. It will create a PR on that component repo and add the dependsOn
section in the catalog-info.yaml
When using Tekton from a template, the following annotations are not available in the catalog-info.yaml file:
tektonci/build-namespace: ${{values.namespace}}
Existing pipeline runs a Git clone and then a Buidah build, but no Java artifact is built to include in the image. Include a maven build step.
Provide a GPT to create a .Net application managed by Argo, using GH Actions. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a .Net application, which will be managed by Argo using GH Actions
So that I can get started quickly with a .Net application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A .Net GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new .Net component to the application
Then: A starting point application is committed to a source repository
Provide a GPT to create a SpringBoot application managed by Argo, using GH Actions. Platform engineer can either use this as is or use it as a sample to provide a starting point for their own GPT.
As a Developer
I want a guided UI to create GH repo for a SpringBoot application, which will be managed by Argo using GH actions
So that I can get started quickly with a SpringBoot application
Scenario:
Given: A Developer and an existing Backstage application
When: The developer wants to add a new component to the application
Then: A SpringBoot GPT is available to select
Given: A Developer and an existing Backstage application
When The developer adds a new SpringBoot component to the application
Then: A starting point application is committed to a source repository
When an app is created via GPT, the following 2 labels app.kubernetes.io/component: backstage
& backstage.io/kubernetes-id=janus-idp
are not applied to the created app and it will not show up in the Kubernetes plugins or Topology.
Showcase example:
https://github.com/janus-idp/backstage-showcase/blob/main/manifests/base/deployment.yaml#L18
The labels need to be added to:
As a Developer
I can onboard a new quarkus application component and a CI pipeline is provisioned automatically
So that I can build the application component
Scenario:
Given: An authenticated developer onboarding a new app component in Backstage
When: The Developer selects a Quarkus template
Then: A Tekton pipeline is automatically configured and provisioned that can build the component
Acceptable pipeline:
Assumption:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.