lens-gitlab 0.0.0-stage → 0.1.0
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 +17 -0
- package/LICENSE +21 -0
- package/README.md +54 -2
- package/assets/banner.svg +15 -0
- package/assets/icon.svg +5 -0
- package/assets/navigator.png +0 -0
- package/assets/not-configured.png +0 -0
- package/assets/settings.png +0 -0
- package/dist/index.js +4834 -0
- package/package.json +73 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
What changed in each version of this extension, newest first.
|
|
4
|
+
|
|
5
|
+
## 0.1.0
|
|
6
|
+
|
|
7
|
+
- The extension is named **GitLabOps** in the navigator, the status bar, and the settings.
|
|
8
|
+
- A card at the top of a cluster's dashboard for each watched project: whether the latest merge request into its branch passed, and a link to the repository when that pipeline failed.
|
|
9
|
+
- The Ask AI terminal on the dashboard stays folded until it is opened.
|
|
10
|
+
- A **GitLab** item under every cluster, opening that cluster's dashboard of the latest commits or releases of each watched project, with the status of their pipelines and whether the cluster already runs them.
|
|
11
|
+
- A status bar item for the cluster you are looking at: **Up to date**, **Behind**, **Deploying**, **Failing** or **Unreachable**.
|
|
12
|
+
- Notifications when services go live, CI fails, something fails to apply, or GitLab or the cluster cannot be read.
|
|
13
|
+
- Per-cluster settings for watched projects, on gitlab.com or a GitLab you host yourself, following a branch or releases.
|
|
14
|
+
- A pipeline's jobs, with the end of a failed job's trace, and re-running its failed jobs after confirming.
|
|
15
|
+
- Ask AI can say how a cluster stands, list its watched projects, report a project's latest pipelines, and open the dashboard or the settings, from any conversation.
|
|
16
|
+
- The GitLab dashboard has its own Ask AI terminal, which can watch a project, change it, or stop watching it.
|
|
17
|
+
- A link GitLab returns is opened only when it is a page on the watched host. A sign-in token in a GitLab CLI error is not shown.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Radoslav Panev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,55 @@
|
|
|
1
|
-
#
|
|
1
|
+
# GitLabOps for Lens
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Keep an eye on the GitLab CI pipelines behind each of your clusters, without leaving Lens.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- A **GitLabOps** item under every cluster in the navigator, opening that cluster's dashboard of the latest commits or releases of each watched project, with the status of their pipelines and whether the cluster already runs them.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
- An item in the status bar saying how the cluster you are looking at, or looked at last, stands: **Up to date**, **Behind**, **Deploying**, **Failing** or **Unreachable**, with the reason on hover. Click it to open the cluster's dashboard. It shows only for a cluster something is watched for. While it shows, it keeps that cluster's GitLab checks and cluster watches running, even with the dashboard closed.
|
|
11
|
+
- Notifications in Lens when services go live on a newer version, CI fails on the latest commit or release, something fails to apply, or the cluster or GitLab cannot be read, each with a link to the cluster's dashboard. Only changes notify: what already was when Lens started does not. They come from the clusters followed, those whose dashboard is open or the status bar item shows. Each watch can notify of everything, of failures only, or not at all.
|
|
12
|
+
- **GitLabOps settings** in every cluster's right-click menu, where each cluster gets its own list of watched GitLab projects, each following a branch's commits or the project's releases, and how often to check it.
|
|
13
|
+
- A row at the top of the dashboard, one card per watched project, saying whether the latest merge request into the branch it follows passed. When that pipeline failed, the card links to the repository.
|
|
14
|
+
- An **Ask AI** terminal at the bottom of the dashboard, folded until it is opened, where a project is watched by saying so. Any Ask AI conversation can also ask how the cluster stands, what a project's pipelines are, and to open the dashboard or the settings.
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
Expand a cluster in the navigator and click **GitLabOps** to open its dashboard. If nothing is set up for the cluster yet, click **Configure GitLabOps** there, or right-click the cluster and choose **GitLabOps settings**.
|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
In the settings, set the **host** (`gitlab.com`, or the host of a GitLab you run yourself) and the project as `group/project`, subgroups included (`group/team/app`). Pasting a project URL fills both.
|
|
23
|
+
|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
Choose what to follow: **the commits of a branch** (`main` by default), for clusters that deploy every commit, or **releases**, with or without pre-releases such as release candidates, for clusters that deploy tagged releases. A pre-release is a tag GitLab users usually treat as one: it contains `rc`, `alpha`, `beta`, `pre`, or a semver suffix such as `-rc.1`. An optional tag pattern keeps only the releases whose tag matches, where `*` stands for anything: `v*` for a project that also releases other things under tags such as `artifact-contract/v0.2.0`. Pick how often to refresh everything while nothing is happening, and click **Add**. Watched projects show on the dashboard. Use **Edit** to change a project's branch or check interval, and **Remove** to stop watching it. Each cluster's list is kept across restarts of Lens.
|
|
27
|
+
|
|
28
|
+
The dashboard opens with a banner saying how the cluster stands: **Up to date**, **Behind**, **Deploying**, or **Failing** when CI fails on a branch's latest commit or Flux fails to apply a service. Under the banner, one card per watched project says whether the latest merge request into its branch passed. A failed one has a link to the repository. At the bottom, **Ask AI** stays folded until it is opened; from there a project is watched by saying so, for example "watch group/app on main", and a watch is changed or stopped the same way. Below the cards, for each watched project:
|
|
29
|
+
|
|
30
|
+
- **Cards** for how many services run the latest commit, how many versions are running, and how many recent commits pass their pipelines.
|
|
31
|
+
- **Services**: a table of every service the cluster runs from a build of the last 30 commits or releases, named after its image (such as `checkout-api`), with the version it runs and how many commits or releases behind the latest it is. Its **Deployed by** column names the Kustomization, HelmRelease or Argo CD Application that applies it, with its status and, for a HelmRelease, the chart version installed. When Flux has a newer chart, the status says so while it waits to install, is installing, or failed to install. When Flux image automation has picked up a newer build, the status follows it through Flux: **selected** by an ImagePolicy, **committed** to the GitOps repository by an ImageUpdateAutomation, **applying**, or **failed to apply**, then **rolling out**. Hover a service to see its workloads and what deploys them. Click a service to open its workload's details, and what deploys it to open its details.
|
|
32
|
+
- **GitOps syncs**, for a branch a Flux GitRepository or an Argo CD Application of the cluster follows: a table of the Kustomizations and Applications applying it, with the commit each applied and a newer one on its way, fetched, being applied, or failed to apply (the message on hover). This is what a GitOps repository, which deploys manifests rather than images, is followed by: watch it like any branch. The host in the Git remote has to be the host of the watch, so `gitlab.com/group/app` is not taken for the same project on a GitLab you host yourself.
|
|
33
|
+
- **Recent commits** or **Recent releases**: a table of the five latest, each with its message, its pipeline results (only the pipelines it started count: a merge request pipeline, a security scan or a DAST run recorded against the same commit is listed apart and counts for nothing; for a release with no pipelines of its own, as when a project builds on its default branch and tags afterwards, those of the commit it was tagged on, marked "on main") and the services of the cluster that run its build. Click a commit id or tag, or its pipeline results, to open its details in a panel that slides in over the dashboard: its message, author and date, with a link to GitLab; the services, Kustomizations and Argo CD Applications of the cluster at it; and its pipelines, each a card with a timeline of its jobs, how long each took and, for a failed one, why it failed, with links to the pipeline and to each job, and to re-run a failed pipeline's failed jobs, after confirming (this needs the GitLab CLI's account to be allowed to retry pipelines). Successful pipelines start folded. **Open in a tab** in the panel keeps the pipelines open in a tab of their own, next to the dashboard, with the end of a failed job's trace, errors and warnings marked; it goes on updating a pipeline in progress and comes back after Lens restarts.
|
|
34
|
+
|
|
35
|
+
For a branch, a service is recognised by the commit id, in full or abbreviated to at least 7 characters, in its image's tag, as in `backend:main-76cd335`. For releases, by its image's tag being the release's tag, with or without a leading `v`, as in `backend:v2026.9.3-rc.1`. The cluster's Deployments, StatefulSets and DaemonSets are read, and Flux's Kustomizations, HelmReleases, ImagePolicies and ImageUpdateAutomations and Argo CD's Applications when the cluster has them. Opening the dashboard connects Lens to the cluster. If the cluster cannot be read, for instance while its connection is down, the dashboard says so and tries again every 30 seconds.
|
|
36
|
+
|
|
37
|
+
While the dashboard is open, the cluster is followed live, and GitLab is checked as often as there is something to see. While pipelines are unfinished, or a service is on its way through Flux or rolling out, it checks every 15 seconds (**live** in the header). Otherwise it checks once a minute whether a new commit has landed, and refreshes everything at the project's check interval. If GitLab's rate limit is reached, it waits for the check interval before trying again. The refresh button checks right away.
|
|
38
|
+
|
|
39
|
+
## Requirements
|
|
40
|
+
|
|
41
|
+
The pipelines are read with the [GitLab CLI](https://gitlab.com/gitlab-org/cli) (`glab`). Install it and sign in with `glab auth login` before using the dashboard. For a GitLab you host yourself, sign in to that host (`glab auth login --hostname gitlab.example.com`) and set the same host on the watch.
|
|
42
|
+
|
|
43
|
+
When reading GitLab fails, the dashboard says why and what to do: glab not installed or not found by Lens (restart Lens after installing it, so it picks up your shell's PATH), not signed in or its sign-in expired, a group requiring single sign-on, a project or branch not found, GitLab's rate limit, or GitLab not reachable. For what needs you to act, checking pauses until you check again with the refresh button.
|
|
44
|
+
|
|
45
|
+
What changed in each version is in [CHANGELOG.md](./CHANGELOG.md).
|
|
46
|
+
|
|
47
|
+
## Ask AI
|
|
48
|
+
|
|
49
|
+
From any Ask AI conversation you can ask how this cluster stands and which projects are watched, what the latest pipelines of a watched project are, and to open this cluster's GitLabOps dashboard or its GitLabOps settings.
|
|
50
|
+
|
|
51
|
+
On the GitLabOps dashboard, open **Ask AI** at the bottom to watch a project, change what it follows, or stop watching it. Say "watch group/app on main" instead of filling in the form.
|
|
52
|
+
|
|
53
|
+
## Install
|
|
54
|
+
|
|
55
|
+
[Open lens-gitlab in Lens](https://app.k8slens.dev/lens-launcher?c=lens%3A%2F%2Fapp%2Fopen%2Fextension%3Fname%3Dlens-gitlab) and click Install there. The link offers Lens for download when it is not installed yet.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 600" width="1200" height="600">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="background" x1="0" y1="0.5" x2="1" y2="0.5">
|
|
4
|
+
<stop offset="0" stop-color="#5c2418"/>
|
|
5
|
+
<stop offset="1" stop-color="#e24329"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="1200" height="600" fill="url(#background)"/>
|
|
9
|
+
<g transform="translate(250 188)" fill="none" stroke="#ffffff" stroke-width="14" stroke-linejoin="round">
|
|
10
|
+
<path d="M112 18 L198 68 V178 L112 228 L26 178 V68 Z"/>
|
|
11
|
+
</g>
|
|
12
|
+
<path transform="translate(250 188)" d="M112 88 L148 124 L112 160 L76 124 Z" fill="#ffffff"/>
|
|
13
|
+
<text x="500" y="292" font-family="sans-serif" font-size="84" font-weight="700" fill="#ffffff">GitLabOps</text>
|
|
14
|
+
<text x="500" y="352" font-family="sans-serif" font-size="32" fill="#f6d2c4">Pipelines next to the cluster</text>
|
|
15
|
+
</svg>
|
package/assets/icon.svg
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
|
2
|
+
<rect width="64" height="64" rx="14" fill="#e24329"/>
|
|
3
|
+
<path d="M32 10 L50 20.5 V43.5 L32 54 L14 43.5 V20.5 Z" fill="none" stroke="#ffffff" stroke-width="5" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M32 24 L40 32 L32 40 L24 32 Z" fill="#ffffff"/>
|
|
5
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|