본문 바로가기
WIKI 기술 지식 베이스

실험적 기능

원문 보기 위키 갱신

실험적 기능 (Experimental Features)

이 섹션은 현재 Scaffolder에서 사용할 수 있는 실험적 기능에 대한 정보와 가이드를 담고 있습니다. 이 기능들은 아직 개발 중이며 완전히 안정적이거나 완전하지 않을 수 있고, 언제든 변경될 수 있다는 점에 유의하세요.

출처: 문서

본문

이 섹션은 현재 Scaffolder에서 사용할 수 있는 실험적 기능에 대한 정보와 가이드를 담고 있습니다. 이 기능들은 아직 개발 중이며 완전히 안정적이거나 완전하지 않을 수 있고, 언제든 변경될 수 있다는 점에 유의하세요.

이 기능들에 대한 피드백은 Backstage Discord에 남기거나 Backstage GitHub 저장소에 이슈를 만들어 주세요.

재시도와 복구 (Retries and Recovery)

:::note 참고

작업 복구는 실험적 기능에서 안정적인 기능으로 승격되었습니다. 현재 설정 가이드는 Task Recovery configuration 문서를 참조하세요.

워크스페이스 제공자 확장 지점은 여전히 alpha API입니다.

실험적 플래그(EXPERIMENTAL_recoverTasks, EXPERIMENTAL_workspaceSerialization 등)와 템플릿별 EXPERIMENTAL_recovery 필드는 폴백으로 여전히 지원되지만 더 이상 사용되지 않으며, 향후 릴리스에서 제거될 것입니다.

:::

폼 데코레이터 (Form Decorators)

폼 데코레이터는 폼이 비밀과 함께 scaffolder-backend 플러그인에 제출되기 전에 임의의 코드를 실행할 수 있는 능력을 제공합니다.

템플릿 구성

템플릿의 spec에서 formDecorators 키를 사용해 각 템플릿에서 어떤 데코레이터를 실행할지 정의합니다.

apiVersion: scaffolder.backstage.io/v1beta3kind: Templatemetadata:  name: my-templatespec:  formDecorators:    - id: mockDecorator      input:        test: something funky  parameters: ...  steps: ...

참고

기존 EXPERIMENTAL_formDecorators 필드는 여전히 지원되지만 더 이상 사용되지 않습니다. 가능하면 formDecorators로 마이그레이션하세요.

데코레이터 만들기

createScaffolderFormDecorator로 데코레이터를 만들고 FormDecoratorBlueprint로 확장으로 등록합니다.

import { createScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha';import { githubAuthApiRef } from '@backstage/core-plugin-api';const mockDecorator = createScaffolderFormDecorator({  id: 'mockDecorator',  schema: {    input: {      test: z => z.string(),    },  },  deps: {    githubApi: githubAuthApiRef,  },  decorator: async (    { setSecrets, setFormState, input: { test } },    { githubApi },  ) => {    const token = await githubApi.getAccessToken(['repo']);    setFormState(state => ({ ...state, test }));    setSecrets(state => ({ ...state, GITHUB_TOKEN: token }));  },});

설치 (새 프론트엔드 시스템)

FormDecoratorBlueprint를 사용해 데코레이터를 확장으로 등록합니다.

import { FormDecoratorBlueprint } from '@backstage/plugin-scaffolder-react/alpha';export const myDecoratorExtension = FormDecoratorBlueprint.make({  name: 'my-decorator',  params: {    decorator: mockDecorator,  },});

그런 다음 앱이나 플러그인에 확장을 설치합니다.

설치 (기존 프론트엔드 시스템)

기존 프론트엔드 시스템을 사용하는 앱의 경우, packages/app/src/apis.ts에서 Utility API를 통해 데코레이터를 제공합니다.

createApiFactory({  api: formDecoratorsApiRef,  deps: {},  factory: () =>    DefaultScaffolderFormDecoratorsApi.create({      decorators: [mockDecorator],    }),}),

더 알아보기 (Learn more)