GithubHelp home page GithubHelp logo

janus-idp / software-templates Goto Github PK

View Code? Open in Web Editor NEW
32.0 19.0 165.0 1.56 MB

Software Template (Backstage)

License: Apache License 2.0

Java 0.69% HTML 94.86% Dockerfile 2.95% TypeScript 0.15% Go 0.13% Python 0.10% C# 0.57% CSS 0.46% JavaScript 0.09%
backstage backstage-template golden-path goldenpath software-template

software-templates's Introduction

software-templates's People

Contributors

areebal avatar christophe-f avatar cooktheryan avatar davgordo avatar dendod96 avatar gorkem avatar iocanel avatar jaland avatar jayfray12 avatar kadel avatar lordrip avatar mattheh avatar oladapooloyede avatar ozyohthree avatar pataknight avatar schultzp2020 avatar tumido avatar zaperex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

software-templates's Issues

Provide a GPT to create a Go application managed by Argo, using Tekton

Goal

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.

What problem does this solve?

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

Various updates in the 6 Janus GPTs

  1. Rename the GPTs titles.
    ie
    From: .NET Frontend Golden Path Template
    To: Create a .NET Frontend application with CI/CD

  2. Show the CI step before the CD step. The CI step will become step 3 and Argo will be step 4.

  3. 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

  4. In the ArgoCD step:

  • Select Quay registry as default
  • Move the image url before the namespace
  1. Make sure the ports default are correct. It seems that most templates are using 5000 as default which is incorrect.

Provide a GPT to create a Go application managed by Argo, using GH Actions

Goal

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.

What problem does this solve?

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

Validate Argo CD applicaton Definitions

  • Validate individual argo configs (namespace creation for dev/qa/prod)
  • Ask Dapo what the purpose of the organizations were being used for
  • Create app of apps for argo to apply

Provide a GPT to create a Quarkus application managed by Argo, using GH Actions

Goal

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.

What problem does this solve?

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

TriggerTemplate `name` field too long

Tekton pipelines seem to have a 63-character limit, but the name field of the TriggerTemplates here and here (and maybe elsewhere?) can quickly run longer than this due to the length of the ${uid} causing the pipeline to fail on Git push.

Tested with the app name my-new-quarkus-app

@mattheh @jayfray12

GPT - for a Backstage plugin

Goal

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.

What problem does this solve?

As a platform engineer, I struggle with knowing how to start creating a backstage plugin.

Quarkus Continuous Integration Definition (Tekton)

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:

  • code is built
  • image is built
  • image pushed to image repository

Assumption:

  • Tekton is provisioned and available
  • Quay org is available and a service account has permission to push to it
  • Environments (namespaces) are already provisioned via Backstage "new application" workflow

Create an ArgoCD template

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

Quarkus App Component Deployment Manifest (k8s)

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

Updates to the ArgoCD GPT

  1. Merge section 1 & 2
  2. Rename section "Provide information about the existing component"
  3. Add a description to let the user know that the information must match what is in the existing component
  4. Update the step titles with capital case to be consistent with all the steps

Update the Node template

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.

Enhance Backstage template to provision namespaces, etc.

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:

  • Backstage on-boarding process results in the creation of 2 namespaces for the application environment
  • ArgoCD root applications are created
  • Application record is created in backstage so that components can be added to it

Error while using the Quarkus web template

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 SpringBoot application managed by Argo, using GH Actions

Goal

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.

What problem does this solve?

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

Provide a GPT to create a Python application managed by Argo, using Tekton

Goal

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.

What problem does this solve?

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

Quarkus App Deployment Manifest (k8s/ArgoCD)

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

ArgoCD manifest files should be in a separate repo

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 application
  • sample-app-gitops repo that contains the manifest files

Provide a GPT to create a Python application managed by Argo, using GH Actions

Goal

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.

What problem does this solve?

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

Provide a GPT to create a .Net application managed by Argo, using GH Actions

Goal

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.

What problem does this solve?

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

Integrate Quarkus component workflow with existing application

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

  • Create app-gitops directory in quarkus-web-template directory
  • Add relevant parameters (e.g Application) to Quarkus component's Backstage scaffolding template

In 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

Updates to the 6 Janus GPTs

  1. Remove 'recommended' tag from Janus Quarkus GPTs
  2. Remove ArgoCD from the GPTs
  3. Move the Java specific metadata to a new section "Provide information about the Java metadata"
  4. Rename section "Provide information about the GitHub location" to "Provide information about the new component"
  5. Move the 'owner' & 'system' dropdown & 'port' input to the "Provide information about the new component" section.
  6. Update the description of the 'port' input to "Override the default port"
  7. Remove the 'Application Type' dropdown and hardcode the value in the template. ie .net Frontend = website, argocd = gitops, * = api
  8. Update the step titles with capital case to be consistent with all the steps

Provide a GPT to create a SpringBoot application managed by Argo, using Tekton

Goal

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.

What problem does this solve?

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

Provide a GPT to create a .Net application managed by Argo, using Tekton

Goal

Provide 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.

What problem does this solve?

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

GPT: Add Tech Docs (a documentation template)

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

Quarkus App Template

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:

  • Maven group name
  • Maven artifact name
  • Java package name
  • Java version

A good place to start:

Provide an initial set of Software Template samples

Goal

Provide an initial set of Software Template samples (GPTs Golden Path Templates), which use starter projects from the Devfile registry to start.

Why

  • As a platform engineer, I want a software template sample so that I can quickly provide a GPT for my developers with guardrails.
  • As a developer, I want to be able to quickly start a new app
  • As a platform engineer, I want an easy way to get started creating a new Backstage plugin

Issues included in this epic

Issue with nodejs template

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.

Provision tenant ArgoCD instance during application onboarding

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.

Provide a GPT to create a Quarkus application managed by Argo, using Tekton

Goal

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.

What problem does this solve?

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

Provide a GPT to create a Node application managed by Argo, using GH Actions

Goal

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.

What problem does this solve?

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

Provide a GPT to create a Node application managed by Argo, using Tekton

Goal

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.

What problem does this solve?

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.