실험적 기능
실험적 기능 (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], }),}),