Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
50f792d
Add a trivial docs marker for PR/CI smoke testing.
Janell-Huyck Jul 20, 2026
5210447
Limit Hyku release-label CI to PRs targeting main.
Janell-Huyck Jul 20, 2026
6bc2a7e
Add hyku-oob GitHub Actions CI with parallel RSpec.
Janell-Huyck Jul 20, 2026
923283a
Baseline Hyku OOB Brakeman findings so CI can pass.
Janell-Huyck Jul 20, 2026
2cf35e0
Speed up CI with Docker, apt, RuboCop, and advisory-db caches.
Janell-Huyck Jul 20, 2026
def0a22
Install libvips (and ImageMagick) on CI test runners.
Janell-Huyck Jul 20, 2026
1996f92
Fix Gemfile gem order for Bundler/OrderedGems.
Janell-Huyck Jul 20, 2026
dd79d47
Baseline Hyku lockfile advisories in .bundler-audit.yml.
Janell-Huyck Jul 20, 2026
12fc10b
Tidy .bundler-audit.yml to CVE/GHSA IDs only.
Janell-Huyck Jul 20, 2026
03106ab
Pull Docker images in one CI step instead of background wait.
Janell-Huyck Jul 20, 2026
5a37795
Enable SolrCloud Basic Auth for CI ConfigSet upload.
Janell-Huyck Jul 20, 2026
743eff2
Fix ZooKeeper healthcheck for CI SolrCloud stack.
Janell-Huyck Jul 20, 2026
5dad85d
Remove trivial smoke-test marker from local docs index.
Janell-Huyck Jul 20, 2026
b7582cd
Point CI file cache at the workspace, not /app.
Janell-Huyck Jul 20, 2026
36cae65
Install CI apt packages without a shared cache race.
Janell-Huyck Jul 20, 2026
3057752
Run db:extensions after db:prepare in CI.
Janell-Huyck Jul 20, 2026
5f79b77
Align CI DB and env with Hyku Docker test setup.
Janell-Huyck Jul 20, 2026
39c8efa
Keep SOLR_HOST=solr for RSpec; use localhost only in setup scripts.
Janell-Huyck Jul 20, 2026
6b1e50c
Use good_job in CI and save site themes before redirect.
Janell-Huyck Jul 20, 2026
c0a579a
Tolerate empty Docker image cache hits in CI.
Janell-Huyck Jul 20, 2026
a5bd966
Fix Docker cache: restore on all shards, save only on shard 0.
Janell-Huyck Jul 20, 2026
b7ea4c5
Fix CI PDF text extraction and featured collection order spec.
Janell-Huyck Jul 20, 2026
edfce2c
Fix appearance theme form posting to singular site route.
Janell-Huyck Jul 20, 2026
afd60d1
Assert appearance themes via the UI in JS feature specs.
Janell-Huyck Jul 20, 2026
0f74c39
Read appearance themes from Site.instance on the homepage.
Janell-Huyck Jul 20, 2026
fc10ae0
Honor ci:skip in CI and restore unmodified Hyku specs.
Janell-Huyck Jul 20, 2026
7bfacba
Stabilize CI feature specs without changing Hyku examples.
Janell-Huyck Jul 20, 2026
469548e
Fix theme Site.last mismatches in CI feature specs.
Janell-Huyck Jul 20, 2026
20edfdb
Revert controller changes; keep CI env setup only.
Janell-Huyck Jul 20, 2026
d35e41c
Drop all app/ changes; keep CI environment setup only.
Janell-Huyck Jul 20, 2026
ef77ab5
Run JS feature specs with local headless Chrome in CI.
Janell-Huyck Jul 20, 2026
f2fa5b9
Fix CI ChromeDriver lookup and rails_helper RuboCop.
Janell-Huyck Jul 20, 2026
c33c373
Fix RuboCop offenses in rails_helper ChromeDriver setup.
Janell-Huyck Jul 20, 2026
1edcb8c
Restore remote Selenium Chrome for CI; fix Selenium 4 options kwarg.
Janell-Huyck Jul 20, 2026
8f03111
Skip known-flaky Hyku theme/collection_type examples in CI.
Janell-Huyck Jul 20, 2026
e694fa0
Remove CI example skips from rails_helper.
Janell-Huyck Jul 20, 2026
7952ca1
xit known-flaky remote Capybara Hyku examples.
Janell-Huyck Jul 20, 2026
744473f
xit flaky show page theme change example.
Janell-Huyck Jul 20, 2026
8f1802b
Add merged SimpleCov coverage gate across CI shards.
Janell-Huyck Jul 20, 2026
cffbafc
Fix SimpleCov artifact upload for hidden resultset files.
Janell-Huyck Jul 20, 2026
20a8d18
ci: update coverage baseline to 76.93%
ci-bot Jul 20, 2026
95a1bb1
Update cursor rules so that it writes PR's against the correct baseli…
Janell-Huyck Jul 20, 2026
3d51b0d
ci: update coverage baseline to 76.95%
ci-bot Jul 20, 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
83 changes: 83 additions & 0 deletions .bundler-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Hyku OOB baseline: advisories present in the current Gemfile.lock.
# Do not bump gems solely to clear these — stay aligned with hyku/main.
# New advisories (not listed here) should still fail CI.
ignore:

