From cf95c5137c940470f3bda7fb91820ad5bc460a0a Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Mon, 1 May 2023 12:39:54 -0500 Subject: [PATCH] Configuration for action column in Jenkins table Signed-off-by: Tim Soslow --- .changeset/real-baboons-vanish.md | 5 +++ plugins/jenkins/README.md | 18 +++++++++++ plugins/jenkins/api-report.md | 2 +- .../src/assets/customize_action_view.png | Bin 0 -> 52575 bytes .../BuildsPage/lib/CITable/CITable.tsx | 18 +++++++++++ plugins/jenkins/src/options.ts | 29 ++++++++++++++++++ plugins/jenkins/src/plugin.ts | 9 ++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 .changeset/real-baboons-vanish.md create mode 100644 plugins/jenkins/src/assets/customize_action_view.png create mode 100644 plugins/jenkins/src/options.ts diff --git a/.changeset/real-baboons-vanish.md b/.changeset/real-baboons-vanish.md new file mode 100644 index 0000000000..93c30d8389 --- /dev/null +++ b/.changeset/real-baboons-vanish.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins': minor +--- + +Added configuration for the action column in Jenkins CI/CD table. It can be set to rebuild, view, or replay. diff --git a/plugins/jenkins/README.md b/plugins/jenkins/README.md index 2a0ec451c8..12c6a197da 100644 --- a/plugins/jenkins/README.md +++ b/plugins/jenkins/README.md @@ -86,6 +86,24 @@ spec: 8. Click the component in the catalog. You should now see Jenkins builds, and a last build result for your master build. +## Customize Action + +You can customize the action in the CI/CD table. + +| Action | Description | +| ----------------- | ----------------------- | +| rebuild (default) | Run new build with API | +| view | link to view build page | +| replay | link to start replay | + +```yaml +jenkinsPlugin.__experimentalReconfigure({ + tableAction: 'view', +}); +``` + +Customized action - view + ## Features - View all runs inside a folder diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index a2ae16988b..bcba48e4b2 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -98,7 +98,7 @@ const jenkinsPlugin: BackstagePlugin< entityContent: RouteRef; }, {}, - {} + JenkinsInputPluginOptions >; export { jenkinsPlugin }; export { jenkinsPlugin as plugin }; diff --git a/plugins/jenkins/src/assets/customize_action_view.png b/plugins/jenkins/src/assets/customize_action_view.png new file mode 100644 index 0000000000000000000000000000000000000000..8be43c5971e6f764abd7d0c010dd967784271828 GIT binary patch literal 52575 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 { if (count !== 0) { @@ -202,6 +204,22 @@ const generatedColumns: TableColumn[] = [ } }; + const { tableAction } = useJenkinsPluginOptions(); + + if (tableAction === 'view') { + return row.lastBuild?.url ? ( + + + + ) : null; + } else if (tableAction === 'replay') { + return row.lastBuild?.url ? ( + + + + ) : null; + } + return ( <> diff --git a/plugins/jenkins/src/options.ts b/plugins/jenkins/src/options.ts new file mode 100644 index 0000000000..f78e6a75e9 --- /dev/null +++ b/plugins/jenkins/src/options.ts @@ -0,0 +1,29 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { usePluginOptions } from '@backstage/core-plugin-api/alpha'; + +export type JenkinsPluginOptions = { + tableAction: string; +}; + +/** @ignore */ +export type JenkinsInputPluginOptions = { + tableAction: string; +}; + +export const useJenkinsPluginOptions = () => + usePluginOptions(); diff --git a/plugins/jenkins/src/plugin.ts b/plugins/jenkins/src/plugin.ts index 7dbb6bfde1..ddef0a7dfd 100644 --- a/plugins/jenkins/src/plugin.ts +++ b/plugins/jenkins/src/plugin.ts @@ -25,6 +25,7 @@ import { identityApiRef, } from '@backstage/core-plugin-api'; import { JenkinsClient, jenkinsApiRef } from './api'; +import { JenkinsInputPluginOptions, JenkinsPluginOptions } from './options'; /** @public */ export const rootRouteRef = createRouteRef({ @@ -52,6 +53,14 @@ export const jenkinsPlugin = createPlugin({ routes: { entityContent: rootRouteRef, }, + __experimentalConfigure( + options?: JenkinsInputPluginOptions, + ): JenkinsPluginOptions { + const defaultOptions = { + tableAction: 'rebuild', + }; + return { ...defaultOptions, ...options }; + }, }); /** @public */