백스테이지 소프트웨어 템플릿
18633 단어 backstage
우리의 목표가 우리의 삶과 우리와 함께 일하는 사람들의 삶을 더 쉽고 행복하게 만드는 것이라면 Backstage 소프트웨어 템플릿이 도움이 될 수 있습니다. 이 도구는 Backstage 내에서 코드 스켈레톤을 로드하고 일부 변수를 채우고 해당 템플릿을 어딘가에 게시하는 구성 요소를 만드는 데 도움이 될 수 있습니다.
이 파티를 시작하자
계속 따라오셨다면 Backstage intro에서 Backstage 설치를 로컬로 설정하고 소프트웨어 템플릿을 비롯한 많은 구성 요소를 편리하게 부트스트랩했습니다. 바로 시작합시다.
구성 요소 만들기를 선택하여 시작하겠습니다.
그런 다음 Golang Microservice를 선택합니다.
필요한 정보를 요청하는 양식이 표시됩니다. 입력하고 다음 단계를 클릭합니다.
VCS 통합을 설정할 수 있는 새 양식이 표시됩니다.
마지막으로 리뷰가 표시되고 Create를 진행할 수 있습니다.
그리고 Backstage가 마법을 부릴 것입니다.
새 구성 요소가 생성됩니다.
많은 코드가 포함된 새로운 저장소도 있습니다.
잠시 주변을 둘러보고 가라앉게 합시다.
방금 무슨 일이 일어났나요?
템플릿을 기반으로 Backstage는 코드와 통합으로 가득 찬 새로운 리포지토리를 생성할 수 있었습니다. Backstage intro에서 수행한 설정은 이 모든 것을 무료로 가져왔습니다.
app.config.yaml
를 살펴보면 다음을 볼 수 있습니다.catalog:
rules:
- allow: [Component, System, API, Group, User, Template, Location]
locations:
- type: url
target: https://github.com/spotify/cookiecutter-golang/blob/master/template.yaml
rules:
- allow: [Template]
이는 다음 템플릿을 가리킵니다.
apiVersion: backstage.io/v1alpha1
kind: Template
metadata:
name: golang-starter
title: Golang Microservice
description: Create a Golang repo with this template built by members of the Go community
tags:
- experimental
- go
spec:
owner: [email protected]
templater: cookiecutter
type: service
path: "."
schema:
required:
- component_id
- project_short_description
- docker_image
- docker_build_image
- docker_build_image_version
- use_logrus_logging
- use_viper_config
- use_ci
- use_cobra_cmd
properties:
component_id:
title: Name
type: string
description: Unique name of the component
project_short_description:
title: Description
type: string
description: Description of the component
docker_image:
title: Docker Image
type: string
description: The docker base image to use when running the service
default: alpine-base-image:latest
docker_build_image:
title: Docker Build Image
type: string
description: The docker base image to use when building the service
default: golang
docker_build_image_version:
title: Docker Build Image Version
description: The image version to use when building the service
type: string
enum:
- alpine
default: alpine
use_logrus_logging:
title: Enable Logrus Logging (https://github.com/sirupsen/logrus)
type: string
enum:
- "y"
- "n"
default: "y"
use_viper_config:
title: Enable Viper Config (https://github.com/spf13/viper)
type: string
enum:
- "y"
- "n"
default: "y"
use_cobra_cmd:
title: Enable Cobra CLI Tools (https://github.com/spf13/cobra)
type: string
enum:
- "y"
- "n"
default: "y"
use_ci:
title: Add CI
description: Add a CI config to the repo, Gitub Actions, Circle or Travis are the only supported right now
type: string
enum:
- github
- travis
- circle
- none
default: github
이제 무언가가 이것을 해석하고 마법을 부려야 합니다. 이것은
packages/backend/src/plugins/scaffolder.ts
가 작동하는 곳입니다.import { SingleHostDiscovery } from '@backstage/backend-common';
import { CatalogClient } from '@backstage/catalog-client';
import {
CookieCutter,
CreateReactAppTemplater,
createRouter,
Preparers,
Publishers,
Templaters
} from '@backstage/plugin-scaffolder-backend';
import Docker from 'dockerode';
import { Router } from 'express';
import type { PluginEnvironment } from '../types';
export default async function createPlugin({
logger,
config,
database,
reader,
}: PluginEnvironment): Promise<Router> {
const cookiecutterTemplater = new CookieCutter();
const craTemplater = new CreateReactAppTemplater();
const templaters = new Templaters();
templaters.register('cookiecutter', cookiecutterTemplater);
templaters.register('cra', craTemplater);
const preparers = await Preparers.fromConfig(config, { logger });
const publishers = await Publishers.fromConfig(config, { logger });
const dockerClient = new Docker();
const discovery = SingleHostDiscovery.fromConfig(config);
const catalogClient = new CatalogClient({ discoveryApi: discovery });
return await createRouter({
preparers,
templaters,
publishers,
logger,
config,
dockerClient,
database,
catalogClient,
reader
});
}
@backstage/plugin-scaffolder-backend
~ CookieCutter
는 cookiecutter-golang을 기반으로 Golang 프로젝트를 부트스트랩하는 방법을 "알고"있습니다. 그리고 그것이 모든 마법이 일어나는 방식입니다.결국 우리는 add our own templates 도움이 필요할 것입니다 writing them . 그리고 builtin actions 이 충분하지 않으면 쓰기 custom actions 가 포함될 수 있습니다.
Backstage 소프트웨어 템플릿은 표준화를 제공하고 팀이 더 빠르게 생산성을 높일 수 있도록 크게 도약합니다.
Reference
이 문제에 관하여(백스테이지 소프트웨어 템플릿), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mccricardo/backstage-software-templates-2jf6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)