# addressable (2.8.1) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-35611
- GHSA-h27x-rffw-24p4

# carrierwave (1.3.4) — Hyku lockfile; ignore until upstream upgrades
- CVE-2023-49090
- CVE-2024-29034
- CVE-2026-44587
- GHSA-7g26-2qgj-chfg
- GHSA-gxhx-g4fq-49hj
- GHSA-vfmv-jfc5-pjjw

# concurrent-ruby (1.3.4) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-54904
- CVE-2026-54905
- CVE-2026-54906
- GHSA-6wx8-w4f5-wwcr
- GHSA-h8w8-99g7-qmvj
- GHSA-wv3x-4vxv-whpp

# crass (1.0.6) — Hyku lockfile; ignore until upstream upgrades
- GHSA-6jxj-px6v-747w
- GHSA-6wmf-3r64-vcwv
- GHSA-8vfg-2r28-hvhj
- GHSA-wwpr-jff3-395c

# excon (0.71.1) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-54171
- GHSA-48rx-c7pg-q66r

# json (2.19.2) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-54696
- GHSA-x2f5-4prf-w687

# loofah (2.25.1) — Hyku lockfile; ignore until upstream upgrades
- GHSA-5qhf-9phg-95m2
- GHSA-8whx-365g-h9vv
- GHSA-9wjq-cp2p-hrgf

# oauth (1.1.2) — Hyku lockfile; ignore until upstream upgrades
- GHSA-prq8-7wvh-44qh

# oauth2 (1.4.11) — Hyku lockfile; ignore until upstream upgrades
- GHSA-pp92-crg2-gfv9

# rails-html-sanitizer (1.7.0) — Hyku lockfile; ignore until upstream upgrades
- GHSA-cj75-f6xr-r4g7

# secure_headers (7.1.0) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-54163
- GHSA-rqq5-2gf9-4w4q

# sinatra (2.2.4) — Hyku lockfile; ignore until upstream upgrades
- CVE-2024-21510
- CVE-2025-61921
- GHSA-hxx2-7vcw-mqr3
- GHSA-mr3q-g2mv-mr4q

# view_component (2.74.1) — Hyku lockfile; ignore until upstream upgrades
- CVE-2024-21636
- GHSA-wf2x-8w6j-qw37

# websocket-driver (0.8.0) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-54463
- CVE-2026-54464
- CVE-2026-54465
- GHSA-2x63-gw47-w4mm
- GHSA-33ph-fccm-39pj
- GHSA-8j3g-f24p-4mpw
- GHSA-ghhp-3qvg-889p

# yard (0.9.42) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-49342
- GHSA-pxcc-8665-phx8

# zlib (2.1.1) — Hyku lockfile; ignore until upstream upgrades
- CVE-2026-27820
- GHSA-g857-hhfv-j68w
28 changes: 15 additions & 13 deletions .cursor/rules/pr-body-format.mdc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
description: PR body requests — raw markdown in a fenced block; default base hyku-oob
description: PR body requests — raw markdown in a fenced block; base branch by naming
alwaysApply: true
---

