@backstage-community/plugin-github-actions 0.6.23 → 0.6.25
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 +12 -0
- package/README.md +28 -23
- package/alpha/package.json +1 -1
- package/dist/alpha/entityCards.esm.js +5 -4
- package/dist/alpha/entityCards.esm.js.map +1 -1
- package/dist/alpha/entityContent.esm.js +2 -1
- package/dist/alpha/entityContent.esm.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @backstage-community/plugin-github-actions
|
|
2
2
|
|
|
3
|
+
## 0.6.25
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e657f8d: Add default filtering based on required annotation to the new frontend system components
|
|
8
|
+
|
|
9
|
+
## 0.6.24
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 9501620: Updating README to include missing steps
|
|
14
|
+
|
|
3
15
|
## 0.6.23
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@ Website: [https://github.com/actions](https://github.com/actions)
|
|
|
9
9
|
- [Screenshots](#screenshots)
|
|
10
10
|
- [Setup](#setup)
|
|
11
11
|
- [Generic Requirements](#generic-requirements)
|
|
12
|
+
- [Provide OAuth Credentials](#provide-oauth-credentials)
|
|
12
13
|
- [Installation](#installation)
|
|
13
14
|
- [Integrating with `EntityPage`](#integrating-with-entitypage)
|
|
14
15
|
- [Integrating with `EntityPage` (New Frontend System)](#integrating-with-entitypage-new-frontend-system)
|
|
@@ -25,13 +26,21 @@ TBD
|
|
|
25
26
|
|
|
26
27
|
### Generic Requirements
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
#### Provide OAuth Credentials
|
|
30
|
+
|
|
31
|
+
Create an OAuth App in your GitHub organization, setting the callback URL to:
|
|
32
|
+
|
|
33
|
+
`http://localhost:7007/api/auth/github/handler/frame`
|
|
34
|
+
|
|
35
|
+
Replacing `localhost:7007` with the base URL of your backstage backend instance.
|
|
36
|
+
|
|
37
|
+
> **Note**: This setup can also be completed with a personal GitHub account.
|
|
38
|
+
> Keep in mind that using a personal account versus an organization account will affect which repositories the app can access.
|
|
39
|
+
|
|
31
40
|
1. Take the Client ID and Client Secret from the newly created app's settings page and you can do either:
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
|
|
42
|
+
- Put them into `AUTH_GITHUB_CLIENT_ID` and `AUTH_GITHUB_CLIENT_SECRET` environment variables.
|
|
43
|
+
- Add them to the app-config like below:
|
|
35
44
|
|
|
36
45
|
```yaml
|
|
37
46
|
auth:
|
|
@@ -42,7 +51,7 @@ TBD
|
|
|
42
51
|
clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
|
|
43
52
|
```
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
2. Annotate your component with a correct GitHub Actions repository and owner:
|
|
46
55
|
|
|
47
56
|
The annotation key is `github.com/project-slug`.
|
|
48
57
|
|
|
@@ -71,6 +80,18 @@ TBD
|
|
|
71
80
|
yarn --cwd packages/app add @backstage-community/plugin-github-actions
|
|
72
81
|
```
|
|
73
82
|
|
|
83
|
+
> **Note**: If you are using GitHub auth to sign in, you may already have the GitHub provider, **if it is not the case**, install it by running:
|
|
84
|
+
>
|
|
85
|
+
> ```tsx
|
|
86
|
+
> yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-github-provider
|
|
87
|
+
> ```
|
|
88
|
+
>
|
|
89
|
+
> And add the following dependency to your backend index file:
|
|
90
|
+
>
|
|
91
|
+
> ```tsx
|
|
92
|
+
> backend.add(import('@backstage/plugin-auth-backend-module-github-provider'));
|
|
93
|
+
> ```
|
|
94
|
+
|
|
74
95
|
### Integrating with `EntityPage`
|
|
75
96
|
|
|
76
97
|
1. Add to the app `EntityPage` component:
|
|
@@ -99,7 +120,7 @@ const serviceEntityPage = (
|
|
|
99
120
|
|
|
100
121
|
Follow this section if you are using Backstage's [new frontend system](https://backstage.io/docs/frontend-system/).
|
|
101
122
|
|
|
102
|
-
|
|
123
|
+
Import `githubActionsPlugin` in your `App.tsx` and add it to your app's `features` array:
|
|
103
124
|
|
|
104
125
|
```typescript
|
|
105
126
|
import githubActionsPlugin from '@backstage-community/plugin-github-actions/alpha';
|
|
@@ -115,22 +136,6 @@ export const app = createApp({
|
|
|
115
136
|
});
|
|
116
137
|
```
|
|
117
138
|
|
|
118
|
-
2. Next, enable your desired extensions in `app-config.yaml`. By default, the content and cards will only appear on entities
|
|
119
|
-
that are Components. You can override that behavior here by adding a config block, demonstrated on the 'recent-workflow' card.
|
|
120
|
-
|
|
121
|
-
```yaml
|
|
122
|
-
app:
|
|
123
|
-
extensions:
|
|
124
|
-
- entity-content:github-actions/entity
|
|
125
|
-
- entity-card:github-actions/latest-workflow-run
|
|
126
|
-
- entity-card:github-actions/latest-branch-workflow-runs
|
|
127
|
-
- entity-card:github-actions/recent-workflow-runs:
|
|
128
|
-
config:
|
|
129
|
-
filter: kind:component,api,group
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
3. Whichever extensions you've enabled should now appear in your entity page.
|
|
133
|
-
|
|
134
139
|
### Self-hosted / Enterprise GitHub
|
|
135
140
|
|
|
136
141
|
The plugin will try to use `backstage.io/source-location` or `backstage.io/managed-by-location`
|
package/alpha/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
|
3
|
+
import { isGithubActionsAvailable } from '../components/Router.esm.js';
|
|
3
4
|
|
|
4
5
|
const entityGithubActionsCard = EntityCardBlueprint.make({
|
|
5
6
|
name: "workflow-runs",
|
|
6
7
|
params: {
|
|
7
|
-
filter:
|
|
8
|
+
filter: isGithubActionsAvailable,
|
|
8
9
|
loader: () => import('../components/Router.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.Router, { view: "cards" }))
|
|
9
10
|
}
|
|
10
11
|
});
|
|
@@ -19,7 +20,7 @@ const entityLatestGithubActionRunCard = EntityCardBlueprint.makeWithOverrides({
|
|
|
19
20
|
},
|
|
20
21
|
factory(originalFactory, { config }) {
|
|
21
22
|
return originalFactory({
|
|
22
|
-
filter:
|
|
23
|
+
filter: isGithubActionsAvailable,
|
|
23
24
|
loader: async () => import('../components/Cards/index.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.LatestWorkflowRunCard, { ...config.props }))
|
|
24
25
|
});
|
|
25
26
|
}
|
|
@@ -35,7 +36,7 @@ const entityLatestGithubActionsForBranchCard = EntityCardBlueprint.makeWithOverr
|
|
|
35
36
|
},
|
|
36
37
|
factory(originalFactory, { config }) {
|
|
37
38
|
return originalFactory({
|
|
38
|
-
filter:
|
|
39
|
+
filter: isGithubActionsAvailable,
|
|
39
40
|
loader: async () => import('../components/Cards/index.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.LatestWorkflowsForBranchCard, { ...config.props }))
|
|
40
41
|
});
|
|
41
42
|
}
|
|
@@ -53,7 +54,7 @@ const entityRecentGithubActionsRunsCard = EntityCardBlueprint.makeWithOverrides(
|
|
|
53
54
|
},
|
|
54
55
|
factory(originalFactory, { config }) {
|
|
55
56
|
return originalFactory({
|
|
56
|
-
filter:
|
|
57
|
+
filter: isGithubActionsAvailable,
|
|
57
58
|
loader: async () => import('../components/Cards/index.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.RecentWorkflowRunsCard, { ...config.props }))
|
|
58
59
|
});
|
|
59
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityCards.esm.js","sources":["../../src/alpha/entityCards.tsx"],"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 */\nimport React from 'react';\nimport { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';\n\n/**\n * @alpha\n */\nexport const entityGithubActionsCard = EntityCardBlueprint.make({\n name: 'workflow-runs',\n params: {\n filter:
|
|
1
|
+
{"version":3,"file":"entityCards.esm.js","sources":["../../src/alpha/entityCards.tsx"],"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 */\nimport React from 'react';\nimport { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { isGithubActionsAvailable } from '../components/Router';\n\n/**\n * @alpha\n */\nexport const entityGithubActionsCard = EntityCardBlueprint.make({\n name: 'workflow-runs',\n params: {\n filter: isGithubActionsAvailable,\n loader: () =>\n import('../components/Router').then(m => <m.Router view=\"cards\" />),\n },\n});\n\n/**\n * @alpha\n */\nexport const entityLatestGithubActionRunCard =\n EntityCardBlueprint.makeWithOverrides({\n name: 'latest-workflow-run',\n config: {\n schema: {\n props: z =>\n z\n .object({\n branch: z.string().default('master'),\n })\n .default({}),\n },\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n filter: isGithubActionsAvailable,\n loader: async () =>\n import('../components/Cards').then(m => (\n <m.LatestWorkflowRunCard {...config.props} />\n )),\n });\n },\n });\n\n/**\n * @alpha\n */\nexport const entityLatestGithubActionsForBranchCard =\n EntityCardBlueprint.makeWithOverrides({\n name: 'latest-branch-workflow-runs',\n config: {\n schema: {\n props: z =>\n z\n .object({\n branch: z.string().default('master'),\n })\n .default({}),\n },\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n filter: isGithubActionsAvailable,\n loader: async () =>\n import('../components/Cards').then(m => (\n <m.LatestWorkflowsForBranchCard {...config.props} />\n )),\n });\n },\n });\n\n/**\n * @alpha\n */\nexport const entityRecentGithubActionsRunsCard =\n EntityCardBlueprint.makeWithOverrides({\n name: 'recent-workflow-runs',\n config: {\n schema: {\n props: z =>\n z\n .object({\n branch: z.string().default('master'),\n dense: z.boolean().default(false),\n limit: z.number().default(5).optional(),\n })\n .default({}),\n },\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n filter: isGithubActionsAvailable,\n loader: async () =>\n import('../components/Cards').then(m => (\n <m.RecentWorkflowRunsCard {...config.props} />\n )),\n });\n },\n });\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { convertLegacyRouteRef } from '@backstage/core-compat-api';
|
|
3
3
|
import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
|
4
|
+
import { isGithubActionsAvailable } from '../components/Router.esm.js';
|
|
4
5
|
import { rootRouteRef } from '../routes.esm.js';
|
|
5
6
|
|
|
6
7
|
const entityGithubActionsContent = EntityContentBlueprint.make({
|
|
@@ -8,7 +9,7 @@ const entityGithubActionsContent = EntityContentBlueprint.make({
|
|
|
8
9
|
params: {
|
|
9
10
|
defaultPath: "github-actions",
|
|
10
11
|
defaultTitle: "GitHub Actions",
|
|
11
|
-
filter:
|
|
12
|
+
filter: isGithubActionsAvailable,
|
|
12
13
|
routeRef: convertLegacyRouteRef(rootRouteRef),
|
|
13
14
|
loader: () => import('../components/Router.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.Router, { view: "table" }))
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityContent.esm.js","sources":["../../src/alpha/entityContent.tsx"],"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 */\nimport React from 'react';\nimport { convertLegacyRouteRef } from '@backstage/core-compat-api';\nimport { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { rootRouteRef } from '../routes';\n\n/**\n * @alpha\n */\nexport const entityGithubActionsContent = EntityContentBlueprint.make({\n name: 'entity',\n params: {\n defaultPath: 'github-actions',\n defaultTitle: 'GitHub Actions',\n filter:
|
|
1
|
+
{"version":3,"file":"entityContent.esm.js","sources":["../../src/alpha/entityContent.tsx"],"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 */\nimport React from 'react';\nimport { convertLegacyRouteRef } from '@backstage/core-compat-api';\nimport { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { isGithubActionsAvailable } from '../components/Router';\nimport { rootRouteRef } from '../routes';\n\n/**\n * @alpha\n */\nexport const entityGithubActionsContent = EntityContentBlueprint.make({\n name: 'entity',\n params: {\n defaultPath: 'github-actions',\n defaultTitle: 'GitHub Actions',\n filter: isGithubActionsAvailable,\n routeRef: convertLegacyRouteRef(rootRouteRef),\n loader: () =>\n import('../components/Router').then(m => <m.Router view=\"table\" />),\n },\n});\n"],"names":[],"mappings":";;;;;;AAwBa,MAAA,0BAAA,GAA6B,uBAAuB,IAAK,CAAA;AAAA,EACpE,IAAM,EAAA,QAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,WAAa,EAAA,gBAAA;AAAA,IACb,YAAc,EAAA,gBAAA;AAAA,IACd,MAAQ,EAAA,wBAAA;AAAA,IACR,QAAA,EAAU,sBAAsB,YAAY,CAAA;AAAA,IAC5C,MAAQ,EAAA,MACN,OAAO,6BAAsB,CAAE,CAAA,IAAA,CAAK,CAAK,CAAA,qBAAA,KAAA,CAAA,aAAA,CAAC,CAAE,CAAA,MAAA,EAAF,EAAS,IAAA,EAAK,SAAQ,CAAE,CAAA;AAAA,GACtE;AACF,CAAC;;;;"}
|