@backstage/plugin-scaffolder-backend-module-github 0.5.2-next.1 → 0.5.2-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 +26 -0
- package/dist/actions/gitHelpers.cjs.js.map +1 -1
- package/dist/actions/gitHubEnvironment.examples.cjs.js.map +1 -1
- package/dist/actions/github.cjs.js.map +1 -1
- package/dist/actions/github.examples.cjs.js.map +1 -1
- package/dist/actions/githubActionsDispatch.cjs.js.map +1 -1
- package/dist/actions/githubActionsDispatch.examples.cjs.js.map +1 -1
- package/dist/actions/githubAutolinks.cjs.js.map +1 -1
- package/dist/actions/githubAutolinks.examples.cjs.js.map +1 -1
- package/dist/actions/githubBranchProtection.cjs.js.map +1 -1
- package/dist/actions/githubBranchProtection.examples.cjs.js.map +1 -1
- package/dist/actions/githubDeployKey.cjs.js.map +1 -1
- package/dist/actions/githubDeployKey.examples.cjs.js.map +1 -1
- package/dist/actions/githubEnvironment.cjs.js.map +1 -1
- package/dist/actions/githubIssuesLabel.cjs.js.map +1 -1
- package/dist/actions/githubIssuesLabel.examples.cjs.js.map +1 -1
- package/dist/actions/githubPagesEnable.cjs.js.map +1 -1
- package/dist/actions/githubPagesEnable.examples.cjs.js.map +1 -1
- package/dist/actions/githubPullRequest.cjs.js.map +1 -1
- package/dist/actions/githubPullRequest.examples.cjs.js.map +1 -1
- package/dist/actions/githubRepoCreate.cjs.js.map +1 -1
- package/dist/actions/githubRepoCreate.examples.cjs.js.map +1 -1
- package/dist/actions/githubRepoPush.cjs.js.map +1 -1
- package/dist/actions/githubRepoPush.examples.cjs.js.map +1 -1
- package/dist/actions/githubWebhook.cjs.js.map +1 -1
- package/dist/actions/githubWebhook.examples.cjs.js.map +1 -1
- package/dist/actions/helpers.cjs.js.map +1 -1
- package/dist/actions/inputProperties.cjs.js.map +1 -1
- package/dist/actions/outputProperties.cjs.js.map +1 -1
- package/dist/module.cjs.js.map +1 -1
- package/package.json +14 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @backstage/plugin-scaffolder-backend-module-github
|
|
2
2
|
|
|
3
|
+
## 0.5.2-next.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- @backstage/backend-plugin-api@1.0.2-next.2
|
|
9
|
+
- @backstage/catalog-client@1.8.0-next.1
|
|
10
|
+
- @backstage/catalog-model@1.7.0
|
|
11
|
+
- @backstage/config@1.2.0
|
|
12
|
+
- @backstage/errors@1.2.4
|
|
13
|
+
- @backstage/integration@1.15.1
|
|
14
|
+
- @backstage/plugin-scaffolder-node@0.5.1-next.3
|
|
15
|
+
|
|
16
|
+
## 0.5.2-next.2
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Updated dependencies
|
|
21
|
+
- @backstage/catalog-client@1.8.0-next.1
|
|
22
|
+
- @backstage/backend-plugin-api@1.0.2-next.2
|
|
23
|
+
- @backstage/catalog-model@1.7.0
|
|
24
|
+
- @backstage/config@1.2.0
|
|
25
|
+
- @backstage/errors@1.2.4
|
|
26
|
+
- @backstage/integration@1.15.1
|
|
27
|
+
- @backstage/plugin-scaffolder-node@0.5.1-next.2
|
|
28
|
+
|
|
3
29
|
## 0.5.2-next.1
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitHelpers.cjs.js","sources":["../../src/actions/gitHelpers.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertError } from '@backstage/errors';\nimport { Octokit } from 'octokit';\nimport { LoggerService } from '@backstage/backend-plugin-api';\n\ntype BranchProtectionOptions = {\n client: Octokit;\n owner: string;\n repoName: string;\n logger: LoggerService;\n requireCodeOwnerReviews: boolean;\n requiredStatusCheckContexts?: string[];\n bypassPullRequestAllowances?: {\n users?: string[];\n teams?: string[];\n apps?: string[];\n };\n requiredApprovingReviewCount?: number;\n restrictions?: {\n users: string[];\n teams: string[];\n apps?: string[];\n };\n requireBranchesToBeUpToDate?: boolean;\n requiredConversationResolution?: boolean;\n requireLastPushApproval: boolean;\n defaultBranch?: string;\n enforceAdmins?: boolean;\n dismissStaleReviews?: boolean;\n requiredCommitSigning?: boolean;\n};\n\nexport const enableBranchProtectionOnDefaultRepoBranch = async ({\n repoName,\n client,\n owner,\n logger,\n requireCodeOwnerReviews,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount,\n restrictions,\n requiredStatusCheckContexts = [],\n requireBranchesToBeUpToDate = true,\n requiredConversationResolution = false,\n requireLastPushApproval = false,\n defaultBranch = 'master',\n enforceAdmins = true,\n dismissStaleReviews = false,\n requiredCommitSigning = false,\n}: BranchProtectionOptions): Promise<void> => {\n const tryOnce = async () => {\n try {\n await client.rest.repos.updateBranchProtection({\n mediaType: {\n /**\n * 👇 we need this preview because allowing a custom\n * reviewer count on branch protection is a preview\n * feature\n *\n * More here: https://docs.github.com/en/rest/overview/api-previews#require-multiple-approving-reviews\n */\n previews: ['luke-cage-preview'],\n },\n owner,\n repo: repoName,\n branch: defaultBranch,\n required_status_checks: {\n strict: requireBranchesToBeUpToDate,\n contexts: requiredStatusCheckContexts,\n },\n restrictions: restrictions ?? null,\n enforce_admins: enforceAdmins,\n required_pull_request_reviews: {\n required_approving_review_count: requiredApprovingReviewCount,\n require_code_owner_reviews: requireCodeOwnerReviews,\n bypass_pull_request_allowances: bypassPullRequestAllowances,\n dismiss_stale_reviews: dismissStaleReviews,\n require_last_push_approval: requireLastPushApproval,\n },\n required_conversation_resolution: requiredConversationResolution,\n });\n\n if (requiredCommitSigning) {\n await client.rest.repos.createCommitSignatureProtection({\n owner,\n repo: repoName,\n branch: defaultBranch,\n });\n }\n } catch (e) {\n assertError(e);\n if (\n e.message.includes(\n 'Upgrade to GitHub Pro or make this repository public to enable this feature',\n )\n ) {\n logger.warn(\n 'Branch protection was not enabled as it requires GitHub Pro for private repositories',\n );\n } else {\n throw e;\n }\n }\n };\n\n try {\n await tryOnce();\n } catch (e) {\n if (!e.message.includes('Branch not found')) {\n throw e;\n }\n\n // GitHub has eventual consistency. Fail silently, wait, and try again.\n await new Promise(resolve => setTimeout(resolve, 600));\n await tryOnce();\n }\n};\n\nexport function entityRefToName(name: string): string {\n return name.replace(/^.*[:/]/g, '');\n}\n"],"names":["assertError"],"mappings":";;;;AA+CO,MAAM,4CAA4C,OAAO;AAAA,EAC9D,QAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,uBAAA;AAAA,EACA,2BAAA;AAAA,EACA,4BAAA;AAAA,EACA,YAAA;AAAA,EACA,8BAA8B,EAAC;AAAA,EAC/B,2BAA8B,GAAA,IAAA;AAAA,EAC9B,8BAAiC,GAAA,KAAA;AAAA,EACjC,uBAA0B,GAAA,KAAA;AAAA,EAC1B,aAAgB,GAAA,QAAA;AAAA,EAChB,aAAgB,GAAA,IAAA;AAAA,EAChB,mBAAsB,GAAA,KAAA;AAAA,EACtB,qBAAwB,GAAA
|
|
1
|
+
{"version":3,"file":"gitHelpers.cjs.js","sources":["../../src/actions/gitHelpers.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertError } from '@backstage/errors';\nimport { Octokit } from 'octokit';\nimport { LoggerService } from '@backstage/backend-plugin-api';\n\ntype BranchProtectionOptions = {\n client: Octokit;\n owner: string;\n repoName: string;\n logger: LoggerService;\n requireCodeOwnerReviews: boolean;\n requiredStatusCheckContexts?: string[];\n bypassPullRequestAllowances?: {\n users?: string[];\n teams?: string[];\n apps?: string[];\n };\n requiredApprovingReviewCount?: number;\n restrictions?: {\n users: string[];\n teams: string[];\n apps?: string[];\n };\n requireBranchesToBeUpToDate?: boolean;\n requiredConversationResolution?: boolean;\n requireLastPushApproval: boolean;\n defaultBranch?: string;\n enforceAdmins?: boolean;\n dismissStaleReviews?: boolean;\n requiredCommitSigning?: boolean;\n};\n\nexport const enableBranchProtectionOnDefaultRepoBranch = async ({\n repoName,\n client,\n owner,\n logger,\n requireCodeOwnerReviews,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount,\n restrictions,\n requiredStatusCheckContexts = [],\n requireBranchesToBeUpToDate = true,\n requiredConversationResolution = false,\n requireLastPushApproval = false,\n defaultBranch = 'master',\n enforceAdmins = true,\n dismissStaleReviews = false,\n requiredCommitSigning = false,\n}: BranchProtectionOptions): Promise<void> => {\n const tryOnce = async () => {\n try {\n await client.rest.repos.updateBranchProtection({\n mediaType: {\n /**\n * 👇 we need this preview because allowing a custom\n * reviewer count on branch protection is a preview\n * feature\n *\n * More here: https://docs.github.com/en/rest/overview/api-previews#require-multiple-approving-reviews\n */\n previews: ['luke-cage-preview'],\n },\n owner,\n repo: repoName,\n branch: defaultBranch,\n required_status_checks: {\n strict: requireBranchesToBeUpToDate,\n contexts: requiredStatusCheckContexts,\n },\n restrictions: restrictions ?? null,\n enforce_admins: enforceAdmins,\n required_pull_request_reviews: {\n required_approving_review_count: requiredApprovingReviewCount,\n require_code_owner_reviews: requireCodeOwnerReviews,\n bypass_pull_request_allowances: bypassPullRequestAllowances,\n dismiss_stale_reviews: dismissStaleReviews,\n require_last_push_approval: requireLastPushApproval,\n },\n required_conversation_resolution: requiredConversationResolution,\n });\n\n if (requiredCommitSigning) {\n await client.rest.repos.createCommitSignatureProtection({\n owner,\n repo: repoName,\n branch: defaultBranch,\n });\n }\n } catch (e) {\n assertError(e);\n if (\n e.message.includes(\n 'Upgrade to GitHub Pro or make this repository public to enable this feature',\n )\n ) {\n logger.warn(\n 'Branch protection was not enabled as it requires GitHub Pro for private repositories',\n );\n } else {\n throw e;\n }\n }\n };\n\n try {\n await tryOnce();\n } catch (e) {\n if (!e.message.includes('Branch not found')) {\n throw e;\n }\n\n // GitHub has eventual consistency. Fail silently, wait, and try again.\n await new Promise(resolve => setTimeout(resolve, 600));\n await tryOnce();\n }\n};\n\nexport function entityRefToName(name: string): string {\n return name.replace(/^.*[:/]/g, '');\n}\n"],"names":["assertError"],"mappings":";;;;AA+CO,MAAM,4CAA4C,OAAO;AAAA,EAC9D,QAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,uBAAA;AAAA,EACA,2BAAA;AAAA,EACA,4BAAA;AAAA,EACA,YAAA;AAAA,EACA,8BAA8B,EAAC;AAAA,EAC/B,2BAA8B,GAAA,IAAA;AAAA,EAC9B,8BAAiC,GAAA,KAAA;AAAA,EACjC,uBAA0B,GAAA,KAAA;AAAA,EAC1B,aAAgB,GAAA,QAAA;AAAA,EAChB,aAAgB,GAAA,IAAA;AAAA,EAChB,mBAAsB,GAAA,KAAA;AAAA,EACtB,qBAAwB,GAAA;AAC1B,CAA8C,KAAA;AAC5C,EAAA,MAAM,UAAU,YAAY;AAC1B,IAAI,IAAA;AACF,MAAM,MAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,sBAAuB,CAAA;AAAA,QAC7C,SAAW,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQT,QAAA,EAAU,CAAC,mBAAmB;AAAA,SAChC;AAAA,QACA,KAAA;AAAA,QACA,IAAM,EAAA,QAAA;AAAA,QACN,MAAQ,EAAA,aAAA;AAAA,QACR,sBAAwB,EAAA;AAAA,UACtB,MAAQ,EAAA,2BAAA;AAAA,UACR,QAAU,EAAA;AAAA,SACZ;AAAA,QACA,cAAc,YAAgB,IAAA,IAAA;AAAA,QAC9B,cAAgB,EAAA,aAAA;AAAA,QAChB,6BAA+B,EAAA;AAAA,UAC7B,+BAAiC,EAAA,4BAAA;AAAA,UACjC,0BAA4B,EAAA,uBAAA;AAAA,UAC5B,8BAAgC,EAAA,2BAAA;AAAA,UAChC,qBAAuB,EAAA,mBAAA;AAAA,UACvB,0BAA4B,EAAA;AAAA,SAC9B;AAAA,QACA,gCAAkC,EAAA;AAAA,OACnC,CAAA;AAED,MAAA,IAAI,qBAAuB,EAAA;AACzB,QAAM,MAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,+BAAgC,CAAA;AAAA,UACtD,KAAA;AAAA,UACA,IAAM,EAAA,QAAA;AAAA,UACN,MAAQ,EAAA;AAAA,SACT,CAAA;AAAA;AACH,aACO,CAAG,EAAA;AACV,MAAAA,kBAAA,CAAY,CAAC,CAAA;AACb,MAAA,IACE,EAAE,OAAQ,CAAA,QAAA;AAAA,QACR;AAAA,OAEF,EAAA;AACA,QAAO,MAAA,CAAA,IAAA;AAAA,UACL;AAAA,SACF;AAAA,OACK,MAAA;AACL,QAAM,MAAA,CAAA;AAAA;AACR;AACF,GACF;AAEA,EAAI,IAAA;AACF,IAAA,MAAM,OAAQ,EAAA;AAAA,WACP,CAAG,EAAA;AACV,IAAA,IAAI,CAAC,CAAA,CAAE,OAAQ,CAAA,QAAA,CAAS,kBAAkB,CAAG,EAAA;AAC3C,MAAM,MAAA,CAAA;AAAA;AAIR,IAAA,MAAM,IAAI,OAAQ,CAAA,CAAA,OAAA,KAAW,UAAW,CAAA,OAAA,EAAS,GAAG,CAAC,CAAA;AACrD,IAAA,MAAM,OAAQ,EAAA;AAAA;AAElB;AAEO,SAAS,gBAAgB,IAAsB,EAAA;AACpD,EAAO,OAAA,IAAA,CAAK,OAAQ,CAAA,UAAA,EAAY,EAAE,CAAA;AACpC;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitHubEnvironment.examples.cjs.js","sources":["../../src/actions/gitHubEnvironment.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description:\n 'Create a GitHub Environment (No Policies, No Variables, No Secrets)',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Protected Branch Policy',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: true,\n custom_branch_policies: false,\n },\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Custom Branch Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['main', '*.*.*'],\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Environment Variables and Secrets',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n environmentVariables: {\n key1: 'val1',\n key2: 'val2',\n },\n secrets: {\n secret1: 'supersecret1',\n secret2: 'supersecret2',\n },\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Custom Tag Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n customTagPolicyNames: ['release/*/*', 'v*.*.*'],\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Both Branch and Tag Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['feature/*', 'hotfix/*'],\n customTagPolicyNames: ['release/*', 'v*'],\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Full Configuration',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['dev/*', 'test/*'],\n customTagPolicyNames: ['v1.*', 'v2.*'],\n environmentVariables: {\n API_KEY: '123456789',\n NODE_ENV: 'production',\n },\n secrets: {\n DATABASE_URL: 'supersecretdatabaseurl',\n API_SECRET: 'supersecretapisecret',\n },\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Only Token Authentication',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with No Deployment Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: null,\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Custom Branch and Tag Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['release/*', 'hotfix/*'],\n customTagPolicyNames: ['v*', 'release-*'],\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Environment Variables Only',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n environmentVariables: {\n VAR1: 'value1',\n VAR2: 'value2',\n },\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Deployment Secrets Only',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n secrets: {\n SECRET1: 'secretvalue1',\n SECRET2: 'secretvalue2',\n },\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Deployment Branch Policy and Token',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: true,\n custom_branch_policies: false,\n },\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Environment Variables, Secrets, and Token',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n environmentVariables: {\n VAR1: 'value1',\n VAR2: 'value2',\n },\n secrets: {\n SECRET1: 'secretvalue1',\n SECRET2: 'secretvalue2',\n },\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Wait Timer',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n waitTimer: 1000,\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Prevent Self Review',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n preventSelfReview: true,\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Reviewers',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n reviewers: ['group:default/team-a', 'user:default/johndoe'],\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gitHubEnvironment.examples.cjs.js","sources":["../../src/actions/gitHubEnvironment.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description:\n 'Create a GitHub Environment (No Policies, No Variables, No Secrets)',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Protected Branch Policy',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: true,\n custom_branch_policies: false,\n },\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Custom Branch Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['main', '*.*.*'],\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Environment Variables and Secrets',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n environmentVariables: {\n key1: 'val1',\n key2: 'val2',\n },\n secrets: {\n secret1: 'supersecret1',\n secret2: 'supersecret2',\n },\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Custom Tag Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n customTagPolicyNames: ['release/*/*', 'v*.*.*'],\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Both Branch and Tag Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['feature/*', 'hotfix/*'],\n customTagPolicyNames: ['release/*', 'v*'],\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Full Configuration',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['dev/*', 'test/*'],\n customTagPolicyNames: ['v1.*', 'v2.*'],\n environmentVariables: {\n API_KEY: '123456789',\n NODE_ENV: 'production',\n },\n secrets: {\n DATABASE_URL: 'supersecretdatabaseurl',\n API_SECRET: 'supersecretapisecret',\n },\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Only Token Authentication',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with No Deployment Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: null,\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Custom Branch and Tag Policies',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: false,\n custom_branch_policies: true,\n },\n customBranchPolicyNames: ['release/*', 'hotfix/*'],\n customTagPolicyNames: ['v*', 'release-*'],\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Environment Variables Only',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n environmentVariables: {\n VAR1: 'value1',\n VAR2: 'value2',\n },\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Deployment Secrets Only',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n secrets: {\n SECRET1: 'secretvalue1',\n SECRET2: 'secretvalue2',\n },\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Deployment Branch Policy and Token',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n deploymentBranchPolicy: {\n protected_branches: true,\n custom_branch_policies: false,\n },\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description:\n 'Create a GitHub Environment with Environment Variables, Secrets, and Token',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n environmentVariables: {\n VAR1: 'value1',\n VAR2: 'value2',\n },\n secrets: {\n SECRET1: 'secretvalue1',\n SECRET2: 'secretvalue2',\n },\n token: 'ghp_abcdef1234567890',\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Wait Timer',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n waitTimer: 1000,\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Prevent Self Review',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n preventSelfReview: true,\n },\n },\n ],\n }),\n },\n {\n description: 'Create a GitHub Environment with Reviewers',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:environment:create',\n name: 'Create Environment',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n name: 'envname',\n reviewers: ['group:default/team-a', 'user:default/johndoe'],\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.cjs.js","sources":["../../src/actions/github.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Config } from '@backstage/config';\nimport { InputError } from '@backstage/errors';\nimport {\n GithubCredentialsProvider,\n ScmIntegrationRegistry,\n} from '@backstage/integration';\nimport { Octokit } from 'octokit';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport {\n createGithubRepoWithCollaboratorsAndTopics,\n getOctokitOptions,\n initRepoPushAndProtect,\n} from './helpers';\nimport * as inputProps from './inputProperties';\nimport * as outputProps from './outputProperties';\nimport { examples } from './github.examples';\n\n/**\n * Creates a new action that initializes a git repository of the content in the workspace\n * and publishes it to GitHub.\n *\n * @public\n */\nexport function createPublishGithubAction(options: {\n integrations: ScmIntegrationRegistry;\n config: Config;\n githubCredentialsProvider?: GithubCredentialsProvider;\n}) {\n const { integrations, config, githubCredentialsProvider } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n description?: string;\n homepage?: string;\n access?: string;\n defaultBranch?: string;\n protectDefaultBranch?: boolean;\n protectEnforceAdmins?: boolean;\n deleteBranchOnMerge?: boolean;\n gitCommitMessage?: string;\n gitAuthorName?: string;\n gitAuthorEmail?: string;\n allowRebaseMerge?: boolean;\n allowSquashMerge?: boolean;\n squashMergeCommitTitle?: 'PR_TITLE' | 'COMMIT_OR_PR_TITLE';\n squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK';\n allowMergeCommit?: boolean;\n allowAutoMerge?: boolean;\n sourcePath?: string;\n bypassPullRequestAllowances?:\n | {\n users?: string[];\n teams?: string[];\n apps?: string[];\n }\n | undefined;\n requiredApprovingReviewCount?: number;\n restrictions?:\n | {\n users: string[];\n teams: string[];\n apps?: string[];\n }\n | undefined;\n requireCodeOwnerReviews?: boolean;\n dismissStaleReviews?: boolean;\n requiredStatusCheckContexts?: string[];\n requireBranchesToBeUpToDate?: boolean;\n requiredConversationResolution?: boolean;\n requireLastPushApproval?: boolean;\n repoVisibility?: 'private' | 'internal' | 'public';\n collaborators?: Array<\n | {\n user: string;\n access: string;\n }\n | {\n team: string;\n access: string;\n }\n | {\n /** @deprecated This field is deprecated in favor of team */\n username: string;\n access: 'pull' | 'push' | 'admin' | 'maintain' | 'triage';\n }\n >;\n hasProjects?: boolean | undefined;\n hasWiki?: boolean | undefined;\n hasIssues?: boolean | undefined;\n token?: string;\n topics?: string[];\n repoVariables?: { [key: string]: string };\n secrets?: { [key: string]: string };\n oidcCustomization?: {\n useDefault: boolean;\n includeClaimKeys?: string[];\n };\n requiredCommitSigning?: boolean;\n customProperties?: { [key: string]: string };\n }>({\n id: 'publish:github',\n description:\n 'Initializes a git repository of contents in workspace and publishes it to GitHub.',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl'],\n properties: {\n repoUrl: inputProps.repoUrl,\n description: inputProps.description,\n homepage: inputProps.homepage,\n access: inputProps.access,\n bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances,\n requiredApprovingReviewCount: inputProps.requiredApprovingReviewCount,\n restrictions: inputProps.restrictions,\n requireCodeOwnerReviews: inputProps.requireCodeOwnerReviews,\n dismissStaleReviews: inputProps.dismissStaleReviews,\n requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts,\n requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate,\n requiredConversationResolution:\n inputProps.requiredConversationResolution,\n requireLastPushApproval: inputProps.requireLastPushApproval,\n repoVisibility: inputProps.repoVisibility,\n defaultBranch: inputProps.defaultBranch,\n protectDefaultBranch: inputProps.protectDefaultBranch,\n protectEnforceAdmins: inputProps.protectEnforceAdmins,\n deleteBranchOnMerge: inputProps.deleteBranchOnMerge,\n gitCommitMessage: inputProps.gitCommitMessage,\n gitAuthorName: inputProps.gitAuthorName,\n gitAuthorEmail: inputProps.gitAuthorEmail,\n allowMergeCommit: inputProps.allowMergeCommit,\n allowSquashMerge: inputProps.allowSquashMerge,\n squashMergeCommitTitle: inputProps.squashMergeCommitTitle,\n squashMergeCommitMessage: inputProps.squashMergeCommitMessage,\n allowRebaseMerge: inputProps.allowRebaseMerge,\n allowAutoMerge: inputProps.allowAutoMerge,\n sourcePath: inputProps.sourcePath,\n collaborators: inputProps.collaborators,\n hasProjects: inputProps.hasProjects,\n hasWiki: inputProps.hasWiki,\n hasIssues: inputProps.hasIssues,\n token: inputProps.token,\n topics: inputProps.topics,\n repoVariables: inputProps.repoVariables,\n secrets: inputProps.secrets,\n oidcCustomization: inputProps.oidcCustomization,\n requiredCommitSigning: inputProps.requiredCommitSigning,\n customProperties: inputProps.customProperties,\n },\n },\n output: {\n type: 'object',\n properties: {\n remoteUrl: outputProps.remoteUrl,\n repoContentsUrl: outputProps.repoContentsUrl,\n commitHash: outputProps.commitHash,\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n description,\n homepage,\n access,\n requireCodeOwnerReviews = false,\n dismissStaleReviews = false,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount = 1,\n restrictions,\n requiredStatusCheckContexts = [],\n requireBranchesToBeUpToDate = true,\n requiredConversationResolution = false,\n requireLastPushApproval = false,\n repoVisibility = 'private',\n defaultBranch = 'master',\n protectDefaultBranch = true,\n protectEnforceAdmins = true,\n deleteBranchOnMerge = false,\n gitCommitMessage,\n gitAuthorName,\n gitAuthorEmail,\n allowMergeCommit = true,\n allowSquashMerge = true,\n squashMergeCommitTitle = 'COMMIT_OR_PR_TITLE',\n squashMergeCommitMessage = 'COMMIT_MESSAGES',\n allowRebaseMerge = true,\n allowAutoMerge = false,\n collaborators,\n hasProjects = undefined,\n hasWiki = undefined,\n hasIssues = undefined,\n topics,\n repoVariables,\n secrets,\n oidcCustomization,\n token: providedToken,\n customProperties,\n requiredCommitSigning = false,\n } = ctx.input;\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n credentialsProvider: githubCredentialsProvider,\n token: providedToken,\n repoUrl: repoUrl,\n });\n const client = new Octokit(octokitOptions);\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError('Invalid repository owner provided in repoUrl');\n }\n\n const newRepo = await createGithubRepoWithCollaboratorsAndTopics(\n client,\n repo,\n owner,\n repoVisibility,\n description,\n homepage,\n deleteBranchOnMerge,\n allowMergeCommit,\n allowSquashMerge,\n squashMergeCommitTitle,\n squashMergeCommitMessage,\n allowRebaseMerge,\n allowAutoMerge,\n access,\n collaborators,\n hasProjects,\n hasWiki,\n hasIssues,\n topics,\n repoVariables,\n secrets,\n oidcCustomization,\n customProperties,\n ctx.logger,\n );\n\n const remoteUrl = newRepo.clone_url;\n const repoContentsUrl = `${newRepo.html_url}/blob/${defaultBranch}`;\n\n const commitResult = await initRepoPushAndProtect(\n remoteUrl,\n octokitOptions.auth,\n ctx.workspacePath,\n ctx.input.sourcePath,\n defaultBranch,\n protectDefaultBranch,\n protectEnforceAdmins,\n owner,\n client,\n repo,\n requireCodeOwnerReviews,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount,\n restrictions,\n requiredStatusCheckContexts,\n requireBranchesToBeUpToDate,\n requiredConversationResolution,\n requireLastPushApproval,\n config,\n ctx.logger,\n gitCommitMessage,\n gitAuthorName,\n gitAuthorEmail,\n dismissStaleReviews,\n requiredCommitSigning,\n );\n\n ctx.output('commitHash', commitResult?.commitHash);\n ctx.output('remoteUrl', remoteUrl);\n ctx.output('repoContentsUrl', repoContentsUrl);\n },\n });\n}\n"],"names":["createTemplateAction","examples","inputProps.repoUrl","inputProps.description","inputProps.homepage","inputProps.access","inputProps.bypassPullRequestAllowances","inputProps.requiredApprovingReviewCount","inputProps.restrictions","inputProps.requireCodeOwnerReviews","inputProps.dismissStaleReviews","inputProps.requiredStatusCheckContexts","inputProps.requireBranchesToBeUpToDate","inputProps.requiredConversationResolution","inputProps.requireLastPushApproval","inputProps.repoVisibility","inputProps.defaultBranch","inputProps.protectDefaultBranch","inputProps.protectEnforceAdmins","inputProps.deleteBranchOnMerge","inputProps.gitCommitMessage","inputProps.gitAuthorName","inputProps.gitAuthorEmail","inputProps.allowMergeCommit","inputProps.allowSquashMerge","inputProps.squashMergeCommitTitle","inputProps.squashMergeCommitMessage","inputProps.allowRebaseMerge","inputProps.allowAutoMerge","inputProps.sourcePath","inputProps.collaborators","inputProps.hasProjects","inputProps.hasWiki","inputProps.hasIssues","inputProps.token","inputProps.topics","inputProps.repoVariables","inputProps.secrets","inputProps.oidcCustomization","inputProps.requiredCommitSigning","inputProps.customProperties","outputProps.remoteUrl","outputProps.repoContentsUrl","outputProps.commitHash","getOctokitOptions","Octokit","parseRepoUrl","InputError","createGithubRepoWithCollaboratorsAndTopics","initRepoPushAndProtect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.cjs.js","sources":["../../src/actions/github.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Config } from '@backstage/config';\nimport { InputError } from '@backstage/errors';\nimport {\n GithubCredentialsProvider,\n ScmIntegrationRegistry,\n} from '@backstage/integration';\nimport { Octokit } from 'octokit';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport {\n createGithubRepoWithCollaboratorsAndTopics,\n getOctokitOptions,\n initRepoPushAndProtect,\n} from './helpers';\nimport * as inputProps from './inputProperties';\nimport * as outputProps from './outputProperties';\nimport { examples } from './github.examples';\n\n/**\n * Creates a new action that initializes a git repository of the content in the workspace\n * and publishes it to GitHub.\n *\n * @public\n */\nexport function createPublishGithubAction(options: {\n integrations: ScmIntegrationRegistry;\n config: Config;\n githubCredentialsProvider?: GithubCredentialsProvider;\n}) {\n const { integrations, config, githubCredentialsProvider } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n description?: string;\n homepage?: string;\n access?: string;\n defaultBranch?: string;\n protectDefaultBranch?: boolean;\n protectEnforceAdmins?: boolean;\n deleteBranchOnMerge?: boolean;\n gitCommitMessage?: string;\n gitAuthorName?: string;\n gitAuthorEmail?: string;\n allowRebaseMerge?: boolean;\n allowSquashMerge?: boolean;\n squashMergeCommitTitle?: 'PR_TITLE' | 'COMMIT_OR_PR_TITLE';\n squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK';\n allowMergeCommit?: boolean;\n allowAutoMerge?: boolean;\n sourcePath?: string;\n bypassPullRequestAllowances?:\n | {\n users?: string[];\n teams?: string[];\n apps?: string[];\n }\n | undefined;\n requiredApprovingReviewCount?: number;\n restrictions?:\n | {\n users: string[];\n teams: string[];\n apps?: string[];\n }\n | undefined;\n requireCodeOwnerReviews?: boolean;\n dismissStaleReviews?: boolean;\n requiredStatusCheckContexts?: string[];\n requireBranchesToBeUpToDate?: boolean;\n requiredConversationResolution?: boolean;\n requireLastPushApproval?: boolean;\n repoVisibility?: 'private' | 'internal' | 'public';\n collaborators?: Array<\n | {\n user: string;\n access: string;\n }\n | {\n team: string;\n access: string;\n }\n | {\n /** @deprecated This field is deprecated in favor of team */\n username: string;\n access: 'pull' | 'push' | 'admin' | 'maintain' | 'triage';\n }\n >;\n hasProjects?: boolean | undefined;\n hasWiki?: boolean | undefined;\n hasIssues?: boolean | undefined;\n token?: string;\n topics?: string[];\n repoVariables?: { [key: string]: string };\n secrets?: { [key: string]: string };\n oidcCustomization?: {\n useDefault: boolean;\n includeClaimKeys?: string[];\n };\n requiredCommitSigning?: boolean;\n customProperties?: { [key: string]: string };\n }>({\n id: 'publish:github',\n description:\n 'Initializes a git repository of contents in workspace and publishes it to GitHub.',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl'],\n properties: {\n repoUrl: inputProps.repoUrl,\n description: inputProps.description,\n homepage: inputProps.homepage,\n access: inputProps.access,\n bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances,\n requiredApprovingReviewCount: inputProps.requiredApprovingReviewCount,\n restrictions: inputProps.restrictions,\n requireCodeOwnerReviews: inputProps.requireCodeOwnerReviews,\n dismissStaleReviews: inputProps.dismissStaleReviews,\n requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts,\n requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate,\n requiredConversationResolution:\n inputProps.requiredConversationResolution,\n requireLastPushApproval: inputProps.requireLastPushApproval,\n repoVisibility: inputProps.repoVisibility,\n defaultBranch: inputProps.defaultBranch,\n protectDefaultBranch: inputProps.protectDefaultBranch,\n protectEnforceAdmins: inputProps.protectEnforceAdmins,\n deleteBranchOnMerge: inputProps.deleteBranchOnMerge,\n gitCommitMessage: inputProps.gitCommitMessage,\n gitAuthorName: inputProps.gitAuthorName,\n gitAuthorEmail: inputProps.gitAuthorEmail,\n allowMergeCommit: inputProps.allowMergeCommit,\n allowSquashMerge: inputProps.allowSquashMerge,\n squashMergeCommitTitle: inputProps.squashMergeCommitTitle,\n squashMergeCommitMessage: inputProps.squashMergeCommitMessage,\n allowRebaseMerge: inputProps.allowRebaseMerge,\n allowAutoMerge: inputProps.allowAutoMerge,\n sourcePath: inputProps.sourcePath,\n collaborators: inputProps.collaborators,\n hasProjects: inputProps.hasProjects,\n hasWiki: inputProps.hasWiki,\n hasIssues: inputProps.hasIssues,\n token: inputProps.token,\n topics: inputProps.topics,\n repoVariables: inputProps.repoVariables,\n secrets: inputProps.secrets,\n oidcCustomization: inputProps.oidcCustomization,\n requiredCommitSigning: inputProps.requiredCommitSigning,\n customProperties: inputProps.customProperties,\n },\n },\n output: {\n type: 'object',\n properties: {\n remoteUrl: outputProps.remoteUrl,\n repoContentsUrl: outputProps.repoContentsUrl,\n commitHash: outputProps.commitHash,\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n description,\n homepage,\n access,\n requireCodeOwnerReviews = false,\n dismissStaleReviews = false,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount = 1,\n restrictions,\n requiredStatusCheckContexts = [],\n requireBranchesToBeUpToDate = true,\n requiredConversationResolution = false,\n requireLastPushApproval = false,\n repoVisibility = 'private',\n defaultBranch = 'master',\n protectDefaultBranch = true,\n protectEnforceAdmins = true,\n deleteBranchOnMerge = false,\n gitCommitMessage,\n gitAuthorName,\n gitAuthorEmail,\n allowMergeCommit = true,\n allowSquashMerge = true,\n squashMergeCommitTitle = 'COMMIT_OR_PR_TITLE',\n squashMergeCommitMessage = 'COMMIT_MESSAGES',\n allowRebaseMerge = true,\n allowAutoMerge = false,\n collaborators,\n hasProjects = undefined,\n hasWiki = undefined,\n hasIssues = undefined,\n topics,\n repoVariables,\n secrets,\n oidcCustomization,\n token: providedToken,\n customProperties,\n requiredCommitSigning = false,\n } = ctx.input;\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n credentialsProvider: githubCredentialsProvider,\n token: providedToken,\n repoUrl: repoUrl,\n });\n const client = new Octokit(octokitOptions);\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError('Invalid repository owner provided in repoUrl');\n }\n\n const newRepo = await createGithubRepoWithCollaboratorsAndTopics(\n client,\n repo,\n owner,\n repoVisibility,\n description,\n homepage,\n deleteBranchOnMerge,\n allowMergeCommit,\n allowSquashMerge,\n squashMergeCommitTitle,\n squashMergeCommitMessage,\n allowRebaseMerge,\n allowAutoMerge,\n access,\n collaborators,\n hasProjects,\n hasWiki,\n hasIssues,\n topics,\n repoVariables,\n secrets,\n oidcCustomization,\n customProperties,\n ctx.logger,\n );\n\n const remoteUrl = newRepo.clone_url;\n const repoContentsUrl = `${newRepo.html_url}/blob/${defaultBranch}`;\n\n const commitResult = await initRepoPushAndProtect(\n remoteUrl,\n octokitOptions.auth,\n ctx.workspacePath,\n ctx.input.sourcePath,\n defaultBranch,\n protectDefaultBranch,\n protectEnforceAdmins,\n owner,\n client,\n repo,\n requireCodeOwnerReviews,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount,\n restrictions,\n requiredStatusCheckContexts,\n requireBranchesToBeUpToDate,\n requiredConversationResolution,\n requireLastPushApproval,\n config,\n ctx.logger,\n gitCommitMessage,\n gitAuthorName,\n gitAuthorEmail,\n dismissStaleReviews,\n requiredCommitSigning,\n );\n\n ctx.output('commitHash', commitResult?.commitHash);\n ctx.output('remoteUrl', remoteUrl);\n ctx.output('repoContentsUrl', repoContentsUrl);\n },\n });\n}\n"],"names":["createTemplateAction","examples","inputProps.repoUrl","inputProps.description","inputProps.homepage","inputProps.access","inputProps.bypassPullRequestAllowances","inputProps.requiredApprovingReviewCount","inputProps.restrictions","inputProps.requireCodeOwnerReviews","inputProps.dismissStaleReviews","inputProps.requiredStatusCheckContexts","inputProps.requireBranchesToBeUpToDate","inputProps.requiredConversationResolution","inputProps.requireLastPushApproval","inputProps.repoVisibility","inputProps.defaultBranch","inputProps.protectDefaultBranch","inputProps.protectEnforceAdmins","inputProps.deleteBranchOnMerge","inputProps.gitCommitMessage","inputProps.gitAuthorName","inputProps.gitAuthorEmail","inputProps.allowMergeCommit","inputProps.allowSquashMerge","inputProps.squashMergeCommitTitle","inputProps.squashMergeCommitMessage","inputProps.allowRebaseMerge","inputProps.allowAutoMerge","inputProps.sourcePath","inputProps.collaborators","inputProps.hasProjects","inputProps.hasWiki","inputProps.hasIssues","inputProps.token","inputProps.topics","inputProps.repoVariables","inputProps.secrets","inputProps.oidcCustomization","inputProps.requiredCommitSigning","inputProps.customProperties","outputProps.remoteUrl","outputProps.repoContentsUrl","outputProps.commitHash","getOctokitOptions","Octokit","parseRepoUrl","InputError","createGithubRepoWithCollaboratorsAndTopics","initRepoPushAndProtect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.examples.cjs.js","sources":["../../src/actions/github.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description:\n 'Initializes a git repository with the content in the workspace, and publishes it to GitHub with the default configuration.',\n example: yaml.stringify({\n steps: [\n {\n id: 'publish',\n action: 'publish:github',\n name: 'Publish to GitHub',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n },\n },\n ],\n }),\n },\n {\n description: 'Initializes a GitHub repository with a description.',\n example: yaml.stringify({\n steps: [\n {\n id: 'publish',\n action: 'publish:github',\n name: 'Publish to GitHub',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n description: 'Initialize a git repository',\n },\n },\n ],\n }),\n },\n {\n description:\n 'Initializes a GitHub repository with public repo visibility, if not set defaults to private',\n example: yaml.stringify({\n steps: [\n {\n id: 'publish',\n action: 'publish:github',\n name: 'Publish to GitHub',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n repoVisibility: 'public',\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WACE,EAAA,4HAAA;AAAA,IACF,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,EAAI,EAAA,SAAA;AAAA,UACJ,MAAQ,EAAA,gBAAA;AAAA,UACR,IAAM,EAAA,mBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA
|
|
1
|
+
{"version":3,"file":"github.examples.cjs.js","sources":["../../src/actions/github.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description:\n 'Initializes a git repository with the content in the workspace, and publishes it to GitHub with the default configuration.',\n example: yaml.stringify({\n steps: [\n {\n id: 'publish',\n action: 'publish:github',\n name: 'Publish to GitHub',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n },\n },\n ],\n }),\n },\n {\n description: 'Initializes a GitHub repository with a description.',\n example: yaml.stringify({\n steps: [\n {\n id: 'publish',\n action: 'publish:github',\n name: 'Publish to GitHub',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n description: 'Initialize a git repository',\n },\n },\n ],\n }),\n },\n {\n description:\n 'Initializes a GitHub repository with public repo visibility, if not set defaults to private',\n example: yaml.stringify({\n steps: [\n {\n id: 'publish',\n action: 'publish:github',\n name: 'Publish to GitHub',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n repoVisibility: 'public',\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WACE,EAAA,4HAAA;AAAA,IACF,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,EAAI,EAAA,SAAA;AAAA,UACJ,MAAQ,EAAA,gBAAA;AAAA,UACR,IAAM,EAAA,mBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA;AAAA;AACX;AACF;AACF,KACD;AAAA,GACH;AAAA,EACA;AAAA,IACE,WAAa,EAAA,qDAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,EAAI,EAAA,SAAA;AAAA,UACJ,MAAQ,EAAA,gBAAA;AAAA,UACR,IAAM,EAAA,mBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,WAAa,EAAA;AAAA;AACf;AACF;AACF,KACD;AAAA,GACH;AAAA,EACA;AAAA,IACE,WACE,EAAA,6FAAA;AAAA,IACF,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,EAAI,EAAA,SAAA;AAAA,UACJ,MAAQ,EAAA,gBAAA;AAAA,UACR,IAAM,EAAA,mBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,cAAgB,EAAA;AAAA;AAClB;AACF;AACF,KACD;AAAA;AAEL;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubActionsDispatch.cjs.js","sources":["../../src/actions/githubActionsDispatch.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n GithubCredentialsProvider,\n ScmIntegrations,\n} from '@backstage/integration';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { Octokit } from 'octokit';\nimport { getOctokitOptions } from './helpers';\nimport { examples } from './githubActionsDispatch.examples';\n\n/**\n * Creates a new action that dispatches a GitHub Action workflow for a given branch or tag.\n * @public\n */\nexport function createGithubActionsDispatchAction(options: {\n integrations: ScmIntegrations;\n githubCredentialsProvider?: GithubCredentialsProvider;\n}) {\n const { integrations, githubCredentialsProvider } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n workflowId: string;\n branchOrTagName: string;\n workflowInputs?: { [key: string]: string };\n token?: string;\n }>({\n id: 'github:actions:dispatch',\n description:\n 'Dispatches a GitHub Action workflow for a given branch or tag',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'workflowId', 'branchOrTagName'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n workflowId: {\n title: 'Workflow ID',\n description: 'The GitHub Action Workflow filename',\n type: 'string',\n },\n branchOrTagName: {\n title: 'Branch or Tag name',\n description:\n 'The git branch or tag name used to dispatch the workflow',\n type: 'string',\n },\n workflowInputs: {\n title: 'Workflow Inputs',\n description:\n 'Inputs keys and values to send to GitHub Action configured on the workflow file. The maximum number of properties is 10. ',\n type: 'object',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The GITHUB_TOKEN to use for authorization to GitHub',\n },\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n workflowId,\n branchOrTagName,\n workflowInputs,\n token: providedToken,\n } = ctx.input;\n\n ctx.logger.info(\n `Dispatching workflow ${workflowId} for repo ${repoUrl} on ${branchOrTagName}`,\n );\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError('Invalid repository owner provided in repoUrl');\n }\n\n const client = new Octokit(\n await getOctokitOptions({\n integrations,\n repoUrl,\n credentialsProvider: githubCredentialsProvider,\n token: providedToken,\n }),\n );\n\n await client.rest.actions.createWorkflowDispatch({\n owner,\n repo,\n workflow_id: workflowId,\n ref: branchOrTagName,\n inputs: workflowInputs,\n });\n\n ctx.logger.info(`Workflow ${workflowId} dispatched successfully`);\n },\n });\n}\n"],"names":["createTemplateAction","examples","parseRepoUrl","InputError","Octokit","getOctokitOptions"],"mappings":";;;;;;;;AAiCO,SAAS,kCAAkC,OAG/C,EAAA;AACD,EAAM,MAAA,EAAE,YAAc,EAAA,yBAAA,EAA8B,GAAA,OAAA
|
|
1
|
+
{"version":3,"file":"githubActionsDispatch.cjs.js","sources":["../../src/actions/githubActionsDispatch.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n GithubCredentialsProvider,\n ScmIntegrations,\n} from '@backstage/integration';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { Octokit } from 'octokit';\nimport { getOctokitOptions } from './helpers';\nimport { examples } from './githubActionsDispatch.examples';\n\n/**\n * Creates a new action that dispatches a GitHub Action workflow for a given branch or tag.\n * @public\n */\nexport function createGithubActionsDispatchAction(options: {\n integrations: ScmIntegrations;\n githubCredentialsProvider?: GithubCredentialsProvider;\n}) {\n const { integrations, githubCredentialsProvider } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n workflowId: string;\n branchOrTagName: string;\n workflowInputs?: { [key: string]: string };\n token?: string;\n }>({\n id: 'github:actions:dispatch',\n description:\n 'Dispatches a GitHub Action workflow for a given branch or tag',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'workflowId', 'branchOrTagName'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n workflowId: {\n title: 'Workflow ID',\n description: 'The GitHub Action Workflow filename',\n type: 'string',\n },\n branchOrTagName: {\n title: 'Branch or Tag name',\n description:\n 'The git branch or tag name used to dispatch the workflow',\n type: 'string',\n },\n workflowInputs: {\n title: 'Workflow Inputs',\n description:\n 'Inputs keys and values to send to GitHub Action configured on the workflow file. The maximum number of properties is 10. ',\n type: 'object',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The GITHUB_TOKEN to use for authorization to GitHub',\n },\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n workflowId,\n branchOrTagName,\n workflowInputs,\n token: providedToken,\n } = ctx.input;\n\n ctx.logger.info(\n `Dispatching workflow ${workflowId} for repo ${repoUrl} on ${branchOrTagName}`,\n );\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError('Invalid repository owner provided in repoUrl');\n }\n\n const client = new Octokit(\n await getOctokitOptions({\n integrations,\n repoUrl,\n credentialsProvider: githubCredentialsProvider,\n token: providedToken,\n }),\n );\n\n await client.rest.actions.createWorkflowDispatch({\n owner,\n repo,\n workflow_id: workflowId,\n ref: branchOrTagName,\n inputs: workflowInputs,\n });\n\n ctx.logger.info(`Workflow ${workflowId} dispatched successfully`);\n },\n });\n}\n"],"names":["createTemplateAction","examples","parseRepoUrl","InputError","Octokit","getOctokitOptions"],"mappings":";;;;;;;;AAiCO,SAAS,kCAAkC,OAG/C,EAAA;AACD,EAAM,MAAA,EAAE,YAAc,EAAA,yBAAA,EAA8B,GAAA,OAAA;AAEpD,EAAA,OAAOA,yCAMJ,CAAA;AAAA,IACD,EAAI,EAAA,yBAAA;AAAA,IACJ,WACE,EAAA,+DAAA;AAAA,cACFC,uCAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,QAAA;AAAA,QACN,QAAU,EAAA,CAAC,SAAW,EAAA,YAAA,EAAc,iBAAiB,CAAA;AAAA,QACrD,UAAY,EAAA;AAAA,UACV,OAAS,EAAA;AAAA,YACP,KAAO,EAAA,qBAAA;AAAA,YACP,WAAa,EAAA,CAAA,gJAAA,CAAA;AAAA,YACb,IAAM,EAAA;AAAA,WACR;AAAA,UACA,UAAY,EAAA;AAAA,YACV,KAAO,EAAA,aAAA;AAAA,YACP,WAAa,EAAA,qCAAA;AAAA,YACb,IAAM,EAAA;AAAA,WACR;AAAA,UACA,eAAiB,EAAA;AAAA,YACf,KAAO,EAAA,oBAAA;AAAA,YACP,WACE,EAAA,0DAAA;AAAA,YACF,IAAM,EAAA;AAAA,WACR;AAAA,UACA,cAAgB,EAAA;AAAA,YACd,KAAO,EAAA,iBAAA;AAAA,YACP,WACE,EAAA,2HAAA;AAAA,YACF,IAAM,EAAA;AAAA,WACR;AAAA,UACA,KAAO,EAAA;AAAA,YACL,KAAO,EAAA,sBAAA;AAAA,YACP,IAAM,EAAA,QAAA;AAAA,YACN,WAAa,EAAA;AAAA;AACf;AACF;AACF,KACF;AAAA,IACA,MAAM,QAAQ,GAAK,EAAA;AACjB,MAAM,MAAA;AAAA,QACJ,OAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAA;AAAA,QACA,cAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACL,GAAI,CAAA,KAAA;AAER,MAAA,GAAA,CAAI,MAAO,CAAA,IAAA;AAAA,QACT,CAAwB,qBAAA,EAAA,UAAU,CAAa,UAAA,EAAA,OAAO,OAAO,eAAe,CAAA;AAAA,OAC9E;AAEA,MAAA,MAAM,EAAE,KAAO,EAAA,IAAA,EAAS,GAAAC,iCAAA,CAAa,SAAS,YAAY,CAAA;AAE1D,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAM,MAAA,IAAIC,kBAAW,8CAA8C,CAAA;AAAA;AAGrE,MAAA,MAAM,SAAS,IAAIC,eAAA;AAAA,QACjB,MAAMC,yBAAkB,CAAA;AAAA,UACtB,YAAA;AAAA,UACA,OAAA;AAAA,UACA,mBAAqB,EAAA,yBAAA;AAAA,UACrB,KAAO,EAAA;AAAA,SACR;AAAA,OACH;AAEA,MAAM,MAAA,MAAA,CAAO,IAAK,CAAA,OAAA,CAAQ,sBAAuB,CAAA;AAAA,QAC/C,KAAA;AAAA,QACA,IAAA;AAAA,QACA,WAAa,EAAA,UAAA;AAAA,QACb,GAAK,EAAA,eAAA;AAAA,QACL,MAAQ,EAAA;AAAA,OACT,CAAA;AAED,MAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAK,CAAY,SAAA,EAAA,UAAU,CAA0B,wBAAA,CAAA,CAAA;AAAA;AAClE,GACD,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubActionsDispatch.examples.cjs.js","sources":["../../src/actions/githubActionsDispatch.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: 'GitHub Action Workflow Without Inputs.',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:actions:dispatch',\n name: 'Dispatch Github Action Workflow',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n workflowId: 'WORKFLOW_ID',\n branchOrTagName: 'main',\n },\n },\n ],\n }),\n },\n {\n description: 'GitHub Action Workflow With Inputs',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:actions:dispatch',\n name: 'Dispatch Github Action Workflow with inputs',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n workflowId: 'WORKFLOW_ID',\n branchOrTagName: 'main',\n workflowInputs: {\n input1: 'value1',\n input2: 'value2',\n },\n },\n },\n ],\n }),\n },\n {\n description: 'GitHub Action Workflow With Custom Token',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:actions:dispatch',\n name: 'Dispatch GitHub Action Workflow (custom token)',\n input: {\n repoUrl: 'github.com?repo=reponame&owner=owner',\n workflowId: 'WORKFLOW_ID',\n branchOrTagName: 'release-1.0',\n token: '${{ secrets.MY_CUSTOM_TOKEN }}',\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,wCAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,iCAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,UAAY,EAAA,aAAA;AAAA,YACZ,eAAiB,EAAA
|
|
1
|
+
{"version":3,"file":"githubActionsDispatch.examples.cjs.js","sources":["../../src/actions/githubActionsDispatch.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: 'GitHub Action Workflow Without Inputs.',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:actions:dispatch',\n name: 'Dispatch Github Action Workflow',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n workflowId: 'WORKFLOW_ID',\n branchOrTagName: 'main',\n },\n },\n ],\n }),\n },\n {\n description: 'GitHub Action Workflow With Inputs',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:actions:dispatch',\n name: 'Dispatch Github Action Workflow with inputs',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n workflowId: 'WORKFLOW_ID',\n branchOrTagName: 'main',\n workflowInputs: {\n input1: 'value1',\n input2: 'value2',\n },\n },\n },\n ],\n }),\n },\n {\n description: 'GitHub Action Workflow With Custom Token',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:actions:dispatch',\n name: 'Dispatch GitHub Action Workflow (custom token)',\n input: {\n repoUrl: 'github.com?repo=reponame&owner=owner',\n workflowId: 'WORKFLOW_ID',\n branchOrTagName: 'release-1.0',\n token: '${{ secrets.MY_CUSTOM_TOKEN }}',\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,wCAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,iCAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,UAAY,EAAA,aAAA;AAAA,YACZ,eAAiB,EAAA;AAAA;AACnB;AACF;AACF,KACD;AAAA,GACH;AAAA,EACA;AAAA,IACE,WAAa,EAAA,oCAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,6CAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,UAAY,EAAA,aAAA;AAAA,YACZ,eAAiB,EAAA,MAAA;AAAA,YACjB,cAAgB,EAAA;AAAA,cACd,MAAQ,EAAA,QAAA;AAAA,cACR,MAAQ,EAAA;AAAA;AACV;AACF;AACF;AACF,KACD;AAAA,GACH;AAAA,EACA;AAAA,IACE,WAAa,EAAA,0CAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,gDAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,sCAAA;AAAA,YACT,UAAY,EAAA,aAAA;AAAA,YACZ,eAAiB,EAAA,aAAA;AAAA,YACjB,KAAO,EAAA;AAAA;AACT;AACF;AACF,KACD;AAAA;AAEL;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubAutolinks.cjs.js","sources":["../../src/actions/githubAutolinks.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n GithubCredentialsProvider,\n ScmIntegrations,\n} from '@backstage/integration';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { Octokit } from 'octokit';\nimport { examples } from './githubAutolinks.examples';\nimport { getOctokitOptions } from './helpers';\n\n/**\n * Create an autolink reference for a repository\n * @public\n */\nexport function createGithubAutolinksAction(options: {\n integrations: ScmIntegrations;\n githubCredentialsProvider?: GithubCredentialsProvider;\n}) {\n const { integrations, githubCredentialsProvider } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n keyPrefix: string;\n urlTemplate: string;\n isAlphanumeric?: boolean;\n token?: string;\n }>({\n id: 'github:autolinks:create',\n description: 'Create an autolink reference for a repository',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'keyPrefix', 'urlTemplate'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n keyPrefix: {\n title: 'Key Prefix',\n description:\n 'This prefix appended by certain characters will generate a link any time it is found in an issue, pull request, or commit.',\n type: 'string',\n },\n urlTemplate: {\n title: 'URL Template',\n description:\n 'The URL must contain <num> for the reference number. <num> matches different characters depending on the value of isAlphanumeric.',\n type: 'string',\n },\n isAlphanumeric: {\n title: 'Alphanumeric',\n description:\n 'Whether this autolink reference matches alphanumeric characters. If true, the <num> parameter of the url_template matches alphanumeric characters A-Z (case insensitive), 0-9, and -. If false, this autolink reference only matches numeric characters. Default: true',\n type: 'boolean',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The token to use for authorization to GitHub',\n },\n },\n },\n },\n async handler(ctx) {\n const { repoUrl, keyPrefix, urlTemplate, isAlphanumeric, token } =\n ctx.input;\n\n ctx.logger.info(`Creating autolink reference for repo ${repoUrl}`);\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError('Invalid repository owner provided in repoUrl');\n }\n\n const client = new Octokit(\n await getOctokitOptions({\n integrations,\n repoUrl,\n credentialsProvider: githubCredentialsProvider,\n token,\n }),\n );\n\n await client.rest.repos.createAutolink({\n owner,\n repo,\n key_prefix: keyPrefix,\n url_template: urlTemplate,\n is_alphanumeric: isAlphanumeric,\n });\n\n ctx.logger.info(`Autolink reference created successfully`);\n },\n });\n}\n"],"names":["createTemplateAction","examples","parseRepoUrl","InputError","Octokit","getOctokitOptions"],"mappings":";;;;;;;;AAiCO,SAAS,4BAA4B,OAGzC,EAAA;AACD,EAAM,MAAA,EAAE,YAAc,EAAA,yBAAA,EAA8B,GAAA,OAAA
|
|
1
|
+
{"version":3,"file":"githubAutolinks.cjs.js","sources":["../../src/actions/githubAutolinks.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n GithubCredentialsProvider,\n ScmIntegrations,\n} from '@backstage/integration';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { Octokit } from 'octokit';\nimport { examples } from './githubAutolinks.examples';\nimport { getOctokitOptions } from './helpers';\n\n/**\n * Create an autolink reference for a repository\n * @public\n */\nexport function createGithubAutolinksAction(options: {\n integrations: ScmIntegrations;\n githubCredentialsProvider?: GithubCredentialsProvider;\n}) {\n const { integrations, githubCredentialsProvider } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n keyPrefix: string;\n urlTemplate: string;\n isAlphanumeric?: boolean;\n token?: string;\n }>({\n id: 'github:autolinks:create',\n description: 'Create an autolink reference for a repository',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'keyPrefix', 'urlTemplate'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n keyPrefix: {\n title: 'Key Prefix',\n description:\n 'This prefix appended by certain characters will generate a link any time it is found in an issue, pull request, or commit.',\n type: 'string',\n },\n urlTemplate: {\n title: 'URL Template',\n description:\n 'The URL must contain <num> for the reference number. <num> matches different characters depending on the value of isAlphanumeric.',\n type: 'string',\n },\n isAlphanumeric: {\n title: 'Alphanumeric',\n description:\n 'Whether this autolink reference matches alphanumeric characters. If true, the <num> parameter of the url_template matches alphanumeric characters A-Z (case insensitive), 0-9, and -. If false, this autolink reference only matches numeric characters. Default: true',\n type: 'boolean',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The token to use for authorization to GitHub',\n },\n },\n },\n },\n async handler(ctx) {\n const { repoUrl, keyPrefix, urlTemplate, isAlphanumeric, token } =\n ctx.input;\n\n ctx.logger.info(`Creating autolink reference for repo ${repoUrl}`);\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError('Invalid repository owner provided in repoUrl');\n }\n\n const client = new Octokit(\n await getOctokitOptions({\n integrations,\n repoUrl,\n credentialsProvider: githubCredentialsProvider,\n token,\n }),\n );\n\n await client.rest.repos.createAutolink({\n owner,\n repo,\n key_prefix: keyPrefix,\n url_template: urlTemplate,\n is_alphanumeric: isAlphanumeric,\n });\n\n ctx.logger.info(`Autolink reference created successfully`);\n },\n });\n}\n"],"names":["createTemplateAction","examples","parseRepoUrl","InputError","Octokit","getOctokitOptions"],"mappings":";;;;;;;;AAiCO,SAAS,4BAA4B,OAGzC,EAAA;AACD,EAAM,MAAA,EAAE,YAAc,EAAA,yBAAA,EAA8B,GAAA,OAAA;AAEpD,EAAA,OAAOA,yCAMJ,CAAA;AAAA,IACD,EAAI,EAAA,yBAAA;AAAA,IACJ,WAAa,EAAA,+CAAA;AAAA,cACbC,iCAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,QAAA;AAAA,QACN,QAAU,EAAA,CAAC,SAAW,EAAA,WAAA,EAAa,aAAa,CAAA;AAAA,QAChD,UAAY,EAAA;AAAA,UACV,OAAS,EAAA;AAAA,YACP,KAAO,EAAA,qBAAA;AAAA,YACP,WAAa,EAAA,CAAA,gJAAA,CAAA;AAAA,YACb,IAAM,EAAA;AAAA,WACR;AAAA,UACA,SAAW,EAAA;AAAA,YACT,KAAO,EAAA,YAAA;AAAA,YACP,WACE,EAAA,4HAAA;AAAA,YACF,IAAM,EAAA;AAAA,WACR;AAAA,UACA,WAAa,EAAA;AAAA,YACX,KAAO,EAAA,cAAA;AAAA,YACP,WACE,EAAA,mIAAA;AAAA,YACF,IAAM,EAAA;AAAA,WACR;AAAA,UACA,cAAgB,EAAA;AAAA,YACd,KAAO,EAAA,cAAA;AAAA,YACP,WACE,EAAA,wQAAA;AAAA,YACF,IAAM,EAAA;AAAA,WACR;AAAA,UACA,KAAO,EAAA;AAAA,YACL,KAAO,EAAA,sBAAA;AAAA,YACP,IAAM,EAAA,QAAA;AAAA,YACN,WAAa,EAAA;AAAA;AACf;AACF;AACF,KACF;AAAA,IACA,MAAM,QAAQ,GAAK,EAAA;AACjB,MAAA,MAAM,EAAE,OAAS,EAAA,SAAA,EAAW,aAAa,cAAgB,EAAA,KAAA,KACvD,GAAI,CAAA,KAAA;AAEN,MAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAK,CAAwC,qCAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AAEjE,MAAA,MAAM,EAAE,KAAO,EAAA,IAAA,EAAS,GAAAC,iCAAA,CAAa,SAAS,YAAY,CAAA;AAE1D,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAM,MAAA,IAAIC,kBAAW,8CAA8C,CAAA;AAAA;AAGrE,MAAA,MAAM,SAAS,IAAIC,eAAA;AAAA,QACjB,MAAMC,yBAAkB,CAAA;AAAA,UACtB,YAAA;AAAA,UACA,OAAA;AAAA,UACA,mBAAqB,EAAA,yBAAA;AAAA,UACrB;AAAA,SACD;AAAA,OACH;AAEA,MAAM,MAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,cAAe,CAAA;AAAA,QACrC,KAAA;AAAA,QACA,IAAA;AAAA,QACA,UAAY,EAAA,SAAA;AAAA,QACZ,YAAc,EAAA,WAAA;AAAA,QACd,eAAiB,EAAA;AAAA,OAClB,CAAA;AAED,MAAI,GAAA,CAAA,MAAA,CAAO,KAAK,CAAyC,uCAAA,CAAA,CAAA;AAAA;AAC3D,GACD,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubAutolinks.examples.cjs.js","sources":["../../src/actions/githubAutolinks.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: 'GitHub alphanumric autolink reference',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:autolinks:create',\n name: 'Create an autolink reference',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n keyPrefix: 'TICKET-',\n urlTemplate: 'https://example.com/TICKET?query=<num>',\n isAlphanumeric: false,\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,uCAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,8BAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,SAAW,EAAA,SAAA;AAAA,YACX,WAAa,EAAA,wCAAA;AAAA,YACb,cAAgB,EAAA
|
|
1
|
+
{"version":3,"file":"githubAutolinks.examples.cjs.js","sources":["../../src/actions/githubAutolinks.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: 'GitHub alphanumric autolink reference',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:autolinks:create',\n name: 'Create an autolink reference',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n keyPrefix: 'TICKET-',\n urlTemplate: 'https://example.com/TICKET?query=<num>',\n isAlphanumeric: false,\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,uCAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,8BAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,SAAW,EAAA,SAAA;AAAA,YACX,WAAa,EAAA,wCAAA;AAAA,YACb,cAAgB,EAAA;AAAA;AAClB;AACF;AACF,KACD;AAAA;AAEL;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubBranchProtection.cjs.js","sources":["../../src/actions/githubBranchProtection.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { examples } from './githubBranchProtection.examples';\nimport * as inputProps from './inputProperties';\nimport { getOctokitOptions } from './helpers';\nimport { Octokit } from 'octokit';\nimport { enableBranchProtectionOnDefaultRepoBranch } from './gitHelpers';\n\n/**\n * Creates an `github:branch-protection:create` Scaffolder action that configured Branch Protection in a Github Repository.\n *\n * @public\n */\nexport function createGithubBranchProtectionAction(options: {\n integrations: ScmIntegrationRegistry;\n}) {\n const { integrations } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n branch?: string;\n enforceAdmins?: boolean;\n requiredApprovingReviewCount?: number;\n requireCodeOwnerReviews?: boolean;\n dismissStaleReviews?: boolean;\n bypassPullRequestAllowances?:\n | {\n users?: string[];\n teams?: string[];\n apps?: string[];\n }\n | undefined;\n restrictions?:\n | {\n users: string[];\n teams: string[];\n apps?: string[];\n }\n | undefined;\n requiredStatusCheckContexts?: string[];\n requireBranchesToBeUpToDate?: boolean;\n requiredConversationResolution?: boolean;\n requireLastPushApproval?: boolean;\n requiredCommitSigning?: boolean;\n token?: string;\n }>({\n id: 'github:branch-protection:create',\n description: 'Configures Branch Protection',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl'],\n properties: {\n repoUrl: inputProps.repoUrl,\n branch: {\n title: 'Branch name',\n description: `The branch to protect. Defaults to the repository's default branch`,\n type: 'string',\n },\n enforceAdmins: inputProps.protectEnforceAdmins,\n requiredApprovingReviewCount: inputProps.requiredApprovingReviewCount,\n requireCodeOwnerReviews: inputProps.requireCodeOwnerReviews,\n dismissStaleReviews: inputProps.dismissStaleReviews,\n bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances,\n restrictions: inputProps.restrictions,\n requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts,\n requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate,\n requiredConversationResolution:\n inputProps.requiredConversationResolution,\n requireLastPushApproval: inputProps.requireLastPushApproval,\n requiredCommitSigning: inputProps.requiredCommitSigning,\n token: inputProps.token,\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n branch,\n enforceAdmins = true,\n requiredApprovingReviewCount = 1,\n requireCodeOwnerReviews = false,\n dismissStaleReviews = false,\n bypassPullRequestAllowances,\n restrictions,\n requiredStatusCheckContexts = [],\n requireBranchesToBeUpToDate = true,\n requiredConversationResolution = false,\n requireLastPushApproval = false,\n requiredCommitSigning = false,\n token: providedToken,\n } = ctx.input;\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n token: providedToken,\n repoUrl: repoUrl,\n });\n const client = new Octokit(octokitOptions);\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError(`No owner provided for repo ${repoUrl}`);\n }\n\n const repository = await client.rest.repos.get({\n owner: owner,\n repo: repo,\n });\n\n await enableBranchProtectionOnDefaultRepoBranch({\n repoName: repo,\n client,\n owner,\n logger: ctx.logger,\n requireCodeOwnerReviews,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount,\n restrictions,\n requiredStatusCheckContexts,\n requireBranchesToBeUpToDate,\n requiredConversationResolution,\n requireLastPushApproval,\n defaultBranch: branch ?? repository.data.default_branch,\n enforceAdmins,\n dismissStaleReviews,\n requiredCommitSigning,\n });\n },\n });\n}\n"],"names":["createTemplateAction","examples","inputProps.repoUrl","inputProps.protectEnforceAdmins","inputProps.requiredApprovingReviewCount","inputProps.requireCodeOwnerReviews","inputProps.dismissStaleReviews","inputProps.bypassPullRequestAllowances","inputProps.restrictions","inputProps.requiredStatusCheckContexts","inputProps.requireBranchesToBeUpToDate","inputProps.requiredConversationResolution","inputProps.requireLastPushApproval","inputProps.requiredCommitSigning","inputProps.token","getOctokitOptions","Octokit","parseRepoUrl","InputError","enableBranchProtectionOnDefaultRepoBranch"],"mappings":";;;;;;;;;;AAiCO,SAAS,mCAAmC,OAEhD,EAAA;AACD,EAAM,MAAA,EAAE,cAAiB,GAAA,OAAA
|
|
1
|
+
{"version":3,"file":"githubBranchProtection.cjs.js","sources":["../../src/actions/githubBranchProtection.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { examples } from './githubBranchProtection.examples';\nimport * as inputProps from './inputProperties';\nimport { getOctokitOptions } from './helpers';\nimport { Octokit } from 'octokit';\nimport { enableBranchProtectionOnDefaultRepoBranch } from './gitHelpers';\n\n/**\n * Creates an `github:branch-protection:create` Scaffolder action that configured Branch Protection in a Github Repository.\n *\n * @public\n */\nexport function createGithubBranchProtectionAction(options: {\n integrations: ScmIntegrationRegistry;\n}) {\n const { integrations } = options;\n\n return createTemplateAction<{\n repoUrl: string;\n branch?: string;\n enforceAdmins?: boolean;\n requiredApprovingReviewCount?: number;\n requireCodeOwnerReviews?: boolean;\n dismissStaleReviews?: boolean;\n bypassPullRequestAllowances?:\n | {\n users?: string[];\n teams?: string[];\n apps?: string[];\n }\n | undefined;\n restrictions?:\n | {\n users: string[];\n teams: string[];\n apps?: string[];\n }\n | undefined;\n requiredStatusCheckContexts?: string[];\n requireBranchesToBeUpToDate?: boolean;\n requiredConversationResolution?: boolean;\n requireLastPushApproval?: boolean;\n requiredCommitSigning?: boolean;\n token?: string;\n }>({\n id: 'github:branch-protection:create',\n description: 'Configures Branch Protection',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl'],\n properties: {\n repoUrl: inputProps.repoUrl,\n branch: {\n title: 'Branch name',\n description: `The branch to protect. Defaults to the repository's default branch`,\n type: 'string',\n },\n enforceAdmins: inputProps.protectEnforceAdmins,\n requiredApprovingReviewCount: inputProps.requiredApprovingReviewCount,\n requireCodeOwnerReviews: inputProps.requireCodeOwnerReviews,\n dismissStaleReviews: inputProps.dismissStaleReviews,\n bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances,\n restrictions: inputProps.restrictions,\n requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts,\n requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate,\n requiredConversationResolution:\n inputProps.requiredConversationResolution,\n requireLastPushApproval: inputProps.requireLastPushApproval,\n requiredCommitSigning: inputProps.requiredCommitSigning,\n token: inputProps.token,\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n branch,\n enforceAdmins = true,\n requiredApprovingReviewCount = 1,\n requireCodeOwnerReviews = false,\n dismissStaleReviews = false,\n bypassPullRequestAllowances,\n restrictions,\n requiredStatusCheckContexts = [],\n requireBranchesToBeUpToDate = true,\n requiredConversationResolution = false,\n requireLastPushApproval = false,\n requiredCommitSigning = false,\n token: providedToken,\n } = ctx.input;\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n token: providedToken,\n repoUrl: repoUrl,\n });\n const client = new Octokit(octokitOptions);\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError(`No owner provided for repo ${repoUrl}`);\n }\n\n const repository = await client.rest.repos.get({\n owner: owner,\n repo: repo,\n });\n\n await enableBranchProtectionOnDefaultRepoBranch({\n repoName: repo,\n client,\n owner,\n logger: ctx.logger,\n requireCodeOwnerReviews,\n bypassPullRequestAllowances,\n requiredApprovingReviewCount,\n restrictions,\n requiredStatusCheckContexts,\n requireBranchesToBeUpToDate,\n requiredConversationResolution,\n requireLastPushApproval,\n defaultBranch: branch ?? repository.data.default_branch,\n enforceAdmins,\n dismissStaleReviews,\n requiredCommitSigning,\n });\n },\n });\n}\n"],"names":["createTemplateAction","examples","inputProps.repoUrl","inputProps.protectEnforceAdmins","inputProps.requiredApprovingReviewCount","inputProps.requireCodeOwnerReviews","inputProps.dismissStaleReviews","inputProps.bypassPullRequestAllowances","inputProps.restrictions","inputProps.requiredStatusCheckContexts","inputProps.requireBranchesToBeUpToDate","inputProps.requiredConversationResolution","inputProps.requireLastPushApproval","inputProps.requiredCommitSigning","inputProps.token","getOctokitOptions","Octokit","parseRepoUrl","InputError","enableBranchProtectionOnDefaultRepoBranch"],"mappings":";;;;;;;;;;AAiCO,SAAS,mCAAmC,OAEhD,EAAA;AACD,EAAM,MAAA,EAAE,cAAiB,GAAA,OAAA;AAEzB,EAAA,OAAOA,yCA2BJ,CAAA;AAAA,IACD,EAAI,EAAA,iCAAA;AAAA,IACJ,WAAa,EAAA,8BAAA;AAAA,cACbC,wCAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,QAAA;AAAA,QACN,QAAA,EAAU,CAAC,SAAS,CAAA;AAAA,QACpB,UAAY,EAAA;AAAA,UACV,SAASC,uBAAW;AAAA,UACpB,MAAQ,EAAA;AAAA,YACN,KAAO,EAAA,aAAA;AAAA,YACP,WAAa,EAAA,CAAA,kEAAA,CAAA;AAAA,YACb,IAAM,EAAA;AAAA,WACR;AAAA,UACA,eAAeC,oCAAW;AAAA,UAC1B,8BAA8BC,4CAAW;AAAA,UACzC,yBAAyBC,uCAAW;AAAA,UACpC,qBAAqBC,mCAAW;AAAA,UAChC,6BAA6BC,2CAAW;AAAA,UACxC,cAAcC,4BAAW;AAAA,UACzB,6BAA6BC,2CAAW;AAAA,UACxC,6BAA6BC,2CAAW;AAAA,UACxC,gCACEC,8CAAW;AAAA,UACb,yBAAyBC,uCAAW;AAAA,UACpC,uBAAuBC,qCAAW;AAAA,UAClC,OAAOC;AAAW;AACpB;AACF,KACF;AAAA,IACA,MAAM,QAAQ,GAAK,EAAA;AACjB,MAAM,MAAA;AAAA,QACJ,OAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAgB,GAAA,IAAA;AAAA,QAChB,4BAA+B,GAAA,CAAA;AAAA,QAC/B,uBAA0B,GAAA,KAAA;AAAA,QAC1B,mBAAsB,GAAA,KAAA;AAAA,QACtB,2BAAA;AAAA,QACA,YAAA;AAAA,QACA,8BAA8B,EAAC;AAAA,QAC/B,2BAA8B,GAAA,IAAA;AAAA,QAC9B,8BAAiC,GAAA,KAAA;AAAA,QACjC,uBAA0B,GAAA,KAAA;AAAA,QAC1B,qBAAwB,GAAA,KAAA;AAAA,QACxB,KAAO,EAAA;AAAA,UACL,GAAI,CAAA,KAAA;AAER,MAAM,MAAA,cAAA,GAAiB,MAAMC,yBAAkB,CAAA;AAAA,QAC7C,YAAA;AAAA,QACA,KAAO,EAAA,aAAA;AAAA,QACP;AAAA,OACD,CAAA;AACD,MAAM,MAAA,MAAA,GAAS,IAAIC,eAAA,CAAQ,cAAc,CAAA;AAEzC,MAAA,MAAM,EAAE,KAAO,EAAA,IAAA,EAAS,GAAAC,iCAAA,CAAa,SAAS,YAAY,CAAA;AAE1D,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAA,MAAM,IAAIC,iBAAA,CAAW,CAA8B,2BAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AAAA;AAG9D,MAAA,MAAM,UAAa,GAAA,MAAM,MAAO,CAAA,IAAA,CAAK,MAAM,GAAI,CAAA;AAAA,QAC7C,KAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,MAAMC,oDAA0C,CAAA;AAAA,QAC9C,QAAU,EAAA,IAAA;AAAA,QACV,MAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAQ,GAAI,CAAA,MAAA;AAAA,QACZ,uBAAA;AAAA,QACA,2BAAA;AAAA,QACA,4BAAA;AAAA,QACA,YAAA;AAAA,QACA,2BAAA;AAAA,QACA,2BAAA;AAAA,QACA,8BAAA;AAAA,QACA,uBAAA;AAAA,QACA,aAAA,EAAe,MAAU,IAAA,UAAA,CAAW,IAAK,CAAA,cAAA;AAAA,QACzC,aAAA;AAAA,QACA,mBAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA;AACH,GACD,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubBranchProtection.examples.cjs.js","sources":["../../src/actions/githubBranchProtection.examples.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: `GitHub Branch Protection for repository's default branch.`,\n example: yaml.stringify({\n steps: [\n {\n action: 'github:branch-protection:create',\n name: 'Setup Branch Protection',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n },\n },\n ],\n }),\n },\n {\n description: `GitHub Branch Protection for a specific branch.`,\n example: yaml.stringify({\n steps: [\n {\n action: 'github:branch-protection:create',\n name: 'Setup Branch Protection',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n branch: 'my-awesome-branch',\n },\n },\n ],\n }),\n },\n {\n description: `GitHub Branch Protection and required commit signing on default branch.`,\n example: yaml.stringify({\n steps: [\n {\n action: 'github:branch-protection:create',\n name: 'Setup Branch Protection',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n requireCodeOwnerReviews: true,\n requiredStatusCheckContexts: ['test'],\n dismissStaleReviews: true,\n requireLastPushApproval: true,\n requiredConversationResolution: true,\n requiredCommitSigning: true,\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,CAAA,yDAAA,CAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,iCAAA;AAAA,UACR,IAAM,EAAA,yBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA
|
|
1
|
+
{"version":3,"file":"githubBranchProtection.examples.cjs.js","sources":["../../src/actions/githubBranchProtection.examples.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: `GitHub Branch Protection for repository's default branch.`,\n example: yaml.stringify({\n steps: [\n {\n action: 'github:branch-protection:create',\n name: 'Setup Branch Protection',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n },\n },\n ],\n }),\n },\n {\n description: `GitHub Branch Protection for a specific branch.`,\n example: yaml.stringify({\n steps: [\n {\n action: 'github:branch-protection:create',\n name: 'Setup Branch Protection',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n branch: 'my-awesome-branch',\n },\n },\n ],\n }),\n },\n {\n description: `GitHub Branch Protection and required commit signing on default branch.`,\n example: yaml.stringify({\n steps: [\n {\n action: 'github:branch-protection:create',\n name: 'Setup Branch Protection',\n input: {\n repoUrl: 'github.com?repo=repo&owner=owner',\n requireCodeOwnerReviews: true,\n requiredStatusCheckContexts: ['test'],\n dismissStaleReviews: true,\n requireLastPushApproval: true,\n requiredConversationResolution: true,\n requiredCommitSigning: true,\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAmBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,CAAA,yDAAA,CAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,iCAAA;AAAA,UACR,IAAM,EAAA,yBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA;AAAA;AACX;AACF;AACF,KACD;AAAA,GACH;AAAA,EACA;AAAA,IACE,WAAa,EAAA,CAAA,+CAAA,CAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,iCAAA;AAAA,UACR,IAAM,EAAA,yBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,MAAQ,EAAA;AAAA;AACV;AACF;AACF,KACD;AAAA,GACH;AAAA,EACA;AAAA,IACE,WAAa,EAAA,CAAA,uEAAA,CAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,iCAAA;AAAA,UACR,IAAM,EAAA,yBAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,kCAAA;AAAA,YACT,uBAAyB,EAAA,IAAA;AAAA,YACzB,2BAAA,EAA6B,CAAC,MAAM,CAAA;AAAA,YACpC,mBAAqB,EAAA,IAAA;AAAA,YACrB,uBAAyB,EAAA,IAAA;AAAA,YACzB,8BAAgC,EAAA,IAAA;AAAA,YAChC,qBAAuB,EAAA;AAAA;AACzB;AACF;AACF,KACD;AAAA;AAEL;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubDeployKey.cjs.js","sources":["../../src/actions/githubDeployKey.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { getOctokitOptions } from './helpers';\nimport { Octokit } from 'octokit';\nimport Sodium from 'libsodium-wrappers';\nimport { examples } from './githubDeployKey.examples';\n\n/**\n * Creates an `github:deployKey:create` Scaffolder action that creates a Deploy Key\n *\n * @public\n */\nexport function createGithubDeployKeyAction(options: {\n integrations: ScmIntegrationRegistry;\n}) {\n const { integrations } = options;\n // For more information on how to define custom actions, see\n // https://backstage.io/docs/features/software-templates/writing-custom-actions\n return createTemplateAction<{\n repoUrl: string;\n publicKey: string;\n privateKey: string;\n deployKeyName: string;\n privateKeySecretName?: string;\n token?: string;\n }>({\n id: 'github:deployKey:create',\n description: 'Creates and stores Deploy Keys',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'publicKey', 'privateKey', 'deployKeyName'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n publicKey: {\n title: 'SSH Public Key',\n 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'.`,\n type: 'string',\n },\n privateKey: {\n title: 'SSH Private Key',\n description: `SSH Private Key generated from ssh-keygen`,\n type: 'string',\n },\n deployKeyName: {\n title: 'Deploy Key Name',\n description: `Name of the Deploy Key`,\n type: 'string',\n },\n privateKeySecretName: {\n title: 'Private Key GitHub Secret Name',\n 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`,\n type: 'string',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The token to use for authorization to GitHub',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n privateKeySecretName: {\n title: 'The GitHub Action Repo Secret Name for the Private Key',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n publicKey,\n privateKey,\n deployKeyName,\n privateKeySecretName = `${deployKeyName\n .split(' ')\n .join('_')\n .toLocaleUpperCase('en-US')}_PRIVATE_KEY`,\n token: providedToken,\n } = ctx.input;\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n token: providedToken,\n repoUrl: repoUrl,\n });\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError(`No owner provided for repo ${repoUrl}`);\n }\n\n const client = new Octokit(octokitOptions);\n\n await client.rest.repos.createDeployKey({\n owner: owner,\n repo: repo,\n title: deployKeyName,\n key: publicKey,\n });\n const publicKeyResponse = await client.rest.actions.getRepoPublicKey({\n owner: owner,\n repo: repo,\n });\n\n await Sodium.ready;\n const binaryKey = Sodium.from_base64(\n publicKeyResponse.data.key,\n Sodium.base64_variants.ORIGINAL,\n );\n const binarySecret = Sodium.from_string(privateKey);\n const encryptedBinarySecret = Sodium.crypto_box_seal(\n binarySecret,\n binaryKey,\n );\n const encryptedBase64Secret = Sodium.to_base64(\n encryptedBinarySecret,\n Sodium.base64_variants.ORIGINAL,\n );\n\n await client.rest.actions.createOrUpdateRepoSecret({\n owner: owner,\n repo: repo,\n secret_name: privateKeySecretName,\n encrypted_value: encryptedBase64Secret,\n key_id: publicKeyResponse.data.key_id,\n });\n\n ctx.output('privateKeySecretName', privateKeySecretName);\n },\n });\n}\n"],"names":["createTemplateAction","examples","getOctokitOptions","parseRepoUrl","InputError","Octokit","Sodium"],"mappings":";;;;;;;;;;;;;AAgCO,SAAS,4BAA4B,OAEzC,EAAA;AACD,EAAM,MAAA,EAAE,cAAiB,GAAA,OAAA
|
|
1
|
+
{"version":3,"file":"githubDeployKey.cjs.js","sources":["../../src/actions/githubDeployKey.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { getOctokitOptions } from './helpers';\nimport { Octokit } from 'octokit';\nimport Sodium from 'libsodium-wrappers';\nimport { examples } from './githubDeployKey.examples';\n\n/**\n * Creates an `github:deployKey:create` Scaffolder action that creates a Deploy Key\n *\n * @public\n */\nexport function createGithubDeployKeyAction(options: {\n integrations: ScmIntegrationRegistry;\n}) {\n const { integrations } = options;\n // For more information on how to define custom actions, see\n // https://backstage.io/docs/features/software-templates/writing-custom-actions\n return createTemplateAction<{\n repoUrl: string;\n publicKey: string;\n privateKey: string;\n deployKeyName: string;\n privateKeySecretName?: string;\n token?: string;\n }>({\n id: 'github:deployKey:create',\n description: 'Creates and stores Deploy Keys',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'publicKey', 'privateKey', 'deployKeyName'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n publicKey: {\n title: 'SSH Public Key',\n 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'.`,\n type: 'string',\n },\n privateKey: {\n title: 'SSH Private Key',\n description: `SSH Private Key generated from ssh-keygen`,\n type: 'string',\n },\n deployKeyName: {\n title: 'Deploy Key Name',\n description: `Name of the Deploy Key`,\n type: 'string',\n },\n privateKeySecretName: {\n title: 'Private Key GitHub Secret Name',\n 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`,\n type: 'string',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The token to use for authorization to GitHub',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n privateKeySecretName: {\n title: 'The GitHub Action Repo Secret Name for the Private Key',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n publicKey,\n privateKey,\n deployKeyName,\n privateKeySecretName = `${deployKeyName\n .split(' ')\n .join('_')\n .toLocaleUpperCase('en-US')}_PRIVATE_KEY`,\n token: providedToken,\n } = ctx.input;\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n token: providedToken,\n repoUrl: repoUrl,\n });\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError(`No owner provided for repo ${repoUrl}`);\n }\n\n const client = new Octokit(octokitOptions);\n\n await client.rest.repos.createDeployKey({\n owner: owner,\n repo: repo,\n title: deployKeyName,\n key: publicKey,\n });\n const publicKeyResponse = await client.rest.actions.getRepoPublicKey({\n owner: owner,\n repo: repo,\n });\n\n await Sodium.ready;\n const binaryKey = Sodium.from_base64(\n publicKeyResponse.data.key,\n Sodium.base64_variants.ORIGINAL,\n );\n const binarySecret = Sodium.from_string(privateKey);\n const encryptedBinarySecret = Sodium.crypto_box_seal(\n binarySecret,\n binaryKey,\n );\n const encryptedBase64Secret = Sodium.to_base64(\n encryptedBinarySecret,\n Sodium.base64_variants.ORIGINAL,\n );\n\n await client.rest.actions.createOrUpdateRepoSecret({\n owner: owner,\n repo: repo,\n secret_name: privateKeySecretName,\n encrypted_value: encryptedBase64Secret,\n key_id: publicKeyResponse.data.key_id,\n });\n\n ctx.output('privateKeySecretName', privateKeySecretName);\n },\n });\n}\n"],"names":["createTemplateAction","examples","getOctokitOptions","parseRepoUrl","InputError","Octokit","Sodium"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubDeployKey.examples.cjs.js","sources":["../../src/actions/githubDeployKey.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: 'Example 1: Create and store a Deploy Key',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:deployKey:create',\n name: 'Create and store a Deploy Key',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n publicKey: 'pubkey',\n privateKey: 'privkey',\n deployKeyName: 'Push Tags',\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAkBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,0CAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,+BAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,wCAAA;AAAA,YACT,SAAW,EAAA,QAAA;AAAA,YACX,UAAY,EAAA,SAAA;AAAA,YACZ,aAAe,EAAA
|
|
1
|
+
{"version":3,"file":"githubDeployKey.examples.cjs.js","sources":["../../src/actions/githubDeployKey.examples.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TemplateExample } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'yaml';\n\nexport const examples: TemplateExample[] = [\n {\n description: 'Example 1: Create and store a Deploy Key',\n example: yaml.stringify({\n steps: [\n {\n action: 'github:deployKey:create',\n name: 'Create and store a Deploy Key',\n input: {\n repoUrl: 'github.com?repo=repository&owner=owner',\n publicKey: 'pubkey',\n privateKey: 'privkey',\n deployKeyName: 'Push Tags',\n },\n },\n ],\n }),\n },\n];\n"],"names":["yaml"],"mappings":";;;;;;;;AAkBO,MAAM,QAA8B,GAAA;AAAA,EACzC;AAAA,IACE,WAAa,EAAA,0CAAA;AAAA,IACb,OAAA,EAASA,sBAAK,SAAU,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL;AAAA,UACE,MAAQ,EAAA,yBAAA;AAAA,UACR,IAAM,EAAA,+BAAA;AAAA,UACN,KAAO,EAAA;AAAA,YACL,OAAS,EAAA,wCAAA;AAAA,YACT,SAAW,EAAA,QAAA;AAAA,YACX,UAAY,EAAA,SAAA;AAAA,YACZ,aAAe,EAAA;AAAA;AACjB;AACF;AACF,KACD;AAAA;AAEL;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubEnvironment.cjs.js","sources":["../../src/actions/githubEnvironment.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { getOctokitOptions } from './helpers';\nimport { Octokit } from 'octokit';\nimport Sodium from 'libsodium-wrappers';\nimport { examples } from './gitHubEnvironment.examples';\nimport { CatalogApi } from '@backstage/catalog-client';\nimport { Entity } from '@backstage/catalog-model';\n\n/**\n * Creates an `github:environment:create` Scaffolder action that creates a Github Environment.\n *\n * @public\n */\nexport function createGithubEnvironmentAction(options: {\n integrations: ScmIntegrationRegistry;\n catalogClient?: CatalogApi;\n}) {\n const { integrations, catalogClient } = options;\n // For more information on how to define custom actions, see\n // https://backstage.io/docs/features/software-templates/writing-custom-actions\n return createTemplateAction<{\n repoUrl: string;\n name: string;\n deploymentBranchPolicy?: {\n protected_branches: boolean;\n custom_branch_policies: boolean;\n };\n customBranchPolicyNames?: string[];\n customTagPolicyNames?: string[];\n environmentVariables?: { [key: string]: string };\n secrets?: { [key: string]: string };\n token?: string;\n waitTimer?: number;\n preventSelfReview?: boolean;\n reviewers?: string[];\n }>({\n id: 'github:environment:create',\n description: 'Creates Deployment Environments',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'name'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n name: {\n title: 'Environment Name',\n description: `Name of the deployment environment to create`,\n type: 'string',\n },\n deploymentBranchPolicy: {\n title: 'Deployment Branch Policy',\n description: `The type of deployment branch policy for this environment. To allow all branches to deploy, set to null.`,\n type: 'object',\n required: ['protected_branches', 'custom_branch_policies'],\n properties: {\n protected_branches: {\n title: 'Protected Branches',\n 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.`,\n type: 'boolean',\n },\n custom_branch_policies: {\n title: 'Custom Branch Policies',\n 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.`,\n type: 'boolean',\n },\n },\n },\n customBranchPolicyNames: {\n title: 'Custom Branch Policy Name',\n description: `The name pattern that branches must match in order to deploy to the environment.\n\n 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.`,\n type: 'array',\n items: {\n type: 'string',\n },\n },\n customTagPolicyNames: {\n title: 'Custom Tag Policy Name',\n description: `The name pattern that tags must match in order to deploy to the environment.\n\n Wildcard characters will not match /. For example, to match tags 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.`,\n type: 'array',\n items: {\n type: 'string',\n },\n },\n environmentVariables: {\n title: 'Environment Variables',\n description: `Environment variables attached to the deployment environment`,\n type: 'object',\n },\n secrets: {\n title: 'Deployment Secrets',\n description: `Secrets attached to the deployment environment`,\n type: 'object',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The token to use for authorization to GitHub',\n },\n waitTimer: {\n title: 'Wait Timer',\n type: 'integer',\n description:\n 'The time to wait before creating or updating the environment (in milliseconds)',\n },\n preventSelfReview: {\n title: 'Prevent Self Review',\n type: 'boolean',\n description: 'Whether to prevent self-review for this environment',\n },\n reviewers: {\n title: 'Reviewers',\n type: 'array',\n description: 'Reviewers for this environment',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n name,\n deploymentBranchPolicy,\n customBranchPolicyNames,\n customTagPolicyNames,\n environmentVariables,\n secrets,\n token: providedToken,\n waitTimer,\n preventSelfReview,\n reviewers,\n } = ctx.input;\n\n // When environment creation step is executed right after a repo publish step, the repository might not be available immediately.\n // Add a 2-second delay before initiating the steps in this action.\n await new Promise(resolve => setTimeout(resolve, 2000));\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n token: providedToken,\n repoUrl: repoUrl,\n });\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError(`No owner provided for repo ${repoUrl}`);\n }\n\n const client = new Octokit(octokitOptions);\n const repository = await client.rest.repos.get({\n owner: owner,\n repo: repo,\n });\n\n // convert reviewers from catalog entity to Github user or team\n const githubReviewers: { type: 'User' | 'Team'; id: number }[] = [];\n if (reviewers) {\n let reviewersEntityRefs: Array<Entity | undefined> = [];\n // Fetch reviewers from Catalog\n const catalogResponse = await catalogClient?.getEntitiesByRefs({\n entityRefs: reviewers,\n });\n if (catalogResponse?.items?.length) {\n reviewersEntityRefs = catalogResponse.items;\n }\n\n for (const reviewerEntityRef of reviewersEntityRefs) {\n if (reviewerEntityRef?.kind === 'User') {\n try {\n const user = await client.rest.users.getByUsername({\n username: reviewerEntityRef.metadata.name,\n });\n githubReviewers.push({\n type: 'User',\n id: user.data.id,\n });\n } catch (error) {\n ctx.logger.error('User not found:', error);\n }\n } else if (reviewerEntityRef?.kind === 'Group') {\n try {\n const team = await client.rest.teams.getByName({\n org: owner,\n team_slug: reviewerEntityRef.metadata.name,\n });\n githubReviewers.push({\n type: 'Team',\n id: team.data.id,\n });\n } catch (error) {\n ctx.logger.error('Team not found:', error);\n }\n }\n }\n }\n\n await client.rest.repos.createOrUpdateEnvironment({\n owner: owner,\n repo: repo,\n environment_name: name,\n deployment_branch_policy: deploymentBranchPolicy ?? null,\n wait_timer: waitTimer ?? 0,\n prevent_self_review: preventSelfReview ?? false,\n reviewers: githubReviewers.length ? githubReviewers : null,\n });\n\n if (customBranchPolicyNames) {\n for (const item of customBranchPolicyNames) {\n await client.rest.repos.createDeploymentBranchPolicy({\n owner: owner,\n repo: repo,\n type: 'branch',\n environment_name: name,\n name: item,\n });\n }\n }\n\n if (customTagPolicyNames) {\n for (const item of customTagPolicyNames) {\n await client.rest.repos.createDeploymentBranchPolicy({\n owner: owner,\n repo: repo,\n type: 'tag',\n environment_name: name,\n name: item,\n });\n }\n }\n\n for (const [key, value] of Object.entries(environmentVariables ?? {})) {\n await client.rest.actions.createEnvironmentVariable({\n repository_id: repository.data.id,\n owner: owner,\n repo: repo,\n environment_name: name,\n name: key,\n value,\n });\n }\n\n if (secrets) {\n const publicKeyResponse =\n await client.rest.actions.getEnvironmentPublicKey({\n repository_id: repository.data.id,\n owner: owner,\n repo: repo,\n environment_name: name,\n });\n\n await Sodium.ready;\n const binaryKey = Sodium.from_base64(\n publicKeyResponse.data.key,\n Sodium.base64_variants.ORIGINAL,\n );\n for (const [key, value] of Object.entries(secrets)) {\n const binarySecret = Sodium.from_string(value);\n const encryptedBinarySecret = Sodium.crypto_box_seal(\n binarySecret,\n binaryKey,\n );\n const encryptedBase64Secret = Sodium.to_base64(\n encryptedBinarySecret,\n Sodium.base64_variants.ORIGINAL,\n );\n\n await client.rest.actions.createOrUpdateEnvironmentSecret({\n repository_id: repository.data.id,\n owner: owner,\n repo: repo,\n environment_name: name,\n secret_name: key,\n encrypted_value: encryptedBase64Secret,\n key_id: publicKeyResponse.data.key_id,\n });\n }\n }\n },\n });\n}\n"],"names":["createTemplateAction","examples","getOctokitOptions","parseRepoUrl","InputError","Octokit","Sodium"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"githubEnvironment.cjs.js","sources":["../../src/actions/githubEnvironment.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError } from '@backstage/errors';\nimport {\n createTemplateAction,\n parseRepoUrl,\n} from '@backstage/plugin-scaffolder-node';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { getOctokitOptions } from './helpers';\nimport { Octokit } from 'octokit';\nimport Sodium from 'libsodium-wrappers';\nimport { examples } from './gitHubEnvironment.examples';\nimport { CatalogApi } from '@backstage/catalog-client';\nimport { Entity } from '@backstage/catalog-model';\n\n/**\n * Creates an `github:environment:create` Scaffolder action that creates a Github Environment.\n *\n * @public\n */\nexport function createGithubEnvironmentAction(options: {\n integrations: ScmIntegrationRegistry;\n catalogClient?: CatalogApi;\n}) {\n const { integrations, catalogClient } = options;\n // For more information on how to define custom actions, see\n // https://backstage.io/docs/features/software-templates/writing-custom-actions\n return createTemplateAction<{\n repoUrl: string;\n name: string;\n deploymentBranchPolicy?: {\n protected_branches: boolean;\n custom_branch_policies: boolean;\n };\n customBranchPolicyNames?: string[];\n customTagPolicyNames?: string[];\n environmentVariables?: { [key: string]: string };\n secrets?: { [key: string]: string };\n token?: string;\n waitTimer?: number;\n preventSelfReview?: boolean;\n reviewers?: string[];\n }>({\n id: 'github:environment:create',\n description: 'Creates Deployment Environments',\n examples,\n schema: {\n input: {\n type: 'object',\n required: ['repoUrl', 'name'],\n properties: {\n repoUrl: {\n title: 'Repository Location',\n description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`,\n type: 'string',\n },\n name: {\n title: 'Environment Name',\n description: `Name of the deployment environment to create`,\n type: 'string',\n },\n deploymentBranchPolicy: {\n title: 'Deployment Branch Policy',\n description: `The type of deployment branch policy for this environment. To allow all branches to deploy, set to null.`,\n type: 'object',\n required: ['protected_branches', 'custom_branch_policies'],\n properties: {\n protected_branches: {\n title: 'Protected Branches',\n 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.`,\n type: 'boolean',\n },\n custom_branch_policies: {\n title: 'Custom Branch Policies',\n 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.`,\n type: 'boolean',\n },\n },\n },\n customBranchPolicyNames: {\n title: 'Custom Branch Policy Name',\n description: `The name pattern that branches must match in order to deploy to the environment.\n\n 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.`,\n type: 'array',\n items: {\n type: 'string',\n },\n },\n customTagPolicyNames: {\n title: 'Custom Tag Policy Name',\n description: `The name pattern that tags must match in order to deploy to the environment.\n\n Wildcard characters will not match /. For example, to match tags 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.`,\n type: 'array',\n items: {\n type: 'string',\n },\n },\n environmentVariables: {\n title: 'Environment Variables',\n description: `Environment variables attached to the deployment environment`,\n type: 'object',\n },\n secrets: {\n title: 'Deployment Secrets',\n description: `Secrets attached to the deployment environment`,\n type: 'object',\n },\n token: {\n title: 'Authentication Token',\n type: 'string',\n description: 'The token to use for authorization to GitHub',\n },\n waitTimer: {\n title: 'Wait Timer',\n type: 'integer',\n description:\n 'The time to wait before creating or updating the environment (in milliseconds)',\n },\n preventSelfReview: {\n title: 'Prevent Self Review',\n type: 'boolean',\n description: 'Whether to prevent self-review for this environment',\n },\n reviewers: {\n title: 'Reviewers',\n type: 'array',\n description: 'Reviewers for this environment',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n async handler(ctx) {\n const {\n repoUrl,\n name,\n deploymentBranchPolicy,\n customBranchPolicyNames,\n customTagPolicyNames,\n environmentVariables,\n secrets,\n token: providedToken,\n waitTimer,\n preventSelfReview,\n reviewers,\n } = ctx.input;\n\n // When environment creation step is executed right after a repo publish step, the repository might not be available immediately.\n // Add a 2-second delay before initiating the steps in this action.\n await new Promise(resolve => setTimeout(resolve, 2000));\n\n const octokitOptions = await getOctokitOptions({\n integrations,\n token: providedToken,\n repoUrl: repoUrl,\n });\n\n const { owner, repo } = parseRepoUrl(repoUrl, integrations);\n\n if (!owner) {\n throw new InputError(`No owner provided for repo ${repoUrl}`);\n }\n\n const client = new Octokit(octokitOptions);\n const repository = await client.rest.repos.get({\n owner: owner,\n repo: repo,\n });\n\n // convert reviewers from catalog entity to Github user or team\n const githubReviewers: { type: 'User' | 'Team'; id: number }[] = [];\n if (reviewers) {\n let reviewersEntityRefs: Array<Entity | undefined> = [];\n // Fetch reviewers from Catalog\n const catalogResponse = await catalogClient?.getEntitiesByRefs({\n entityRefs: reviewers,\n });\n if (catalogResponse?.items?.length) {\n reviewersEntityRefs = catalogResponse.items;\n }\n\n for (const reviewerEntityRef of reviewersEntityRefs) {\n if (reviewerEntityRef?.kind === 'User') {\n try {\n const user = await client.rest.users.getByUsername({\n username: reviewerEntityRef.metadata.name,\n });\n githubReviewers.push({\n type: 'User',\n id: user.data.id,\n });\n } catch (error) {\n ctx.logger.error('User not found:', error);\n }\n } else if (reviewerEntityRef?.kind === 'Group') {\n try {\n const team = await client.rest.teams.getByName({\n org: owner,\n team_slug: reviewerEntityRef.metadata.name,\n });\n githubReviewers.push({\n type: 'Team',\n id: team.data.id,\n });\n } catch (error) {\n ctx.logger.error('Team not found:', error);\n }\n }\n }\n }\n\n await client.rest.repos.createOrUpdateEnvironment({\n owner: owner,\n repo: repo,\n environment_name: name,\n deployment_branch_policy: deploymentBranchPolicy ?? null,\n wait_timer: waitTimer ?? 0,\n prevent_self_review: preventSelfReview ?? false,\n reviewers: githubReviewers.length ? githubReviewers : null,\n });\n\n if (customBranchPolicyNames) {\n for (const item of customBranchPolicyNames) {\n await client.rest.repos.createDeploymentBranchPolicy({\n owner: owner,\n repo: repo,\n type: 'branch',\n environment_name: name,\n name: item,\n });\n }\n }\n\n if (customTagPolicyNames) {\n for (const item of customTagPolicyNames) {\n await client.rest.repos.createDeploymentBranchPolicy({\n owner: owner,\n repo: repo,\n type: 'tag',\n environment_name: name,\n name: item,\n });\n }\n }\n\n for (const [key, value] of Object.entries(environmentVariables ?? {})) {\n await client.rest.actions.createEnvironmentVariable({\n repository_id: repository.data.id,\n owner: owner,\n repo: repo,\n environment_name: name,\n name: key,\n value,\n });\n }\n\n if (secrets) {\n const publicKeyResponse =\n await client.rest.actions.getEnvironmentPublicKey({\n repository_id: repository.data.id,\n owner: owner,\n repo: repo,\n environment_name: name,\n });\n\n await Sodium.ready;\n const binaryKey = Sodium.from_base64(\n publicKeyResponse.data.key,\n Sodium.base64_variants.ORIGINAL,\n );\n for (const [key, value] of Object.entries(secrets)) {\n const binarySecret = Sodium.from_string(value);\n const encryptedBinarySecret = Sodium.crypto_box_seal(\n binarySecret,\n binaryKey,\n );\n const encryptedBase64Secret = Sodium.to_base64(\n encryptedBinarySecret,\n Sodium.base64_variants.ORIGINAL,\n );\n\n await client.rest.actions.createOrUpdateEnvironmentSecret({\n repository_id: repository.data.id,\n owner: owner,\n repo: repo,\n environment_name: name,\n secret_name: key,\n encrypted_value: encryptedBase64Secret,\n key_id: publicKeyResponse.data.key_id,\n });\n }\n }\n },\n });\n}\n"],"names":["createTemplateAction","examples","getOctokitOptions","parseRepoUrl","InputError","Octokit","Sodium"],"mappings":"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"}
|