Expand All @@ -22,24 +22,26 @@ Return the body as **raw Markdown inside a single fenced code block** labeled `m

## Base branch for diff, commits, and summary

Use the correct **compare base** when gathering `git log` / `git diff` for the PR body:
Use the correct **compare base** when gathering `git log` / `git diff` for the PR body (and when creating PRs). Detect from the **current branch name** unless the user names a different target.

### Default (Hyku upgrade work)
| Current branch name | Compare / PR base | Notes |
|---------------------|-------------------|--------|
| Starts with `hyku` (e.g. `hyku-test-branch`, `hyku-oob-…`) | **`hyku-oob`** | Hyku upgrade / OOB work |
| Anything else | **`develop`** | Scholar@UC feature work |

- **Base branch:** `hyku-oob`
- Use `hyku-oob...HEAD` (or `git log hyku-oob..HEAD`) unless the user specifies otherwise.
Examples:

### Other situations
- `hyku-test-branch` → `git log hyku-oob..HEAD` / PR into `hyku-oob`
- `fix-deposit-wizard` → `git log develop..HEAD` / PR into `develop`

| Situation | Compare base | Typical PR target |
|-----------|----------------|-------------------|
| Feature branch cut from `hyku-oob` | `hyku-oob` | `hyku-oob` |
| User says PR targets another branch | **That named branch** | As user specifies |
| Work against `develop` / `main` | Ask once if unclear | As user specifies |
### Overrides

**Detecting base:** Prefer what the user states for this ticket. Optionally check `git rev-parse --abbrev-ref HEAD@{upstream}`.
- If the user explicitly names a PR target or compare base, **use that**.
- Optionally confirm with an open PR: `gh pr view --json baseRefName`.

### Do not assume

- Do not use `main` or `develop` as the PR base for `hyku-oob` feature work unless the user says so.
- **Do not** use `qa` — this app has no `qa` branch (unlike treatment_database).
- **Do not** use `main` or `develop` as the base for branches whose names start with `hyku`.
- **Do not** use `hyku-oob` as the base for branches that do **not** start with `hyku`.
- Do not invent branch naming conventions — use the branch the user created.
10 changes: 9 additions & 1 deletion .github/workflows/build-test-lint.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
name: "build-test-lint"
run-name: Build of ${{ github.ref_name }} by @${{ github.actor }}
# Scholar@UC: this workflow publishes to ghcr.io/samvera/hyku. Only run on the
# upstream Samvera repo — feature work on uclibs/ucrate uses .github/workflows/ci.yml.
on:
push:
branches:
Expand Down Expand Up @@ -33,6 +35,7 @@ env:

jobs:
build:
if: github.repository == 'samvera/hyku'
strategy:
matrix:
component: ["solr", "web", "worker"]
Expand Down Expand Up @@ -88,6 +91,7 @@ jobs:
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/${{ matrix.component }}:${{ env.TAG }}-${{ env.PLATFORM_TAG }}
push:
if: github.repository == 'samvera/hyku'
needs: build
runs-on: ubuntu-latest
permissions: write-all
Expand Down Expand Up @@ -122,6 +126,7 @@ jobs:
done

lint:
if: github.repository == 'samvera/hyku'
needs: push
uses: notch8/actions/.github/workflows/lint.yaml@v1.0.6
with:
Expand All @@ -130,13 +135,15 @@ jobs:
rubocop_cmd: "bundle exec rubocop --parallel --format progress"

test:
if: github.repository == 'samvera/hyku'
needs: push
uses: notch8/actions/.github/workflows/test.yaml@v1.0.6
with:
confdir: "/app/samvera/hyrax-webapp/solr/conf"
rspec_cmd: "gem install semaphore_test_boosters && bundle && rspec_booster --job $CI_NODE_INDEX/$CI_NODE_TOTAL"

single-tenant-test:
if: github.repository == 'samvera/hyku'
needs: push
runs-on: ubuntu-latest
defaults:
Expand Down Expand Up @@ -234,6 +241,7 @@ jobs:
run: docker compose -f docker-compose.single.yml down -v --remove-orphans

env-file-lint:
if: github.repository == 'samvera/hyku'
# Guard against a regression class: `${VAR}` shell interpolation of any
# form placed inside `.env`. It is not reliably expanded through env_file:
# the `${VAR:-default}` form is only handled on newer Compose (>= ~2.24),
Expand Down Expand Up @@ -263,6 +271,6 @@ jobs:
echo "No \${...} interpolation found in .env"

reports:
if: always()
if: always() && github.repository == 'samvera/hyku'
needs: [test, lint, single-tenant-test]
uses: notch8/actions/.github/workflows/report.yaml@v1.0.6
Loading
Loading