Commit Graph

78 Commits

Author SHA1 Message Date
Chris Farhood d202ca42d6 fix(e2e): reference @main workflow after .github merge
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 17:43:44 +00:00
Chris Farhood 019366ff01 fix(e2e): use LoadBalancer IP for HEADLAMP_URL
Previous approaches (port-forward to Service/Pod) failed with 'connection
refused' — the runner cannot tunnel to pod IPs through the API server.

Switch to LoadBalancer service type:
- After rollout, poll kubectl get svc for status.loadBalancer.ingress[0].ip
- Once assigned, poll http://<lb-ip>:80 until reachable
- Write HEADLAMP_URL=http://<lb-ip>:80 to .env.e2e

The runner pod (in the cluster) can reach LoadBalancer IPs assigned
by the cloud controller or metallb.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 17:15:33 +00:00
Chris Farhood 9cc1ca7b91 fix(e2e): use NodePort instead of cluster-internal DNS for HEADLAMP_URL
Previous attempt used kubectl port-forward to a Service, which failed
with 'connection refused' — the API server could not reach pod IPs.

Switch to NodePort (30080) service type and use the node's InternalIP
for HEADLAMP_URL, reachable from the GitHub Actions runner pod.

- Change Service type from ClusterIP to NodePort with nodePort: 30080
- After rollout, get node InternalIP via kubectl get nodes
- Poll http://<node-ip>:30080 until reachable
- Write HEADLAMP_URL=http://<node-ip>:30080 to .env.e2e
- Remove port-forward leftover cleanup from teardown script

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 17:10:54 +00:00
Chris Farhood f1dd09c155 fix(e2e): use localhost via kubectl port-forward for HEADLAMP_URL
The browser runs outside the cluster and cannot resolve
headlamp-e2e.${E2E_NAMESPACE}.svc.cluster.local DNS names.

- Start kubectl port-forward in background after service rollout
- Poll until localhost:4466 is reachable before writing .env.e2e
- Write HEADLAMP_URL=http://localhost:4466 so Playwright browser can connect
- teardown: kill port-forward processes with pkill

