chore: migrating server action

Signed-off-by: benjdlambert <ben@blam.sh>
This commit is contained in:
benjdlambert
2025-06-03 11:33:14 +02:00
parent 47ae57d476
commit d8169fcc6e
6 changed files with 174 additions and 178 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch
---
Migrate the actions to the new format
@@ -48,7 +48,8 @@
"@backstage/integration": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"fs-extra": "^11.2.0",
"yaml": "^2.0.0"
"yaml": "^2.0.0",
"zod": "^3.22.4"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
@@ -5,7 +5,6 @@
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
import { Config } from '@backstage/config';
import { JsonObject } from '@backstage/types';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { TemplateAction } from '@backstage/plugin-scaffolder-node';
@@ -20,19 +19,23 @@ export function createPublishBitbucketServerAction(options: {
}): TemplateAction<
{
repoUrl: string;
description?: string;
defaultBranch?: string;
repoVisibility?: 'private' | 'public';
sourcePath?: string;
enableLFS?: boolean;
token?: string;
gitCommitMessage?: string;
gitAuthorName?: string;
gitAuthorEmail?: string;
signCommit?: boolean;
description?: string | undefined;
repoVisibility?: 'private' | 'public' | undefined;
defaultBranch?: string | undefined;
sourcePath?: string | undefined;
enableLFS?: boolean | undefined;
token?: string | undefined;
gitCommitMessage?: string | undefined;
gitAuthorName?: string | undefined;
gitAuthorEmail?: string | undefined;
signCommit?: boolean | undefined;
},
JsonObject,
'v1'
{
remoteUrl?: string | undefined;
repoContentsUrl?: string | undefined;
commitHash?: string | undefined;
},
'v2'
>;
// @public
@@ -43,15 +46,17 @@ export function createPublishBitbucketServerPullRequestAction(options: {
{
repoUrl: string;
title: string;
description?: string;
targetBranch?: string;
sourceBranch: string;
reviewers?: string[];
token?: string;
gitAuthorName?: string;
gitAuthorEmail?: string;
description?: string | undefined;
targetBranch?: string | undefined;
reviewers?: string[] | undefined;
token?: string | undefined;
gitAuthorName?: string | undefined;
gitAuthorEmail?: string | undefined;
},
JsonObject,
'v1'
{
pullRequestUrl?: string | undefined;
},
'v2'
>;
```
@@ -126,101 +126,99 @@ export function createPublishBitbucketServerAction(options: {
}) {
const { integrations, config } = options;
return createTemplateAction<{
repoUrl: string;
description?: string;
defaultBranch?: string;
repoVisibility?: 'private' | 'public';
sourcePath?: string;
enableLFS?: boolean;
token?: string;
gitCommitMessage?: string;
gitAuthorName?: string;
gitAuthorEmail?: string;
signCommit?: boolean;
}>({
return createTemplateAction({
id: 'publish:bitbucketServer',
description:
'Initializes a git repository of the content in the workspace, and publishes it to Bitbucket Server.',
examples,
schema: {
input: {
type: 'object',
required: ['repoUrl'],
properties: {
repoUrl: {
title: 'Repository Location',
type: 'string',
},
description: {
title: 'Repository Description',
type: 'string',
},
repoVisibility: {
title: 'Repository Visibility',
type: 'string',
enum: ['private', 'public'],
},
defaultBranch: {
title: 'Default Branch',
type: 'string',
description: `Sets the default branch on the repository. The default value is 'master'`,
},
sourcePath: {
title: 'Source Path',
description:
'Path within the workspace that will be used as the repository root. If omitted, the entire workspace will be published as the repository.',
type: 'string',
},
enableLFS: {
title: 'Enable LFS?',
description: 'Enable LFS for the repository.',
type: 'boolean',
},
token: {
title: 'Authentication Token',
type: 'string',
description:
'The token to use for authorization to BitBucket Server',
},
gitCommitMessage: {
title: 'Git Commit Message',
type: 'string',
description: `Sets the commit message on the repository. The default value is 'initial commit'`,
},
gitAuthorName: {
title: 'Author Name',
type: 'string',
description: `Sets the author name for the commit. The default value is 'Scaffolder'`,
},
gitAuthorEmail: {
title: 'Author Email',
type: 'string',
description: `Sets the author email for the commit.`,
},
signCommit: {
title: 'Sign commit',
type: 'boolean',
description: 'Sign commit with configured PGP private key',
},
},
repoUrl: z =>
z.string({
description: 'Repository Location',
}),
description: z =>
z
.string({
description: 'Repository Description',
})
.optional(),
repoVisibility: z =>
z
.enum(['private', 'public'], {
description: 'Repository Visibility',
})
.optional(),
defaultBranch: z =>
z
.string({
description: `Sets the default branch on the repository. The default value is 'master'`,
})
.optional(),
sourcePath: z =>
z
.string({
description:
'Path within the workspace that will be used as the repository root. If omitted, the entire workspace will be published as the repository.',
})
.optional(),
enableLFS: z =>
z
.boolean({
description: 'Enable LFS for the repository.',
})
.optional(),
token: z =>
z
.string({
description:
'The token to use for authorization to BitBucket Server',
})
.optional(),
gitCommitMessage: z =>
z
.string({
description: `Sets the commit message on the repository. The default value is 'initial commit'`,
})
.optional(),
gitAuthorName: z =>
z
.string({
description: `Sets the author name for the commit. The default value is 'Scaffolder'`,
})
.optional(),
gitAuthorEmail: z =>
z
.string({
description: `Sets the author email for the commit.`,
})
.optional(),
signCommit: z =>
z
.boolean({
description: 'Sign commit with configured PGP private key',
})
.optional(),
},
output: {
type: 'object',
properties: {
remoteUrl: {
title: 'A URL to the repository with the provider',
type: 'string',
},
repoContentsUrl: {
title: 'A URL to the root of the repository',
type: 'string',
},
commitHash: {
title: 'The git commit hash of the initial commit',
type: 'string',
},
},
remoteUrl: z =>
z
.string({
description: 'A URL to the repository with the provider',
})
.optional(),
repoContentsUrl: z =>
z
.string({
description: 'A URL to the root of the repository',
})
.optional(),
commitHash: z =>
z
.string({
description: 'The git commit hash of the initial commit',
})
.optional(),
},
},
async handler(ctx) {
@@ -253,83 +253,69 @@ export function createPublishBitbucketServerPullRequestAction(options: {
}) {
const { integrations, config } = options;
return createTemplateAction<{
repoUrl: string;
title: string;
description?: string;
targetBranch?: string;
sourceBranch: string;
reviewers?: string[];
token?: string;
gitAuthorName?: string;
gitAuthorEmail?: string;
}>({
return createTemplateAction({
id: 'publish:bitbucketServer:pull-request',
examples,
schema: {
input: {
type: 'object',
required: ['repoUrl', 'title', 'sourceBranch'],
properties: {
repoUrl: {
title: 'Repository Location',
type: 'string',
},
title: {
title: 'Pull Request title',
type: 'string',
repoUrl: z =>
z.string({
description: 'Repository Location',
}),
title: z =>
z.string({
description: 'The title for the pull request',
},
description: {
title: 'Pull Request Description',
type: 'string',
description: 'The description of the pull request',
},
targetBranch: {
title: 'Target Branch',
type: 'string',
description: `Branch of repository to apply changes to. The default value is 'master'`,
},
sourceBranch: {
title: 'Source Branch',
type: 'string',
}),
description: z =>
z
.string({
description: 'The description of the pull request',
})
.optional(),
targetBranch: z =>
z
.string({
description: `Branch of repository to apply changes to. The default value is 'master'`,
})
.optional(),
sourceBranch: z =>
z.string({
description: 'Branch of repository to copy changes from',
},
reviewers: {
title: 'Pull Request Reviewers',
type: 'array',
items: {
type: 'string',
},
description:
'The usernames of reviewers that will be added to the pull request',
},
token: {
title: 'Authorization Token',
type: 'string',
description:
'The token to use for authorization to BitBucket Server',
},
gitAuthorName: {
title: 'Author Name',
type: 'string',
description: `Sets the author name for the commit. The default value is 'Scaffolder'`,
},
gitAuthorEmail: {
title: 'Author Email',
type: 'string',
description: `Sets the author email for the commit.`,
},
},
}),
reviewers: z =>
z
.array(z.string(), {
description:
'The usernames of reviewers that will be added to the pull request',
})
.optional(),
token: z =>
z
.string({
description:
'The token to use for authorization to BitBucket Server',
})
.optional(),
gitAuthorName: z =>
z
.string({
description: `Sets the author name for the commit. The default value is 'Scaffolder'`,
})
.optional(),
gitAuthorEmail: z =>
z
.string({
description: `Sets the author email for the commit.`,
})
.optional(),
},
output: {
type: 'object',
properties: {
pullRequestUrl: {
title: 'A URL to the pull request with the provider',
type: 'string',
},
},
pullRequestUrl: z =>
z
.string({
description: 'A URL to the pull request with the provider',
})
.optional(),
},
},
async handler(ctx) {
+1
View File
@@ -7466,6 +7466,7 @@ __metadata:
fs-extra: "npm:^11.2.0"
msw: "npm:^1.0.0"
yaml: "npm:^2.0.0"
zod: "npm:^3.22.4"
languageName: unknown
linkType: soft