17 KiB
@backstage/plugin-scaffolder-backend
0.8.0
Minor Changes
-
a5f42cf66: # Stateless scaffoldingThe scaffolder has been redesigned to be horizontally scalable and to persistently store task state and execution logs in the database.
Each scaffolder task is given a unique task ID which is persisted in the database. Tasks are then picked up by a
TaskWorkerwhich performs the scaffolding steps. Execution logs are also persisted in the database meaning you can now refresh the scaffolder task status page without losing information.The task status page is now dynamically created based on the step information stored in the database. This allows for custom steps to be displayed once the next version of the scaffolder template schema is available.
The task page is updated to display links to both the git repository and to the newly created catalog entity.
Component registration has moved from the frontend into a separate registration step executed by the
TaskWorker. This requires that aCatalogClientis passed to the scaffolder backend instead of the oldCatalogEntityClient.Make sure to update
plugins/scaffolder.tsimport { CookieCutter, createRouter, Preparers, Publishers, CreateReactAppTemplater, Templaters, - CatalogEntityClient, } from '@backstage/plugin-scaffolder-backend'; +import { CatalogClient } from '@backstage/catalog-client'; const discovery = SingleHostDiscovery.fromConfig(config); -const entityClient = new CatalogEntityClient({ discovery }); +const catalogClient = new CatalogClient({ discoveryApi: discovery }) return await createRouter({ preparers, templaters, publishers, logger, config, dockerClient, - entityClient, database, + catalogClient, });As well as adding the
@backstage/catalog-clientpackages as a dependency of your backend package.
Patch Changes
- Updated dependencies [
bad21a085] - Updated dependencies [
a1f5e6545]- @backstage/catalog-model@0.7.2
- @backstage/config@0.1.3
0.7.1
Patch Changes
edbc27bfd: Added githubApp authentication to the scaffolder-backend pluginfb28da212: Switched to using'x-access-token'for authenticating Git over HTTPS towards GitHub.0ada34a0f: Minor typo in migration29c8bcc53: Fixed thepreparestep for when using local templates that were added to the catalog using thefile:target configuration. No moreEPERM: operation not permittederror messages.a341a8716: Fix parsing of the path to default to empty string not undefined if git-url-parse throws something we don't expect. Fixes the errorThe "path" argument must be of type string.when preparing.- Updated dependencies [
16fb1d03a] - Updated dependencies [
491f3a0ec] - Updated dependencies [
491f3a0ec] - Updated dependencies [
434b4e81a] - Updated dependencies [
fb28da212]- @backstage/backend-common@0.5.4
- @backstage/integration@0.5.0
0.7.0
Minor Changes
-
615103a63: Introducedv2Scaffolder REST API, which uses an implementation that is database backed, making the scaffolder instances stateless. ThecreateRouterfunction now requires aPluginDatabaseManagerinstance to be passed in, commonly available asdatabasein the plugin environment in the backend.This API should be considered unstable until used by the scaffolder frontend.
Patch Changes
6ed2b47d6: Include Backstage identity token in requests to backend plugins.ffffea8e6: Minor updates to reflect the changes in@backstage/integrationthat made the fieldsapiBaseUrlandapiUrlmandatory.- Updated dependencies [
6ed2b47d6] - Updated dependencies [
ffffea8e6] - Updated dependencies [
82b2c11b6] - Updated dependencies [
965e200c6] - Updated dependencies [
ffffea8e6] - Updated dependencies [
72b96e880] - Updated dependencies [
5a5163519]- @backstage/catalog-client@0.3.6
- @backstage/backend-common@0.5.3
- @backstage/integration@0.4.0
0.6.0
Minor Changes
-
cdea0baf1: The scaffolder is updated to generate a unique workspace directory inside the temp folder. This directory is cleaned up by the job processor after each run.The prepare/template/publish steps have been refactored to operate on known directories,
template/andresult/, inside the temporary workspace path.Updated preparers to accept the template url instead of the entire template. This is done primarily to allow for backwards compatibility between v1 and v2 scaffolder templates.
Fixes broken GitHub actions templating in the Create React App template.
For those with custom preparers, templates, or publishers
The preparer interface has changed, the prepare method now only takes a single argument, and doesn't return anything. As part of this change the preparers were refactored to accept a URL pointing to the target directory, rather than computing that from the template entity.
The
workingDirectoryoption was also removed, and replaced with aworkspacePathoption. The difference between the two is thatworkingDirectorywas a place for the preparer to create temporary directories, while theworkspacePathis the specific folder were the entire templating process for a single template job takes place. Instead of returning a path to the folder were the prepared contents were placed, the contents are put at the<workspacePath>/templatepath.type PreparerOptions = { - workingDirectory?: string; + /** + * Full URL to the directory containg template data + */ + url: string; + /** + * The workspace path that will eventually be the the root of the new repo + */ + workspacePath: string; logger: Logger; }; -prepare(template: TemplateEntityV1alpha1, opts?: PreparerOptions): Promise<string> +prepare(opts: PreparerOptions): Promise<void>;Instead of returning a path to the folder were the templaters contents were placed, the contents are put at the
<workspacePath>/resultpath. All templaters now also expect the source template to be present in thetemplatedirectory within theworkspacePath.export type TemplaterRunOptions = { - directory: string; + workspacePath: string; values: TemplaterValues; logStream?: Writable; dockerClient: Docker; }; -public async run(options: TemplaterRunOptions): Promise<TemplaterRunResult> +public async run(options: TemplaterRunOptions): Promise<void>Just like the preparer and templaters, the publishers have also switched to using
workspacePath. The root of the new repo is expected to be located at<workspacePath>/result.export type PublisherOptions = { values: TemplaterValues; - directory: string; + workspacePath: string; logger: Logger; };
Patch Changes
-
a26668913: Attempt to fix windows test errors in master -
529d16d27: # Repo visibility for GitLab and BitBucket reposNOTE: This changes default repo visibility from
privatetopublicfor GitLab and BitBucket which is consistent with the GitHub default. If you were counting onprivatevisibility, you'll need to update your scaffolder config to useprivate.This adds repo visibility feature parity with GitHub for GitLab and BitBucket.
To configure the repo visibility, set scaffolder.type.visibility as in this example:
scaffolder: github: visibility: private # 'public' or 'internal' or 'private' (default is 'public') gitlab: visibility: public # 'public' or 'internal' or 'private' (default is 'public') bitbucket: visibility: public # 'public' or 'private' (default is 'public') -
Updated dependencies [
c4abcdb60] -
Updated dependencies [
2430ee7c2] -
Updated dependencies [
6e612ce25] -
Updated dependencies [
025e122c3] -
Updated dependencies [
064c513e1] -
Updated dependencies [
7881f2117] -
Updated dependencies [
3149bfe63] -
Updated dependencies [
2e62aea6f] -
Updated dependencies [
11cb5ef94]- @backstage/integration@0.3.2
- @backstage/backend-common@0.5.2
- @backstage/catalog-model@0.7.1
0.5.2
Patch Changes
-
26a3a6cf0: Honor the branch ref in the url when cloning.This fixes a bug in the scaffolder prepare stage where a non-default branch was specified in the scaffolder URL but the default branch was cloned. For example, even though the
otherbranch is specified in this example, themasterbranch was actually cloned:catalog: locations: - type: url target: https://github.com/backstage/backstage/blob/other/plugins/scaffolder-backend/sample-templates/docs-template/template.yamlThis also fixes a 404 in the prepare stage for GitLab URLs.
-
9dd057662: Upgrade git-url-parse to v11.4.4 which fixes parsing an Azure DevOps branch ref. -
Updated dependencies [
26a3a6cf0] -
Updated dependencies [
664dd08c9] -
Updated dependencies [
6800da78d] -
Updated dependencies [
9dd057662]- @backstage/backend-common@0.5.1
- @backstage/integration@0.3.1
0.5.1
Patch Changes
0ea002378: Fixing issues with templating and full URL's asstorePath's
0.5.0
Minor Changes
-
ed6baab66: - Deprecating thescaffolder.${provider}.tokenauth duplication and favoringintegrations.${provider}instead. If you receive deprecation warnings your config should change like the following:scaffolder: github: token: $env: GITHUB_TOKEN visibility: publicTo something that looks like this:
integration: github: - host: github.com token: $env: GITHUB_TOKEN scaffolder: github: visibility: publicYou can also configure multiple different hosts under the
integrationconfig like the following:integration: github: - host: github.com token: $env: GITHUB_TOKEN - host: ghe.mycompany.com token: $env: GITHUB_ENTERPRISE_TOKENThis of course is the case for all the providers respectively.
-
Adding support for cross provider scaffolding, you can now create repositories in for example Bitbucket using a template residing in GitHub.
-
Fix GitLab scaffolding so that it returns a
catalogInfoUrlwhich automatically imports the project into the catalog. -
The
Store Pathfield on thescaffolderfrontend has now changed so that you require the full URL to the desired destination repository.
backstage/new-repositorywould becomehttps://github.com/backstage/new-repositoryif provider was GitHub for example. -
Patch Changes
- Updated dependencies [
def2307f3] - Updated dependencies [
0b135e7e0] - Updated dependencies [
294a70cab] - Updated dependencies [
fa8ba330a] - Updated dependencies [
0ea032763] - Updated dependencies [
5345a1f98] - Updated dependencies [
ed6baab66] - Updated dependencies [
09a370426] - Updated dependencies [
a93f42213]- @backstage/catalog-model@0.7.0
- @backstage/backend-common@0.5.0
- @backstage/integration@0.3.0
0.4.1
Patch Changes
-
94fdf4955: Get rid of all usages of @octokit/types, and bump the rest of the octokit dependencies to the latest version -
cc068c0d6: Bump the gitbeaker dependencies to 28.x.To update your own installation, go through the
package.jsonfiles of all of your packages, and ensure that all dependencies on@gitbeaker/nodeor@gitbeaker/coreare at version^28.0.2. Then runyarn installat the root of your repo. -
711ba55a2: Export all preparers and publishers properly -
Updated dependencies [
466354aaa] -
Updated dependencies [
f3b064e1c] -
Updated dependencies [
abbee6fff] -
Updated dependencies [
147fadcb9]- @backstage/integration@0.2.0
- @backstage/catalog-model@0.6.1
- @backstage/backend-common@0.4.3
0.4.0
Minor Changes
5eb8c9b9e: Fix GitLab scaffolder publisher
Patch Changes
7e3451700: bug(scaffolder): Ignore the .git folder when adding dot-files to the index
0.3.7
Patch Changes
37a5244ef: Add scaffolding support for Bitbucket Cloud and Server.00042e73c: Moving the Git actions to isomorphic-git instead of the node binding version of nodegit9efbc5585: Add config schema for Bitbucket scaffolder- Updated dependencies [
5ecd50f8a] - Updated dependencies [
00042e73c] - Updated dependencies [
0829ff126] - Updated dependencies [
036a84373]- @backstage/backend-common@0.4.2
- @backstage/integration@0.1.5
0.3.6
Patch Changes
19554f6d6: Added GitHub Actions for Create React App, and allow better imports of files inside a module when they're exposed usingfilesinpackage.json33a82a713: GitLab preparer uses the right token (primarily the same one as the publisher, falling back to the integrations token)aed8f7f12: Clearer error message when preparer or publisher type can't be determined.
0.3.5
Patch Changes
94c65a9d4: Added configuration schema for the commonly used properties- Updated dependencies [
c911061b7] - Updated dependencies [
1d1c2860f] - Updated dependencies [
0e6298f7e] - Updated dependencies [
4eafdec4a] - Updated dependencies [
ac3560b42]- @backstage/catalog-model@0.6.0
- @backstage/backend-common@0.4.1
0.3.4
Patch Changes
1e22f8e0b: Unifydockerodelibrary and type dependency versions- Updated dependencies [
38e24db00] - Updated dependencies [
e3bd9fc2f] - Updated dependencies [
12bbd748c] - Updated dependencies [
83b6e0c1f] - Updated dependencies [
e3bd9fc2f]- @backstage/backend-common@0.4.0
- @backstage/config@0.1.2
- @backstage/catalog-model@0.5.0
0.3.3
Patch Changes
- Updated dependencies [
612368274] - Updated dependencies [
08835a61d] - Updated dependencies [
a9fd599f7] - Updated dependencies [
bcc211a08]- @backstage/backend-common@0.3.3
- @backstage/catalog-model@0.4.0
0.3.2
Patch Changes
ef2831dde: Move constructing the catalog-info.yaml URL for scaffolded components to the publishers5a1d8dca3: Fix React entity YAML filename to new standard- Updated dependencies [
1166fcc36] - Updated dependencies [
bff3305aa] - Updated dependencies [
1185919f3] - Updated dependencies [
b47dce06f]- @backstage/catalog-model@0.3.0
- @backstage/backend-common@0.3.1
0.3.1
Patch Changes
d33f5157c: Extracted pushToRemote function for reuse between publishers- Updated dependencies [
1722cb53c] - Updated dependencies [
1722cb53c] - Updated dependencies [
7b37e6834] - Updated dependencies [
8e2effb53]- @backstage/backend-common@0.3.0
0.3.0
Minor Changes
-
59166e5ec:createRouterof scaffolder backend will now require additional option asentityClientwhich could be generated byCatalogEntityClientinplugin-scaffolder-backendpackage. Here is example to generateentityClient.import { CatalogEntityClient } from '@backstage/plugin-scaffolder-backend'; import { SingleHostDiscovery } from '@backstage/backend-common'; const discovery = SingleHostDiscovery.fromConfig(config); const entityClient = new CatalogEntityClient({ discovery });- Scaffolder's API
/v1/jobswill accepttemplateNameinstead oftemplateEntity.
- Scaffolder's API
Patch Changes
- Updated dependencies [
33b7300eb]- @backstage/backend-common@0.2.1
0.2.0
Minor Changes
-
3e254503d: Add Azure DevOps support to the scaffolder backendThis adds support for Azure DevOps to the scaffolder (preparer & publisher). I thought I should get this in there now since #2426 has been merged. I had a previous PR with only the preparer but I closed that in favor of this one.
I stayed with the 'azure/api' structure but I guess we should try and go the same way as with GitHub here #2501
Patch Changes
-
0c370c979: Update SSR template to pass CI -
991a950e0: Added .fromConfig static factories for Preparers and Publishers + read integrations config to support url location types -
c926765a2: Allow templates to be located on non-default branch -
6840a68df: Add authentication token to Scaffolder GitHub Preparer -
1c8c43756: The newscaffolder.github.baseUrlconfig property allows to specify a custom base url for GitHub Enterprise instances -
5e4551e3a: Added support for configuring the working directory of the Scaffolder:backend: workingDirectory: /some-dir # Use this to configure a working directory for the scaffolder, defaults to the OS temp-dir -
e3d063ffa: Introduce PreparerOptions for PreparerBase -
Updated dependencies [
3a4236570] -
Updated dependencies [
e0be86b6f] -
Updated dependencies [
f70a52868] -
Updated dependencies [
12b5fe940] -
Updated dependencies [
5249594c5] -
Updated dependencies [
56e4eb589] -
Updated dependencies [
e37c0a005] -
Updated dependencies [
a768a07fb] -
Updated dependencies [
f00ca3cb8] -
Updated dependencies [
6579769df] -
Updated dependencies [
5adfc005e] -
Updated dependencies [
8c2b76e45] -
Updated dependencies [
440a17b39] -
Updated dependencies [
fa56f4615] -
Updated dependencies [
8afce088a] -
Updated dependencies [
b3d57961c] -
Updated dependencies [
7bbeb049f]- @backstage/catalog-model@0.2.0
- @backstage/backend-common@0.2.0