Fixes PRI-752.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 17:03:13 +00:00
Chris Farhood 8b90535ec7 Merge branch 'gandalf/e2e-fix-kube-vip' into gandalf/e2e-fix-kube-vip-local 2026-05-05 14:07:33 +00:00
Chris Farhood 00df4a829f fix(e2e): add e2e script to package.json
Missing script caused ERR_PNPM_NO_SCRIPT in CI E2E step.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 14:06:49 +00:00
Chris Farhood 869d1c7225 fix(e2e): use .first() to handle strict mode violations with multiple headings (PRI-700)
The kube-vip page has both 'kube-vip — Overview' (h1) and 'kube-vip Not Detected' (h2) headings.
getByRole('heading', { name: /kube.vip/i }) resolves to both in strict mode. Using .first()
to match the first one (the overview heading) instead.
2026-05-05 13:55:54 +00:00
Chris Farhood 87798ecbe1 fix(e2e): add e2e npm script for reusable workflow (PRI-700)
The plugin-e2e.yaml reusable workflow runs 'npm run e2e' to execute
Playwright tests. This script was missing from the kube-vip plugin.
2026-05-05 13:49:56 +00:00
Chris Farhood 097ac48ecf feat(e2e): add @playwright/test to devDependencies
Required by PRI-700 / PRI-699: E2E test infra needs @playwright/test
as a direct devDependency.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 13:33:10 +00:00
Chris Farhood ced7d57895 feat(e2e): consolidate E2E test infrastructure + add waitForSidebar (PRI-700)
- Adds e2e/auth.setup.ts, e2e/kube-vip.spec.ts with waitForSidebar helper
- Adds playwright.config.ts, scripts/deploy-e2e-headlamp.sh, scripts/teardown-e2e-headlamp.sh
- Adds .github/workflows/e2e.yaml
- Fixes plugin settings test to wait for list before searching
2026-05-05 13:07:55 +00:00
privilegedescalation-engineer[bot] 6459913304 feat(workflows): add renovate-app-token reusable workflow for Mend Renovate (#43)
workflow_call reusable workflow that exposes a GitHub App installation
token. Mend Renovate will use this token to push commits.

Refs: PRI-413

Co-authored-by: Chris Farhood <chris@farhood.org>
2026-05-04 21:19:09 +00:00
privilegedescalation-engineer[bot] d9fec8b93c fix: add markdownlint config to resolve CI failures (#42)
Co-authored-by: Chris Farhood <chris@farhood.org>
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-05-04 20:02:52 +00:00
privilegedescalation-engineer[bot] dd2d942d39 fix: override lodash >=4.18.0 to patch code injection vulnerability (#40)
Defensive override floor for GHSA-r5fr-rjxr-66jc. Main already resolves lodash@4.18.1 transitively, so override prevents future regressions. CI green on 1d65d51. Approved by CEO via admin override per stopgap during PRI-309 adapter outage.
2026-05-03 23:24:51 +00:00
privilegedescalation-engineer[bot] 8e9b2c2645 fix: update vite to >=6.4.2 to patch arbitrary file read vulnerability (#39)
Vite versions >=6.0.0 <=6.4.1 are vulnerable to arbitrary file read via
the Vite Dev Server WebSocket (server.fs.deny bypass with queries).

CVE: GHSA-p9ff-h696-f583

Co-authored-by: Gandalf the Greybeard <gandalf@privilegedescalation.dev>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 17:44:02 +00:00
privilegedescalation-engineer[bot] ac3d9e87ca release: v1.0.2 (#38)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-15 04:00:53 +00:00
privilegedescalation-ceo[bot] ad99689f47 fix: correct artifacthub-pkg.yml checksum on main for v1.0.1
Co-authored-by: privilegedescalation-ceo[bot] <269721483+privilegedescalation-ceo[bot]@users.noreply.github.com>
2026-04-15 03:50:58 +00:00
privilegedescalation-engineer[bot] 90623e32c7 fix: pass pr_number to dual-approval-check workflow (#34)
Companion PR to privilegedescalation/.github#81

Co-authored-by: Hugh Hackman <hugh@paperclip.ing>
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-04-15 03:30:22 +00:00
privilegedescalation-ceo[bot] aeb762ff85 chore: add repository_dispatch trigger for automated release 2026-04-15 02:54:35 +00:00
privilegedescalation-ceo[bot] a86fb9f596 Merge pull request #36 from privilegedescalation/release/v1.0.1
release: v1.0.1 - fix ArtifactHub checksum
2026-04-15 02:21:17 +00:00
Pawla Abdul 079a96f7d2 release: v1.0.1 - fix ArtifactHub checksum 2026-04-13 11:05:36 +00:00
privilegedescalation-ceo[bot] f6abc14a95 Merge pull request #31 from privilegedescalation/fix/add-package-manager-field
fix: add packageManager field to package.json
2026-03-24 22:45:31 +00:00
privilegedescalation-ceo[bot] 8f32bb3545 Merge pull request #30 from privilegedescalation/release/v1.0.0
release: v1.0.0
2026-03-24 22:37:14 +00:00
github-actions[bot] acf8ce55ca release: v1.0.0 v1.0.0 2026-03-24 22:30:16 +00:00
Gandalf the Greybeard f5fd03fe75 fix: add packageManager field to package.json
pnpm/action-setup@v5 requires either a version key in the action config
or a packageManager field in package.json. Add the field to unblock the
release workflow.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 22:12:36 +00:00
privilegedescalation-ceo[bot] 91abf23ceb Merge pull request #26 from privilegedescalation/release/v1.0.0
release: kube-vip v1.0.0
2026-03-24 22:01:19 +00:00
Gandalf the Greybeard 44efa23362 fix(ci): add missing eslint/prettier/typescript devDeps
Add eslint@^8.57.0, @headlamp-k8s/eslint-config@^0.6.0, prettier@^2.8.8,
typescript@~5.6.2 as explicit devDependencies. pnpm strict hoisting does
not expose transitive bins, so these must be direct deps.
2026-03-24 21:48:56 +00:00
Gandalf the Greybeard 78f4db1b46 release: prepare v1.0.0
- Bump version from 0.1.5 to 1.0.0 in package.json
- Add missing devDependencies: @mui/material ^5.15.14, @types/react ^18.0.0,
  @types/react-dom ^18.0.0, notistack ^3.0.0; pin vitest to ^3.2.4
- Replace package-lock.json with pnpm-lock.yaml (switch to pnpm)
- Update artifacthub-pkg.yml: version 1.0.0, v1.0.0 archive URL,
  TBD checksum placeholder, add changes block
- Add [1.0.0] entry to CHANGELOG.md with version comparison links
- All 74 tests pass

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 21:29:29 +00:00
privilegedescalation-ceo[bot] 4b6b57a198 Merge pull request #25 from privilegedescalation/feat/renovate-extend-org-config
feat: extend Renovate config from org-level preset
2026-03-24 18:46:14 +00:00
Hugh Hackman b18c738327 feat: extend Renovate config from org-level preset
Replaces the duplicated Renovate config with a simple extend from the
org-level preset (privilegedescalation/.github:renovate-config). All
rules (schedule, pinDigests, npm/github-actions minor+patch+major groups)
are now inherited from the org config, which was updated in PR #66 to add
major-version update rules for GitHub Actions.

This eliminates config drift between repos and reduces maintenance toil —
future rule changes only need to be made in one place.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 16:16:19 +00:00
privilegedescalation-engineer[bot] 7ad3069235 chore(renovate): add pinDigests for GitHub Actions SHA pinning (#24)
Adds pinDigests: true so Renovate pins all GitHub Actions references to
full commit SHAs for supply-chain hardening. This repo extends
config:recommended directly, so pinDigests must be set here explicitly —
the org-level config alone is not sufficient.

Recreated from main after closing stale PR #23 (branch was created before
the dual-approval PR #22 landed).

Co-authored-by: Gandalf the Greybeard <gandalf@privilegedescalation.com>
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-03-22 11:13:23 +00:00
privilegedescalation-ceo[bot] 8800d73d68 Merge pull request #22 from privilegedescalation/feat/dual-approval-status-check
ci: add dual-approval status check (CTO + QA)
2026-03-22 04:12:40 +00:00
privilegedescalation-engineer[bot] 2a8646a831 ci: add dual-approval caller workflow
Calls the shared privilegedescalation/.github dual-approval-check
reusable workflow to enforce CTO + QA approval as a GitHub status check.

Once privilegedescalation/.github#47 is merged, this status check can
be added to required_status_checks in branch protection.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 23:55:43 +00:00
privilegedescalation-ceo[bot] 8d0c1b4cee Merge pull request #21 from privilegedescalation/release/v0.1.5
release: v0.1.5
2026-03-21 23:46:25 +00:00
github-actions[bot] d7eebd2f4a release: v0.1.5 v0.1.5 2026-03-21 22:51:07 +00:00
privilegedescalation-paperclip[bot] fe1d1dcf3e ci: pass GitHub App token secrets to release workflow (#20)
The shared release workflow now requires RELEASE_APP_ID and
RELEASE_APP_PRIVATE_KEY secrets for PR creation, since the org
blocks GITHUB_TOKEN from creating PRs.

Depends on privilegedescalation/.github#31

Co-authored-by: privilegedescalation-paperclip[bot] <268365651+privilegedescalation-paperclip[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:24:36 +00:00
privilegedescalation-paperclip[bot] be9fe7ebd5 Merge pull request #19 from privilegedescalation/release/v0.1.4
release: v0.1.4
2026-03-19 21:50:46 +00:00
github-actions[bot] 4a17053e69 release: v0.1.4 v0.1.4 2026-03-19 21:38:56 +00:00
privilegedescalation-paperclip[bot] da041d52c6 fix: add pull-requests write permission to release workflow (#18)
The reusable release workflow declares pull-requests:write but the
caller didn't grant it, causing startup_failure on GitHub Actions.

Co-authored-by: Hugh Hackman [bot] <hugh-hackman[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 21:33:04 +00:00
null-pointer-nancy[bot] 6989ec32f1 Merge pull request #17 from privilegedescalation/fix/dep-security-overrides-tar-undici
fix: add npm overrides for tar and undici security advisories
2026-03-18 23:14:07 +00:00
Hugh Hackman e0f0349a76 fix: regenerate package-lock.json for undici override
Resolves lockfile mismatch where undici@7.24.1 did not satisfy the
^7.24.3 override. Running npm install updated the resolved version
to undici@7.24.4.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 23:04:41 +00:00
Hugh Hackman 9904f8f405 fix: add npm overrides for tar and undici security advisories
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 22:55:27 +00:00
null-pointer-nancy[bot] 829c0b4825 Merge pull request #15 from privilegedescalation/docs/remove-manual-install
docs: remove manual install sections from README
2026-03-17 17:39:08 +00:00
Gandalf the Greybeard 272b6655eb docs: remove manual install sections from README
Only the ArtifactHub/Plugin Manager installation path is supported.
Removed manual Helm-based and kubectl-based install sections.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 17:31:30 +00:00
hugh-hackman[bot] 06c0a69357 fix: sync package-lock.json (#14)
Co-authored-by: gandalf-the-greybeard[bot] <gandalf-the-greybeard[bot]@users.noreply.github.com>
2026-03-15 18:04:58 +00:00
null-pointer-nancy[bot] 0579c3457b ci: retrigger after shared workflow fix (#13)
CI retrigger after shared workflow fix (.github PR#14)
2026-03-15 17:54:43 +00:00
Chris Farhood 901e1bb25e Merge pull request #12 from privilegedescalation/policy/artifacthub-only
policy: add ArtifactHub-only installation requirement
2026-03-15 12:45:25 -04:00
null-pointer-nancy[bot] 81b30e55c6 policy: add ArtifactHub-only installation policy
Per CEO directive, ArtifactHub via the Headlamp plugin installer is the
only approved installation method. No exceptions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-15 16:36:34 +00:00
gandalf-the-greybeard[bot] f2bf4c2e50 fix: add explicit dev dependencies and fix React test environment (#11)
* fix: add explicit dev dependencies and fix React test environment

- Add react, react-dom, vitest, jsdom, and testing-library as explicit
  devDependencies instead of relying on transitive deps from
  @kinvolk/headlamp-plugin
- Add peerDependencies for react/react-dom
- Set process.env.NODE_ENV to "test" in vitest config to prevent React
  from loading its production build (which blocks act())
- Do NOT include canvas as a dependency — it requires native build tools
  (pangocairo, etc.) not present in the CI node:22 container

Fixes CI install failures from prior PR #10 which included canvas.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add react-router-dom devDep and remove unused vite types

- Add react-router-dom as explicit devDependency to fix
  ServicesPage.test.tsx import resolution failure
- Remove vite/client and vite-plugin-svgr/client from tsconfig types
  (not needed, aligns with polaris plugin pattern)

Addresses QA review feedback on PR#11.

---------

Co-authored-by: gandalf-the-greybeard[bot] <gandalf-the-greybeard[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 06:37:01 +00:00
Chris Farhood 84bfc04917 Merge pull request #9 from privilegedescalation/feat/add-upstream-appversion-tracking
feat: auto-track upstream appVersion in releases
2026-03-08 12:28:02 -04:00
Chris Farhood ae8f303d51 Merge pull request #8 from privilegedescalation/fix/artifacthub-rename
Update ArtifactHub metadata for rename to headlamp-kube-vip
2026-03-08 12:27:42 -04:00