Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
8244965
feat: Initial 4.18/PF5 changes (#10431)
keithchong Aug 12, 2026
cab7941
Review comments
keithchong Aug 13, 2026
ab50579
Update jest
keithchong Aug 13, 2026
25ceac9
Add isExpanded to kebab toggle
keithchong Aug 13, 2026
0dca06a
Merge pull request #262 from keithchong/patternfly-5
keithchong Aug 13, 2026
dc047db
release-4.18: Add Labels column (#10541)
keithchong Aug 18, 2026
8fe3aa0
GITOPS-10535: add unit tests for core string and URL utilities
trdoyle81 Aug 14, 2026
7c63d0f
Merge pull request #267 from keithchong/release-4.18-LabelsColumn
keithchong Aug 19, 2026
2ab6506
Merge pull request #268 from trdoyle81/GITOPS-10535-console-plugin-co…
keithchong Aug 20, 2026
80329ef
feat: add pagination to list pages
aali309 Aug 18, 2026
cc703cc
add pagination to other list pages && tests
aali309 Aug 19, 2026
c8494d0
apply coderabbit review comments
aali309 Aug 19, 2026
ff3f476
Merge pull request #272 from aali309/pagination-release-4.18
keithchong Aug 20, 2026
67aab8e
Add pagination to the other tables under details tabs
aali309 Aug 20, 2026
9b99a0d
Merge pull request #274 from aali309/paginationPart2-release-4.18
keithchong Aug 21, 2026
2f16980
horizontally align top and bottom pagination widgets
aali309 Aug 21, 2026
3e9c761
release-4.18: Translate strings in the GitOps Plugin (#9408)
keithchong Aug 21, 2026
b130c52
Merge pull request #276 from aali309/alignPagination-release-4.18
keithchong Aug 21, 2026
5da5f29
Update version for 4.18; Update dependencies
keithchong Aug 21, 2026
d735d0c
Merge pull request #279 from keithchong/4.18-UpdateVersionAndDependen…
keithchong Aug 22, 2026
161dbb7
Revert some changes From PR279
keithchong Aug 24, 2026
4210de6
Merge pull request #280 from keithchong/4.18-RevertChangesAndUpdateVe…
keithchong Aug 24, 2026
f99321a
Merge pull request #278 from keithchong/release-4.18-9408-Translations
aali309 Aug 24, 2026
c3ba13e
fix: getAppSetStatus incorrectly treats ApplicationSetUpToDate=True a…
aali309 Sep 1, 2026
146f97e
Merge pull request #285 from aali309/GITOPS-11094-4.18
keithchong Sep 1, 2026
9f6ef2f
fix: history tab throws runtime error for multi-source Applications
aali309 Aug 31, 2026
266d84f
Merge pull request #291 from aali309/GITOPS-10933-4.18
keithchong Sep 2, 2026
8dfc917
fix: Label sorting inconsistency when object key order differs
aali309 Aug 31, 2026
0034442
Merge pull request #295 from aali309/GITOPS-10855-release4.18
keithchong Sep 2, 2026
799eb5a
Merge pull request #271 from aali309/GITOPS-10081
keithchong Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Unit Tests

on:
push:
branches: [main]
branches: [release-4.18]
pull_request:
branches: [main]
branches: [release-4.18]

jobs:
test:
Expand Down
2 changes: 1 addition & 1 deletion .tekton/openshift-gitops-console-plugin-pull-request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ metadata:
build.appstudio.redhat.com/pull_request_number: '{{pull_request_number}}'
build.appstudio.redhat.com/target_branch: '{{target_branch}}'
pipelinesascode.tekton.dev/max-keep-runs: "3"
pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch == "main"
pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch == "release-4.18"
creationTimestamp:
labels:
appstudio.openshift.io/application: openshift-gitops-operator
Expand Down
2 changes: 1 addition & 1 deletion .tekton/openshift-gitops-console-plugin-push.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
build.appstudio.redhat.com/commit_sha: '{{revision}}'
build.appstudio.redhat.com/target_branch: '{{target_branch}}'
pipelinesascode.tekton.dev/max-keep-runs: "3"
pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main"
pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "release-4.18"
creationTimestamp:
labels:
appstudio.openshift.io/application: openshift-gitops-operator
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# OpenShift Console GitOps Plugin
Based on [Openshift Console dynamic plugin](https://github.com/openshift/console/tree/master/frontend/packages/console-dynamic-plugin-sdk), this plugin implement the console elements for GitOps.

## Documentation

[docs/](docs/) provide description of what the UI does. Preview with `pnpm serve-docs` (http://localhost:3000).

## Building
### Option 1: Without running Console locally
Expand Down
29 changes: 24 additions & 5 deletions __mocks__/patternfly-react-core.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,27 @@ export const Popover: React.FC<any> = ({ headerContent, bodyContent, children })
</div>
);

export const MenuToggle = React.forwardRef<any, any>(({ children, variant, ...rest }, ref) => (
<button ref={ref} data-variant={variant} {...rest}>{children}</button>
));
export const MenuToggle = React.forwardRef<any, any>(
({ children, variant, isExpanded, ...rest }, ref) => (
<button ref={ref} data-variant={variant} data-expanded={isExpanded} {...rest}>
{children}
</button>
),
);
MenuToggle.displayName = 'MenuToggle';

export type MenuToggleElement = HTMLButtonElement;
export type MenuToggleProps = any;

export const Dropdown: React.FC<any> = ({ children, isOpen, toggle, ...props }) => (
export const Dropdown: React.FC<any> = ({
children,
isOpen,
toggle,
//patternfly-only props — keep off the dom to avoid react warnings in tests
popperProps: _popperProps,
onOpenChange: _onOpenChange,
...props
}) => (
<div data-testid="dropdown" data-open={isOpen} {...props}>
{typeof toggle === 'function' ? toggle(null) : toggle}
{isOpen && children}
Expand All @@ -30,7 +42,14 @@ export const Dropdown: React.FC<any> = ({ children, isOpen, toggle, ...props })
export const DropdownList: React.FC<any> = ({ children }) => <ul>{children}</ul>;

export const DropdownItem: React.FC<any> = ({ children, description, isDisabled, ...props }) => (
<li data-disabled={isDisabled} {...props}>{children}{description && <small>{description}</small>}</li>
<li data-disabled={isDisabled} {...props}>
{children}
{description && <small>{description}</small>}
</li>
);

export const Divider: React.FC<any> = ({ component: Component = 'hr', ...props }) => (
<Component data-testid="divider" {...props} />
);

export const Tooltip: React.FC<any> = ({ content, children }) => (
Expand Down
63 changes: 63 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Working with the GitOps Console plugin

The GitOps Console plugin extends the OpenShift Container Platform web console by adding GitOps resources. The plugin is available as part of the Red Hat OpenShift GitOps Operator and provides a console UI for managing Argo CD and Argo Rollouts custom resources.

After you install the Red Hat OpenShift GitOps Operator, the OpenShift web console displays a **GitOps** navigation tab in the **Administrator** or **Core platform** perspective. The plugin is enabled by default. The GitOps navigation tab replaces the previous **Environments** tab and related pages in the **Developer** perspective.

The GitOps navigation tab provides access to the following Argo CD and Argo Rollouts resources:

* Applications
* ApplicationSets
* AppProjects
* ImageUpdaters
* Rollouts

## Prerequisites

* You have access to OpenShift Container Platform 4.18 or later.
* You have installed the Red Hat OpenShift GitOps Operator.

## GitOps resources in the web console

Each GitOps resource provides list and details pages that follow the standard OpenShift web console experience.

You can use these pages to:

* View GitOps resources in a selected namespace
* Create resources by using YAML templates
* Edit labels and annotations
* Filter resources by status, where applicable
* Paginate large filtered lists and details tables (10, 20, 50, or 100 items per page; default 50)
* Access related resources and events

The GitOps Console plugin integrates with the console navigation, allowing you to navigate between related resources and access contextual actions for each resource type.

### Search and YAML templates

The GitOps Console plugin provides search and template capabilities:

* **Search integration**: Search pages are enabled for Applications and ApplicationSets, allowing you to find instances from global search like other first-class resources.
* **YAML templates**: Pre-configured YAML templates are registered for Applications, ApplicationSets, AppProjects, ImageUpdaters, and Rollouts. These templates provide starter configurations with placeholders to speed up resource creation from the console.

## Additional resources

* [Enable the GitOps Console plugin](admin-enable-plugin.md)
* [Applications in the GitOps Console](applications.md)
* [ApplicationSets in the GitOps Console](applicationsets.md)
* [AppProjects in the GitOps Console](appprojects-rbac.md)
* [ImageUpdaters in the GitOps Console](image-updaters.md)
* [Rollouts in the GitOps Console](rollouts.md)
* [Filter, search, and paginate resources](filter-resources.md)
* [Graphs and topology views](topology.md)
* [Getting started](getting-started.md)
* [Troubleshooting](troubleshooting.md)

## Preview this manual

From the `gitops-console-plugin` repository root:

```bash
pnpm serve-docs
```

Open [http://localhost:3000](http://localhost:3000).
11 changes: 11 additions & 0 deletions docs/_sidebar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
- [Working with the GitOps Console plugin](/)
- [Getting started](getting-started.md)
- [Enable the GitOps Console plugin](admin-enable-plugin.md)
- [Applications in the GitOps Console](applications.md)
- [ApplicationSets in the GitOps Console](applicationsets.md)
- [AppProjects in the GitOps Console](appprojects-rbac.md)
- [ImageUpdaters in the GitOps Console](image-updaters.md)
- [Rollouts in the GitOps Console](rollouts.md)
- [Graphs and topology views](topology.md)
- [Filter, search, and paginate resources](filter-resources.md)
- [Troubleshooting](troubleshooting.md)
99 changes: 99 additions & 0 deletions docs/admin-enable-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Enable the GitOps Console plugin

The GitOps Console plugin is enabled by default after you install the Red Hat OpenShift GitOps Operator. If you disable the plugin, you can enable it manually.

## Prerequisites

* You have installed the Red Hat OpenShift GitOps Operator.
* You have access to the OpenShift web console with cluster administrator permissions.

## Procedure

1. In the OpenShift web console, navigate to **Home** → **Overview**.

![Home Overview in the OpenShift web console](assets/pics/enable-console-plugin-home-overview.png)

2. In the **Status** panel, click **Dynamic Plugins**.

![Status panel with Dynamic Plugins](assets/pics/enable-console-plugin-status-dynamic-plugins.png)

A popup appears with a link to view all dynamic plugins.

3. Click **View all**.

4. Under the **Console plugins** tab, find **gitops-plugin**.

5. If the plugin is disabled, click **Enable**.

![Console plugin enablement dialog for gitops-plugin](assets/pics/enable-console-plugin-enablement.png)

The browser might require a refresh. After refreshing, the page indicates that the plugin is **Enabled**.

## Verification

* Navigate to **GitOps** in the navigation menu and verify that you can access **Applications**, **ApplicationSets**, and **AppProjects**.
* If the ImageUpdater and Rollout CRDs are installed on the cluster, also verify that you can access **ImageUpdaters** and **Rollouts**.

![GitOps navigation with Applications, ApplicationSets, AppProjects, ImageUpdaters, and Rollouts](assets/pics/enable-console-plugin-verification-gitops-nav.png)

## Disable the plugin

Use the same **Console plugins** list and disable **gitops-plugin**.

### Disable or enable with the CLI

The console loads plugins listed in `spec.plugins` on `console.operator.openshift.io/cluster`.

1. Check which plugins are enabled:

```bash
oc get console.operator.openshift.io cluster -o jsonpath='{.spec.plugins}{"\n"}'
```

2. To enable **gitops-plugin**:

* If step 1 printed a JSON array (for example `["monitoring-plugin"]`), append **gitops-plugin**:

```bash
PLUGIN_PATCH='[{"op":"add","path":"/spec/plugins/-","value":"gitops-plugin"}]'
oc patch console.operator.openshift.io cluster --type=json -p "${PLUGIN_PATCH}"
```

* If step 1 printed nothing (or only `null`), `spec.plugins` is missing. Create the list:

```bash
PLUGIN_PATCH='[{"op":"add","path":"/spec/plugins","value":["gitops-plugin"]}]'
oc patch console.operator.openshift.io cluster --type=json -p "${PLUGIN_PATCH}"
```

Skip this step if `gitops-plugin` is already in the list from the previous command.

3. To disable **gitops-plugin**, edit the Console operator and remove `gitops-plugin` from `spec.plugins`:

```bash
oc edit console.operator.openshift.io cluster
```

Example:

```yaml
spec:
plugins:
- monitoring-plugin
# remove: - gitops-plugin
```

4. Refresh the browser after the change. The **GitOps** entry disappears from the navigation when the plugin is disabled.

## Multi-instance configuration

The GitOps Console plugin is cluster-scoped. A single plugin deployment serves all Argo CD instances on the cluster; you do not install a separate plugin for each instance.

When multiple Argo CD instances exist in different namespaces, their resources appear together in the GitOps pages. Use the namespace selector to limit the view to one namespace or to browse across namespaces.

The **View in Argo CD** action opens the selected application in the Argo CD user interface. This action requires a Route to the Argo CD server.

## Related information

* [Getting started](getting-started.md)
* [Troubleshooting](troubleshooting.md)
Loading
Loading