@backstage/plugin-scaffolder-backend 1.15.0-next.1 → 1.15.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/alpha/package.json +1 -1
- package/dist/alpha.cjs.js +1 -1
- package/dist/cjs/{ScaffolderEntitiesProcessor-9c1b2955.cjs.js → ScaffolderEntitiesProcessor-8d851e94.cjs.js} +508 -12
- package/dist/cjs/ScaffolderEntitiesProcessor-8d851e94.cjs.js.map +1 -0
- package/dist/index.cjs.js +4 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +62 -1
- package/package.json +15 -15
- package/dist/cjs/ScaffolderEntitiesProcessor-9c1b2955.cjs.js.map +0 -1
|
@@ -1477,7 +1477,7 @@ async function createGithubRepoWithCollaboratorsAndTopics(client, repo, owner, r
|
|
|
1477
1477
|
name: repo,
|
|
1478
1478
|
org: owner,
|
|
1479
1479
|
private: repoVisibility === "private",
|
|
1480
|
-
// @ts-ignore
|
|
1480
|
+
// @ts-ignore https://github.com/octokit/types.ts/issues/522
|
|
1481
1481
|
visibility: repoVisibility,
|
|
1482
1482
|
description,
|
|
1483
1483
|
delete_branch_on_merge: deleteBranchOnMerge,
|
|
@@ -2421,6 +2421,260 @@ function createGithubWebhookAction(options) {
|
|
|
2421
2421
|
});
|
|
2422
2422
|
}
|
|
2423
2423
|
|
|
2424
|
+
function createGithubDeployKeyAction(options) {
|
|
2425
|
+
const { integrations } = options;
|
|
2426
|
+
return pluginScaffolderNode.createTemplateAction({
|
|
2427
|
+
id: "github:deployKey:create",
|
|
2428
|
+
description: "Creates and stores Deploy Keys",
|
|
2429
|
+
schema: {
|
|
2430
|
+
input: {
|
|
2431
|
+
type: "object",
|
|
2432
|
+
required: ["repoUrl", "publicKey", "privateKey", "deployKeyName"],
|
|
2433
|
+
properties: {
|
|
2434
|
+
repoUrl: {
|
|
2435
|
+
title: "Repository Location",
|
|
2436
|
+
description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,
|
|
2437
|
+
type: "string"
|
|
2438
|
+
},
|
|
2439
|
+
publicKey: {
|
|
2440
|
+
title: "SSH Public Key",
|
|
2441
|
+
description: `Generated from ssh-keygen. Begins with 'ssh-rsa', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'ssh-ed25519', 'sk-ecdsa-sha2-nistp256@openssh.com', or 'sk-ssh-ed25519@openssh.com'.`,
|
|
2442
|
+
type: "string"
|
|
2443
|
+
},
|
|
2444
|
+
privateKey: {
|
|
2445
|
+
title: "SSH Private Key",
|
|
2446
|
+
description: `SSH Private Key generated from ssh-keygen`,
|
|
2447
|
+
type: "string"
|
|
2448
|
+
},
|
|
2449
|
+
deployKeyName: {
|
|
2450
|
+
title: "Deploy Key Name",
|
|
2451
|
+
description: `Name of the Deploy Key`,
|
|
2452
|
+
type: "string"
|
|
2453
|
+
},
|
|
2454
|
+
privateKeySecretName: {
|
|
2455
|
+
title: "Private Key GitHub Secret Name",
|
|
2456
|
+
description: `Name of the GitHub Secret to store the private key related to the Deploy Key. Defaults to: 'KEY_NAME_PRIVATE_KEY' where 'KEY_NAME' is the name of the Deploy Key`,
|
|
2457
|
+
type: "string"
|
|
2458
|
+
},
|
|
2459
|
+
token: {
|
|
2460
|
+
title: "Authentication Token",
|
|
2461
|
+
type: "string",
|
|
2462
|
+
description: "The token to use for authorization to GitHub"
|
|
2463
|
+
}
|
|
2464
|
+
}
|
|
2465
|
+
},
|
|
2466
|
+
output: {
|
|
2467
|
+
type: "object",
|
|
2468
|
+
properties: {
|
|
2469
|
+
privateKeySecretName: {
|
|
2470
|
+
title: "The GitHub Action Repo Secret Name for the Private Key",
|
|
2471
|
+
type: "string"
|
|
2472
|
+
}
|
|
2473
|
+
}
|
|
2474
|
+
}
|
|
2475
|
+
},
|
|
2476
|
+
async handler(ctx) {
|
|
2477
|
+
const {
|
|
2478
|
+
repoUrl,
|
|
2479
|
+
publicKey,
|
|
2480
|
+
privateKey,
|
|
2481
|
+
deployKeyName,
|
|
2482
|
+
privateKeySecretName = `${deployKeyName.split(" ").join("_").toLocaleUpperCase("en-US")}_PRIVATE_KEY`,
|
|
2483
|
+
token: providedToken
|
|
2484
|
+
} = ctx.input;
|
|
2485
|
+
const octokitOptions = await getOctokitOptions({
|
|
2486
|
+
integrations,
|
|
2487
|
+
token: providedToken,
|
|
2488
|
+
repoUrl
|
|
2489
|
+
});
|
|
2490
|
+
const { owner, repo } = parseRepoUrl(repoUrl, integrations);
|
|
2491
|
+
if (!owner) {
|
|
2492
|
+
throw new errors.InputError(`No owner provided for repo ${repoUrl}`);
|
|
2493
|
+
}
|
|
2494
|
+
const client = new octokit.Octokit(octokitOptions);
|
|
2495
|
+
await client.rest.repos.createDeployKey({
|
|
2496
|
+
owner,
|
|
2497
|
+
repo,
|
|
2498
|
+
title: deployKeyName,
|
|
2499
|
+
key: publicKey
|
|
2500
|
+
});
|
|
2501
|
+
const publicKeyResponse = await client.rest.actions.getRepoPublicKey({
|
|
2502
|
+
owner,
|
|
2503
|
+
repo
|
|
2504
|
+
});
|
|
2505
|
+
await Sodium__default["default"].ready;
|
|
2506
|
+
const binaryKey = Sodium__default["default"].from_base64(
|
|
2507
|
+
publicKeyResponse.data.key,
|
|
2508
|
+
Sodium__default["default"].base64_variants.ORIGINAL
|
|
2509
|
+
);
|
|
2510
|
+
const binarySecret = Sodium__default["default"].from_string(privateKey);
|
|
2511
|
+
const encryptedBinarySecret = Sodium__default["default"].crypto_box_seal(
|
|
2512
|
+
binarySecret,
|
|
2513
|
+
binaryKey
|
|
2514
|
+
);
|
|
2515
|
+
const encryptedBase64Secret = Sodium__default["default"].to_base64(
|
|
2516
|
+
encryptedBinarySecret,
|
|
2517
|
+
Sodium__default["default"].base64_variants.ORIGINAL
|
|
2518
|
+
);
|
|
2519
|
+
await client.rest.actions.createOrUpdateRepoSecret({
|
|
2520
|
+
owner,
|
|
2521
|
+
repo,
|
|
2522
|
+
secret_name: privateKeySecretName,
|
|
2523
|
+
encrypted_value: encryptedBase64Secret,
|
|
2524
|
+
key_id: publicKeyResponse.data.key_id
|
|
2525
|
+
});
|
|
2526
|
+
ctx.output("privateKeySecretName", privateKeySecretName);
|
|
2527
|
+
}
|
|
2528
|
+
});
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2531
|
+
function createGithubEnvironmentAction(options) {
|
|
2532
|
+
const { integrations } = options;
|
|
2533
|
+
return pluginScaffolderNode.createTemplateAction({
|
|
2534
|
+
id: "github:environment:create",
|
|
2535
|
+
description: "Creates Deployment Environments",
|
|
2536
|
+
schema: {
|
|
2537
|
+
input: {
|
|
2538
|
+
type: "object",
|
|
2539
|
+
required: ["repoUrl", "name"],
|
|
2540
|
+
properties: {
|
|
2541
|
+
repoUrl: {
|
|
2542
|
+
title: "Repository Location",
|
|
2543
|
+
description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,
|
|
2544
|
+
type: "string"
|
|
2545
|
+
},
|
|
2546
|
+
name: {
|
|
2547
|
+
title: "Environment Name",
|
|
2548
|
+
description: `Name of the deployment environment to create`,
|
|
2549
|
+
type: "string"
|
|
2550
|
+
},
|
|
2551
|
+
deploymentBranchPolicy: {
|
|
2552
|
+
title: "Deployment Branch Policy",
|
|
2553
|
+
description: `The type of deployment branch policy for this environment. To allow all branches to deploy, set to null.`,
|
|
2554
|
+
type: "object",
|
|
2555
|
+
required: ["protected_branches", "custom_branch_policies"],
|
|
2556
|
+
properties: {
|
|
2557
|
+
protected_branches: {
|
|
2558
|
+
title: "Protected Branches",
|
|
2559
|
+
description: `Whether only branches with branch protection rules can deploy to this environment. If protected_branches is true, custom_branch_policies must be false; if protected_branches is false, custom_branch_policies must be true.`,
|
|
2560
|
+
type: "boolean"
|
|
2561
|
+
},
|
|
2562
|
+
custom_branch_policies: {
|
|
2563
|
+
title: "Custom Branch Policies",
|
|
2564
|
+
description: `Whether only branches that match the specified name patterns can deploy to this environment. If custom_branch_policies is true, protected_branches must be false; if custom_branch_policies is false, protected_branches must be true.`,
|
|
2565
|
+
type: "boolean"
|
|
2566
|
+
}
|
|
2567
|
+
}
|
|
2568
|
+
},
|
|
2569
|
+
customBranchPolicyNames: {
|
|
2570
|
+
title: "Custom Branch Policy Name",
|
|
2571
|
+
description: `The name pattern that branches must match in order to deploy to the environment.
|
|
2572
|
+
|
|
2573
|
+
Wildcard characters will not match /. For example, to match branches that begin with release/ and contain an additional single slash, use release/*/*. For more information about pattern matching syntax, see the Ruby File.fnmatch documentation.`,
|
|
2574
|
+
type: "array",
|
|
2575
|
+
items: {
|
|
2576
|
+
type: "string"
|
|
2577
|
+
}
|
|
2578
|
+
},
|
|
2579
|
+
environmentVariables: {
|
|
2580
|
+
title: "Environment Variables",
|
|
2581
|
+
description: `Environment variables attached to the deployment environment`,
|
|
2582
|
+
type: "object"
|
|
2583
|
+
},
|
|
2584
|
+
secrets: {
|
|
2585
|
+
title: "Deployment Secrets",
|
|
2586
|
+
description: `Secrets attached to the deployment environment`,
|
|
2587
|
+
type: "object"
|
|
2588
|
+
},
|
|
2589
|
+
token: {
|
|
2590
|
+
title: "Authentication Token",
|
|
2591
|
+
type: "string",
|
|
2592
|
+
description: "The token to use for authorization to GitHub"
|
|
2593
|
+
}
|
|
2594
|
+
}
|
|
2595
|
+
}
|
|
2596
|
+
},
|
|
2597
|
+
async handler(ctx) {
|
|
2598
|
+
const {
|
|
2599
|
+
repoUrl,
|
|
2600
|
+
name,
|
|
2601
|
+
deploymentBranchPolicy,
|
|
2602
|
+
customBranchPolicyNames,
|
|
2603
|
+
environmentVariables,
|
|
2604
|
+
secrets,
|
|
2605
|
+
token: providedToken
|
|
2606
|
+
} = ctx.input;
|
|
2607
|
+
const octokitOptions = await getOctokitOptions({
|
|
2608
|
+
integrations,
|
|
2609
|
+
token: providedToken,
|
|
2610
|
+
repoUrl
|
|
2611
|
+
});
|
|
2612
|
+
const { owner, repo } = parseRepoUrl(repoUrl, integrations);
|
|
2613
|
+
if (!owner) {
|
|
2614
|
+
throw new errors.InputError(`No owner provided for repo ${repoUrl}`);
|
|
2615
|
+
}
|
|
2616
|
+
const client = new octokit.Octokit(octokitOptions);
|
|
2617
|
+
const repository = await client.rest.repos.get({
|
|
2618
|
+
owner,
|
|
2619
|
+
repo
|
|
2620
|
+
});
|
|
2621
|
+
await client.rest.repos.createOrUpdateEnvironment({
|
|
2622
|
+
owner,
|
|
2623
|
+
repo,
|
|
2624
|
+
environment_name: name,
|
|
2625
|
+
deployment_branch_policy: deploymentBranchPolicy != null ? deploymentBranchPolicy : null
|
|
2626
|
+
});
|
|
2627
|
+
if (customBranchPolicyNames) {
|
|
2628
|
+
for (const item of customBranchPolicyNames) {
|
|
2629
|
+
await client.rest.repos.createDeploymentBranchPolicy({
|
|
2630
|
+
owner,
|
|
2631
|
+
repo,
|
|
2632
|
+
environment_name: name,
|
|
2633
|
+
name: item
|
|
2634
|
+
});
|
|
2635
|
+
}
|
|
2636
|
+
}
|
|
2637
|
+
for (const [key, value] of Object.entries(environmentVariables != null ? environmentVariables : {})) {
|
|
2638
|
+
await client.rest.actions.createEnvironmentVariable({
|
|
2639
|
+
repository_id: repository.data.id,
|
|
2640
|
+
environment_name: name,
|
|
2641
|
+
name: key,
|
|
2642
|
+
value
|
|
2643
|
+
});
|
|
2644
|
+
}
|
|
2645
|
+
if (secrets) {
|
|
2646
|
+
const publicKeyResponse = await client.rest.actions.getRepoPublicKey({
|
|
2647
|
+
owner,
|
|
2648
|
+
repo
|
|
2649
|
+
});
|
|
2650
|
+
await Sodium__default["default"].ready;
|
|
2651
|
+
const binaryKey = Sodium__default["default"].from_base64(
|
|
2652
|
+
publicKeyResponse.data.key,
|
|
2653
|
+
Sodium__default["default"].base64_variants.ORIGINAL
|
|
2654
|
+
);
|
|
2655
|
+
for (const [key, value] of Object.entries(secrets)) {
|
|
2656
|
+
const binarySecret = Sodium__default["default"].from_string(value);
|
|
2657
|
+
const encryptedBinarySecret = Sodium__default["default"].crypto_box_seal(
|
|
2658
|
+
binarySecret,
|
|
2659
|
+
binaryKey
|
|
2660
|
+
);
|
|
2661
|
+
const encryptedBase64Secret = Sodium__default["default"].to_base64(
|
|
2662
|
+
encryptedBinarySecret,
|
|
2663
|
+
Sodium__default["default"].base64_variants.ORIGINAL
|
|
2664
|
+
);
|
|
2665
|
+
await client.rest.actions.createOrUpdateEnvironmentSecret({
|
|
2666
|
+
repository_id: repository.data.id,
|
|
2667
|
+
environment_name: name,
|
|
2668
|
+
secret_name: key,
|
|
2669
|
+
encrypted_value: encryptedBase64Secret,
|
|
2670
|
+
key_id: publicKeyResponse.data.key_id
|
|
2671
|
+
});
|
|
2672
|
+
}
|
|
2673
|
+
}
|
|
2674
|
+
}
|
|
2675
|
+
});
|
|
2676
|
+
}
|
|
2677
|
+
|
|
2424
2678
|
function createPublishAzureAction(options) {
|
|
2425
2679
|
const { integrations, config } = options;
|
|
2426
2680
|
return pluginScaffolderNode.createTemplateAction({
|
|
@@ -3273,6 +3527,203 @@ function createPublishBitbucketServerAction(options) {
|
|
|
3273
3527
|
});
|
|
3274
3528
|
}
|
|
3275
3529
|
|
|
3530
|
+
const createPullRequest = async (opts) => {
|
|
3531
|
+
const {
|
|
3532
|
+
project,
|
|
3533
|
+
repo,
|
|
3534
|
+
title,
|
|
3535
|
+
description,
|
|
3536
|
+
toRef,
|
|
3537
|
+
fromRef,
|
|
3538
|
+
authorization,
|
|
3539
|
+
apiBaseUrl
|
|
3540
|
+
} = opts;
|
|
3541
|
+
let response;
|
|
3542
|
+
const data = {
|
|
3543
|
+
method: "POST",
|
|
3544
|
+
body: JSON.stringify({
|
|
3545
|
+
title,
|
|
3546
|
+
description,
|
|
3547
|
+
state: "OPEN",
|
|
3548
|
+
open: true,
|
|
3549
|
+
closed: false,
|
|
3550
|
+
locked: true,
|
|
3551
|
+
toRef,
|
|
3552
|
+
fromRef
|
|
3553
|
+
}),
|
|
3554
|
+
headers: {
|
|
3555
|
+
Authorization: authorization,
|
|
3556
|
+
"Content-Type": "application/json"
|
|
3557
|
+
}
|
|
3558
|
+
};
|
|
3559
|
+
try {
|
|
3560
|
+
response = await fetch__default["default"](
|
|
3561
|
+
`${apiBaseUrl}/projects/${encodeURIComponent(
|
|
3562
|
+
project
|
|
3563
|
+
)}/repos/${encodeURIComponent(repo)}/pull-requests`,
|
|
3564
|
+
data
|
|
3565
|
+
);
|
|
3566
|
+
} catch (e) {
|
|
3567
|
+
throw new Error(`Unable to create pull-reqeusts, ${e}`);
|
|
3568
|
+
}
|
|
3569
|
+
if (response.status !== 201) {
|
|
3570
|
+
throw new Error(
|
|
3571
|
+
`Unable to create pull requests, ${response.status} ${response.statusText}, ${await response.text()}`
|
|
3572
|
+
);
|
|
3573
|
+
}
|
|
3574
|
+
const r = await response.json();
|
|
3575
|
+
return `${r.links.self[0].href}`;
|
|
3576
|
+
};
|
|
3577
|
+
const findBranches = async (opts) => {
|
|
3578
|
+
const { project, repo, branchName, authorization, apiBaseUrl } = opts;
|
|
3579
|
+
let response;
|
|
3580
|
+
const options = {
|
|
3581
|
+
method: "GET",
|
|
3582
|
+
headers: {
|
|
3583
|
+
Authorization: authorization,
|
|
3584
|
+
"Content-Type": "application/json"
|
|
3585
|
+
}
|
|
3586
|
+
};
|
|
3587
|
+
try {
|
|
3588
|
+
response = await fetch__default["default"](
|
|
3589
|
+
`${apiBaseUrl}/projects/${encodeURIComponent(
|
|
3590
|
+
project
|
|
3591
|
+
)}/repos/${encodeURIComponent(
|
|
3592
|
+
repo
|
|
3593
|
+
)}/branches?boostMatches=true&filterText=${encodeURIComponent(
|
|
3594
|
+
branchName
|
|
3595
|
+
)}`,
|
|
3596
|
+
options
|
|
3597
|
+
);
|
|
3598
|
+
} catch (e) {
|
|
3599
|
+
throw new Error(`Unable to get branches, ${e}`);
|
|
3600
|
+
}
|
|
3601
|
+
if (response.status !== 200) {
|
|
3602
|
+
throw new Error(
|
|
3603
|
+
`Unable to get branches, ${response.status} ${response.statusText}, ${await response.text()}`
|
|
3604
|
+
);
|
|
3605
|
+
}
|
|
3606
|
+
const r = await response.json();
|
|
3607
|
+
for (const object of r.values) {
|
|
3608
|
+
if (object.displayId === branchName) {
|
|
3609
|
+
return object;
|
|
3610
|
+
}
|
|
3611
|
+
}
|
|
3612
|
+
return void 0;
|
|
3613
|
+
};
|
|
3614
|
+
function createPublishBitbucketServerPullRequestAction(options) {
|
|
3615
|
+
const { integrations } = options;
|
|
3616
|
+
return pluginScaffolderNode.createTemplateAction({
|
|
3617
|
+
id: "publish:bitbucketServer:pull-request",
|
|
3618
|
+
schema: {
|
|
3619
|
+
input: {
|
|
3620
|
+
type: "object",
|
|
3621
|
+
required: ["repoUrl", "title", "sourceBranch"],
|
|
3622
|
+
properties: {
|
|
3623
|
+
repoUrl: {
|
|
3624
|
+
title: "Repository Location",
|
|
3625
|
+
type: "string"
|
|
3626
|
+
},
|
|
3627
|
+
title: {
|
|
3628
|
+
title: "Pull Request title",
|
|
3629
|
+
type: "string",
|
|
3630
|
+
description: "The title for the pull request"
|
|
3631
|
+
},
|
|
3632
|
+
description: {
|
|
3633
|
+
title: "Pull Request Description",
|
|
3634
|
+
type: "string",
|
|
3635
|
+
description: "The description of the pull request"
|
|
3636
|
+
},
|
|
3637
|
+
targetBranch: {
|
|
3638
|
+
title: "Target Branch",
|
|
3639
|
+
type: "string",
|
|
3640
|
+
description: `Branch of repository to apply changes to. The default value is 'master'`
|
|
3641
|
+
},
|
|
3642
|
+
sourceBranch: {
|
|
3643
|
+
title: "Source Branch",
|
|
3644
|
+
type: "string",
|
|
3645
|
+
description: "Branch of repository to copy changes from"
|
|
3646
|
+
},
|
|
3647
|
+
token: {
|
|
3648
|
+
title: "Authorization Token",
|
|
3649
|
+
type: "string",
|
|
3650
|
+
description: "The token to use for authorization to BitBucket Server"
|
|
3651
|
+
}
|
|
3652
|
+
}
|
|
3653
|
+
},
|
|
3654
|
+
output: {
|
|
3655
|
+
type: "object",
|
|
3656
|
+
properties: {
|
|
3657
|
+
pullRequestUrl: {
|
|
3658
|
+
title: "A URL to the pull request with the provider",
|
|
3659
|
+
type: "string"
|
|
3660
|
+
}
|
|
3661
|
+
}
|
|
3662
|
+
}
|
|
3663
|
+
},
|
|
3664
|
+
async handler(ctx) {
|
|
3665
|
+
var _a;
|
|
3666
|
+
const {
|
|
3667
|
+
repoUrl,
|
|
3668
|
+
title,
|
|
3669
|
+
description,
|
|
3670
|
+
targetBranch = "master",
|
|
3671
|
+
sourceBranch
|
|
3672
|
+
} = ctx.input;
|
|
3673
|
+
const { project, repo, host } = parseRepoUrl(repoUrl, integrations);
|
|
3674
|
+
if (!project) {
|
|
3675
|
+
throw new errors.InputError(
|
|
3676
|
+
`Invalid URL provider was included in the repo URL to create ${ctx.input.repoUrl}, missing project`
|
|
3677
|
+
);
|
|
3678
|
+
}
|
|
3679
|
+
const integrationConfig = integrations.bitbucketServer.byHost(host);
|
|
3680
|
+
if (!integrationConfig) {
|
|
3681
|
+
throw new errors.InputError(
|
|
3682
|
+
`No matching integration configuration for host ${host}, please check your integrations config`
|
|
3683
|
+
);
|
|
3684
|
+
}
|
|
3685
|
+
const token = (_a = ctx.input.token) != null ? _a : integrationConfig.config.token;
|
|
3686
|
+
const authConfig = {
|
|
3687
|
+
...integrationConfig.config,
|
|
3688
|
+
...{ token }
|
|
3689
|
+
};
|
|
3690
|
+
const reqOpts = integration.getBitbucketServerRequestOptions(authConfig);
|
|
3691
|
+
const authorization = reqOpts.headers.Authorization;
|
|
3692
|
+
if (!authorization) {
|
|
3693
|
+
throw new Error(
|
|
3694
|
+
`Authorization has not been provided for ${integrationConfig.config.host}. Please add either (a) a user login auth token, or (b) a token input from the template or (c) username + password to the integration config.`
|
|
3695
|
+
);
|
|
3696
|
+
}
|
|
3697
|
+
const apiBaseUrl = integrationConfig.config.apiBaseUrl;
|
|
3698
|
+
const toRef = await findBranches({
|
|
3699
|
+
project,
|
|
3700
|
+
repo,
|
|
3701
|
+
branchName: targetBranch,
|
|
3702
|
+
authorization,
|
|
3703
|
+
apiBaseUrl
|
|
3704
|
+
});
|
|
3705
|
+
const fromRef = await findBranches({
|
|
3706
|
+
project,
|
|
3707
|
+
repo,
|
|
3708
|
+
branchName: sourceBranch,
|
|
3709
|
+
authorization,
|
|
3710
|
+
apiBaseUrl
|
|
3711
|
+
});
|
|
3712
|
+
const pullRequestUrl = await createPullRequest({
|
|
3713
|
+
project,
|
|
3714
|
+
repo,
|
|
3715
|
+
title,
|
|
3716
|
+
description,
|
|
3717
|
+
toRef,
|
|
3718
|
+
fromRef,
|
|
3719
|
+
authorization,
|
|
3720
|
+
apiBaseUrl
|
|
3721
|
+
});
|
|
3722
|
+
ctx.output("pullRequestUrl", pullRequestUrl);
|
|
3723
|
+
}
|
|
3724
|
+
});
|
|
3725
|
+
}
|
|
3726
|
+
|
|
3276
3727
|
const createGerritProject = async (config, options) => {
|
|
3277
3728
|
const { projectName, parent, owner, description } = options;
|
|
3278
3729
|
const fetchOptions = {
|
|
@@ -3811,6 +4262,11 @@ const createPublishGithubPullRequestAction = (options) => {
|
|
|
3811
4262
|
title: "Branch Name",
|
|
3812
4263
|
description: "The name for the branch"
|
|
3813
4264
|
},
|
|
4265
|
+
targetBranchName: {
|
|
4266
|
+
type: "string",
|
|
4267
|
+
title: "Target Branch Name",
|
|
4268
|
+
description: "The target branch name of the merge request"
|
|
4269
|
+
},
|
|
3814
4270
|
title: {
|
|
3815
4271
|
type: "string",
|
|
3816
4272
|
title: "Pull Request Name",
|
|
@@ -3868,6 +4324,10 @@ const createPublishGithubPullRequestAction = (options) => {
|
|
|
3868
4324
|
required: ["remoteUrl"],
|
|
3869
4325
|
type: "object",
|
|
3870
4326
|
properties: {
|
|
4327
|
+
targetBranchName: {
|
|
4328
|
+
title: "Target branch name of the merge request",
|
|
4329
|
+
type: "string"
|
|
4330
|
+
},
|
|
3871
4331
|
remoteUrl: {
|
|
3872
4332
|
type: "string",
|
|
3873
4333
|
title: "Pull Request URL",
|
|
@@ -3885,6 +4345,7 @@ const createPublishGithubPullRequestAction = (options) => {
|
|
|
3885
4345
|
const {
|
|
3886
4346
|
repoUrl,
|
|
3887
4347
|
branchName,
|
|
4348
|
+
targetBranchName,
|
|
3888
4349
|
title,
|
|
3889
4350
|
description,
|
|
3890
4351
|
draft,
|
|
@@ -3941,7 +4402,7 @@ const createPublishGithubPullRequestAction = (options) => {
|
|
|
3941
4402
|
])
|
|
3942
4403
|
);
|
|
3943
4404
|
try {
|
|
3944
|
-
const
|
|
4405
|
+
const createOptions = {
|
|
3945
4406
|
owner,
|
|
3946
4407
|
repo,
|
|
3947
4408
|
title,
|
|
@@ -3954,7 +4415,11 @@ const createPublishGithubPullRequestAction = (options) => {
|
|
|
3954
4415
|
body: description,
|
|
3955
4416
|
head: branchName,
|
|
3956
4417
|
draft
|
|
3957
|
-
}
|
|
4418
|
+
};
|
|
4419
|
+
if (targetBranchName) {
|
|
4420
|
+
createOptions.base = targetBranchName;
|
|
4421
|
+
}
|
|
4422
|
+
const response = await client.createPullRequest(createOptions);
|
|
3958
4423
|
if (!response) {
|
|
3959
4424
|
throw new GithubResponseError("null response from Github");
|
|
3960
4425
|
}
|
|
@@ -3969,6 +4434,8 @@ const createPublishGithubPullRequestAction = (options) => {
|
|
|
3969
4434
|
ctx.logger
|
|
3970
4435
|
);
|
|
3971
4436
|
}
|
|
4437
|
+
const targetBranch = response.data.base.ref;
|
|
4438
|
+
ctx.output("targetBranchName", targetBranch);
|
|
3972
4439
|
ctx.output("remoteUrl", response.data.html_url);
|
|
3973
4440
|
ctx.output("pullRequestNumber", pullRequestNumber);
|
|
3974
4441
|
} catch (e) {
|
|
@@ -4012,7 +4479,8 @@ function createPublishGitlabAction(options) {
|
|
|
4012
4479
|
properties: {
|
|
4013
4480
|
repoUrl: {
|
|
4014
4481
|
title: "Repository Location",
|
|
4015
|
-
type: "string"
|
|
4482
|
+
type: "string",
|
|
4483
|
+
description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`
|
|
4016
4484
|
},
|
|
4017
4485
|
repoVisibility: {
|
|
4018
4486
|
title: "Repository Visibility",
|
|
@@ -4174,7 +4642,7 @@ const createPublishGitlabMergeRequestAction = (options) => {
|
|
|
4174
4642
|
repoUrl: {
|
|
4175
4643
|
type: "string",
|
|
4176
4644
|
title: "Repository Location",
|
|
4177
|
-
description: `Accepts the format 'gitlab.com
|
|
4645
|
+
description: `Accepts the format 'gitlab.com?repo=project_name&owner=group_name' where 'project_name' is the repository name and 'group_name' is a group or username`
|
|
4178
4646
|
},
|
|
4179
4647
|
/** @deprecated projectID is passed as query parameters in the repoUrl */
|
|
4180
4648
|
projectid: {
|
|
@@ -4194,8 +4662,13 @@ const createPublishGitlabMergeRequestAction = (options) => {
|
|
|
4194
4662
|
},
|
|
4195
4663
|
branchName: {
|
|
4196
4664
|
type: "string",
|
|
4197
|
-
title: "
|
|
4198
|
-
description: "The
|
|
4665
|
+
title: "Source Branch Name",
|
|
4666
|
+
description: "The source branch name of the merge request"
|
|
4667
|
+
},
|
|
4668
|
+
targetBranchName: {
|
|
4669
|
+
type: "string",
|
|
4670
|
+
title: "Target Branch Name",
|
|
4671
|
+
description: "The target branch name of the merge request"
|
|
4199
4672
|
},
|
|
4200
4673
|
sourcePath: {
|
|
4201
4674
|
type: "string",
|
|
@@ -4233,6 +4706,10 @@ const createPublishGitlabMergeRequestAction = (options) => {
|
|
|
4233
4706
|
output: {
|
|
4234
4707
|
type: "object",
|
|
4235
4708
|
properties: {
|
|
4709
|
+
targetBranchName: {
|
|
4710
|
+
title: "Target branch name of the merge request",
|
|
4711
|
+
type: "string"
|
|
4712
|
+
},
|
|
4236
4713
|
projectid: {
|
|
4237
4714
|
title: "Gitlab Project id/Name(slug)",
|
|
4238
4715
|
type: "string"
|
|
@@ -4253,6 +4730,7 @@ const createPublishGitlabMergeRequestAction = (options) => {
|
|
|
4253
4730
|
const {
|
|
4254
4731
|
assignee,
|
|
4255
4732
|
branchName,
|
|
4733
|
+
targetBranchName,
|
|
4256
4734
|
description,
|
|
4257
4735
|
repoUrl,
|
|
4258
4736
|
removeSourceBranch,
|
|
@@ -4313,10 +4791,14 @@ const createPublishGitlabMergeRequestAction = (options) => {
|
|
|
4313
4791
|
execute_filemode: file.executable
|
|
4314
4792
|
};
|
|
4315
4793
|
});
|
|
4316
|
-
|
|
4317
|
-
|
|
4794
|
+
let targetBranch = targetBranchName;
|
|
4795
|
+
if (!targetBranch) {
|
|
4796
|
+
const projects = await api.Projects.show(repoID);
|
|
4797
|
+
const { default_branch: defaultBranch } = projects;
|
|
4798
|
+
targetBranch = defaultBranch;
|
|
4799
|
+
}
|
|
4318
4800
|
try {
|
|
4319
|
-
await api.Branches.create(repoID, branchName, String(
|
|
4801
|
+
await api.Branches.create(repoID, branchName, String(targetBranch));
|
|
4320
4802
|
} catch (e) {
|
|
4321
4803
|
throw new errors.InputError(
|
|
4322
4804
|
`The branch creation failed. Please check that your repo does not already contain a branch named '${branchName}'. ${e}`
|
|
@@ -4333,7 +4815,7 @@ const createPublishGitlabMergeRequestAction = (options) => {
|
|
|
4333
4815
|
const mergeRequestUrl = await api.MergeRequests.create(
|
|
4334
4816
|
repoID,
|
|
4335
4817
|
branchName,
|
|
4336
|
-
String(
|
|
4818
|
+
String(targetBranch),
|
|
4337
4819
|
title,
|
|
4338
4820
|
{
|
|
4339
4821
|
description,
|
|
@@ -4344,6 +4826,7 @@ const createPublishGitlabMergeRequestAction = (options) => {
|
|
|
4344
4826
|
return mergeRequest.web_url;
|
|
4345
4827
|
});
|
|
4346
4828
|
ctx.output("projectid", repoID);
|
|
4829
|
+
ctx.output("targetBranchName", targetBranch);
|
|
4347
4830
|
ctx.output("projectPath", repoID);
|
|
4348
4831
|
ctx.output("mergeRequestUrl", mergeRequestUrl);
|
|
4349
4832
|
} catch (e) {
|
|
@@ -4414,6 +4897,10 @@ const createBuiltinActions = (options) => {
|
|
|
4414
4897
|
integrations,
|
|
4415
4898
|
config
|
|
4416
4899
|
}),
|
|
4900
|
+
createPublishBitbucketServerPullRequestAction({
|
|
4901
|
+
integrations,
|
|
4902
|
+
config
|
|
4903
|
+
}),
|
|
4417
4904
|
createPublishAzureAction({
|
|
4418
4905
|
integrations,
|
|
4419
4906
|
config
|
|
@@ -4445,6 +4932,12 @@ const createBuiltinActions = (options) => {
|
|
|
4445
4932
|
integrations,
|
|
4446
4933
|
config,
|
|
4447
4934
|
githubCredentialsProvider
|
|
4935
|
+
}),
|
|
4936
|
+
createGithubEnvironmentAction({
|
|
4937
|
+
integrations
|
|
4938
|
+
}),
|
|
4939
|
+
createGithubDeployKeyAction({
|
|
4940
|
+
integrations
|
|
4448
4941
|
})
|
|
4449
4942
|
];
|
|
4450
4943
|
return actions;
|
|
@@ -6224,6 +6717,8 @@ exports.createFetchTemplateAction = createFetchTemplateAction;
|
|
|
6224
6717
|
exports.createFilesystemDeleteAction = createFilesystemDeleteAction;
|
|
6225
6718
|
exports.createFilesystemRenameAction = createFilesystemRenameAction;
|
|
6226
6719
|
exports.createGithubActionsDispatchAction = createGithubActionsDispatchAction;
|
|
6720
|
+
exports.createGithubDeployKeyAction = createGithubDeployKeyAction;
|
|
6721
|
+
exports.createGithubEnvironmentAction = createGithubEnvironmentAction;
|
|
6227
6722
|
exports.createGithubIssuesLabelAction = createGithubIssuesLabelAction;
|
|
6228
6723
|
exports.createGithubRepoCreateAction = createGithubRepoCreateAction;
|
|
6229
6724
|
exports.createGithubRepoPushAction = createGithubRepoPushAction;
|
|
@@ -6232,6 +6727,7 @@ exports.createPublishAzureAction = createPublishAzureAction;
|
|
|
6232
6727
|
exports.createPublishBitbucketAction = createPublishBitbucketAction;
|
|
6233
6728
|
exports.createPublishBitbucketCloudAction = createPublishBitbucketCloudAction;
|
|
6234
6729
|
exports.createPublishBitbucketServerAction = createPublishBitbucketServerAction;
|
|
6730
|
+
exports.createPublishBitbucketServerPullRequestAction = createPublishBitbucketServerPullRequestAction;
|
|
6235
6731
|
exports.createPublishGerritAction = createPublishGerritAction;
|
|
6236
6732
|
exports.createPublishGerritReviewAction = createPublishGerritReviewAction;
|
|
6237
6733
|
exports.createPublishGithubAction = createPublishGithubAction;
|
|
@@ -6244,4 +6740,4 @@ exports.executeShellCommand = executeShellCommand;
|
|
|
6244
6740
|
exports.fetchContents = fetchContents;
|
|
6245
6741
|
exports.scaffolderActionRules = scaffolderActionRules;
|
|
6246
6742
|
exports.scaffolderTemplateRules = scaffolderTemplateRules;
|
|
6247
|
-
//# sourceMappingURL=ScaffolderEntitiesProcessor-
|
|
6743
|
+
//# sourceMappingURL=ScaffolderEntitiesProcessor-8d851e94.cjs.js.map
|