Compare commits

...
14 Commits
Author SHA1 Message Date
james.maes 035e2df40e Merge pull request 'ci: build on the shared ci-workflows workflow' (#179) from ci/ci-workflows into develop
maven / build (push) Successful in 17m55s
build / maven (push) Successful in 17m55s
2026-11-07 23:57:24 +00:00
James MaesandClaude Opus 5.5 3ac26b2bac ci: run the Selenium ITs headless against the dev server, as the orb did
maven / build (push) Successful in 15m19s
build / maven (push) Successful in 15m19s
The Selenium ITs need a headless Chrome and the HTTPS React dev server on
:3001. Move the prebuild into scripts/ci-prebuild.sh, which also starts the
dev server (HTTPS, port 3001, backend proxy 8001) the way the qqq-orb
frontend-material pipeline did, and treat CI=true like QQQ_SELENIUM_HEADLESS
(and like CIRCLECI for waitForever) so the tests run headless on any CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 17:41:38 -06:00
James MaesandClaude Opus 5.5 31bc2145cc ci: build on the shared ci-workflows Maven workflow
maven / build (push) Failing after 8m53s
build / maven (push) Failing after 8m53s
Add .gitea/workflows/build.yaml calling KofTwentyTwo/ci-workflows maven.yaml@v1:
npm ci, the Jest unit tests and the React build (packaged into the jar) run as
the prebuild, then Maven runs the Selenium ITs on the Chrome-capable runners and
publishes to the Gitea Maven registry from develop/release/hotfix/tags.

Remove the GPG signing and Sonatype Central plugins from the default build
(Gitea Maven only; they remain in the release profile) and the old CircleCI
orb configuration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 17:30:35 -06:00
forge-recovery 21a2a71d7b Merge pull request 'ci: baseline reviewed historical fixture findings' (#178) from ci/historical-finding-baseline-20261101 into develop
QRun-IO/ci-policy: ci / not-enrolled (push) Failing after 5s
QRun-IO/ci-policy: ci / ci-result (push) Failing after 4s
QRun-IO/ci-policy: ci / fork-guard (push) Skipped
QRun-IO/ci-policy: ci / java-maven-2 (push) Skipped
QRun-IO/ci-policy: ci / node-4 (push) Skipped
QRun-IO/ci-policy: ci / source-config-5 (push) Skipped
QRun-IO/ci-policy: ci / gradle-0 (push) Skipped
QRun-IO/ci-policy: ci / java-docker-1 (push) Skipped
QRun-IO/ci-policy: ci / node-3 (push) Skipped
2026-11-02 01:46:33 +00:00
forge-recoveryandOpenAI GPT-6 f02a6208f8 ci: baseline reviewed historical fixture findings
QRun-IO/ci-policy: ci / fork-guard (pull_request) Skipped
QRun-IO/ci-policy: ci / gradle-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-1 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-2 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-3 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-4 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-5 (pull_request) Skipped
QRun-IO/ci-policy: ci / not-enrolled (pull_request) Failing after 4s
QRun-IO/ci-policy: ci / ci-result (pull_request) Failing after 5s
Co-Authored-By: OpenAI GPT-6 <noreply@openai.com>
2026-11-02 01:13:21 +00:00
james.maesandCodex 5d67c059ff ci: select CodeQL languages from branch sources
Preserve the reviewed one-file develop CodeQL caller and its existing Java/JavaScript/Python/Actions source coverage; scanner-only scope, no package publication or deployment.

Co-authored-by: Codex (GPT-6) <noreply@openai.com>
2026-10-30 16:02:17 -05:00
james.maesandCodex 88cf2aa6ff ci: adopt managed orb with verified browser bootstrap (#171)
* ci: qualify shared browser bootstrap

Co-Authored-By: Codex <noreply@openai.com>

* ci: use qualified stable browser bootstrap

Co-Authored-By: Codex <noreply@openai.com>

---------

Co-authored-by: Codex <noreply@openai.com>
2026-10-21 16:08:07 -05:00
james.maesandCodex 781df9086e ci: adopt shared orb 0.7.18 (#170)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 15:16:19 -05:00
james.maesandCodex e049527ff2 ci: adopt central orb 0.7.12 and stable gates (#169)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 09:02:59 -05:00
james.maesandCodex 4a754f5683 ci: adopt shared orb 0.7.11 (#168)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 01:07:52 -05:00
james.maesandCodex 5dbcf7af63 ci: delegate pipelines to shared QQQ orb (#167)
Co-authored-by: Codex <noreply@openai.com>
2026-10-20 19:58:23 -05:00
james.maes aa6a490e41 Merge pull request #164 from QRun-IO/feature/orb-0.6.9
ci: qqq-orb 0.6.9 (refresh SNAPSHOT dependencies)
2026-10-14 10:47:03 -05:00
james.maesandClaude Opus 5.5 1a2f4a3a07 ci: qqq-orb 0.6.9 (refresh SNAPSHOT dependencies)
Moves qqq-orb@0.6.6 to qqq-orb@0.6.9, which passes --update-snapshots so cached SNAPSHOT dependencies are re-checked on every build (QRun-IO/qqq-orb#22).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:08:49 -05:00
james.maes f17be9024b Merge pull request #163 from QRun-IO/feature/GH-923-material-packaged-notices
fix(#942): include project notices in published jars
2026-09-30 23:42:20 -05:00
9 changed files with 70 additions and 200 deletions

No files matched your search

-167
View File
@@ -1,167 +0,0 @@
---
version: 2.1
parameters:
run_playwright:
type: boolean
default: false
orbs:
qqq-orb: kingsrook/qqq-orb@0.6.6
commands:
configure-package-install:
steps:
- run:
name: Keep package installation unattended
command: |
# These build machines are discarded after the job.
sudo install -d /etc/needrestart/conf.d
printf '%s\n' '$nrconf{restart} = "l";' | sudo tee /etc/needrestart/conf.d/99-qqq-ci.conf >/dev/null
executors:
playwright:
docker:
- image: mcr.microsoft.com/playwright:v1.58.2-jammy
jobs:
playwright_tests:
executor: playwright
steps:
- checkout
- restore_cache:
keys:
- npm-deps-{{ checksum "package-lock.json" }}
- npm-deps-
- run:
name: Install dependencies
command: npm ci --legacy-peer-deps
- save_cache:
key: npm-deps-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run:
name: Run Playwright visual regression tests
command: npx playwright test
- store_artifacts:
path: playwright-report/
destination: playwright-report
- store_test_results:
path: test-results/
workflows:
test_only:
jobs:
- qqq-orb/mvn_frontend_test_only:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
filters:
branches:
ignore: /(develop|main|release/.*|hotfix/.*)/
tags:
only: []
test_only_with_playwright:
when: << pipeline.parameters.run_playwright >>
jobs:
- playwright_tests:
filters:
branches:
ignore: /(develop|main|release/.*|hotfix/.*)/
tags:
only: []
- qqq-orb/mvn_frontend_test_only:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
requires:
- playwright_tests
filters:
branches:
ignore: /(develop|main|release/.*|hotfix/.*)/
tags:
only: []
publish_snapshot:
jobs:
- qqq-orb/mvn_frontend_publish:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
branch_type: snapshot
filters:
branches:
only:
- develop
publish_snapshot_with_playwright:
when: << pipeline.parameters.run_playwright >>
jobs:
- playwright_tests:
filters:
branches:
only:
- develop
- qqq-orb/mvn_frontend_publish:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
branch_type: snapshot
requires:
- playwright_tests
filters:
branches:
only:
- develop
publish_feature:
jobs:
- qqq-orb/mvn_frontend_publish:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
branch_type: feature
filters:
branches:
only:
- feature/.*
tags:
only: [/publish.*/]
publish_release_candidate:
jobs:
- qqq-orb/mvn_frontend_publish:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
branch_type: release_candidate
filters:
branches:
only:
- /release\/.*/
publish_release:
jobs:
- qqq-orb/mvn_frontend_publish:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
branch_type: release
filters:
branches:
ignore: /.*/
tags:
only: ['/^v[0-9]+\.[0-9]+\.[0-9]+$/']
publish_hotfix_release:
jobs:
- qqq-orb/mvn_frontend_publish:
pre-steps:
- configure-package-install
context: [qqq-maven-registry-credentials]
branch_type: hotfix
filters:
branches:
only:
- /hotfix\/.*/
+12
View File
@@ -0,0 +1,12 @@
name: build
on:
push:
jobs:
maven:
uses: self:KofTwentyTwo/ci-workflows/.gitea/workflows/maven.yaml@v1
secrets: inherit
with:
# Selenium ITs need the Chrome-capable image; the React build is packaged into the jar.
browsers: true
node-version: '22.20.0'
prebuild: bash scripts/ci-prebuild.sh
+23
View File
@@ -0,0 +1,23 @@
name: CodeQL
'on':
push:
branches:
- main
- develop
- release/**
- hotfix/**
pull_request: {}
schedule:
- cron: 41 16 * * 0
workflow_dispatch: {}
permissions:
contents: read
actions: read
security-events: write
packages: read
concurrency:
group: codeql-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
analyze:
uses: QRun-IO/qqq-orb/.github/workflows/qbit-codeql.yml@c288a8864fe9054f68410e1d78f5863aea4c4d22
+4
View File
@@ -0,0 +1,4 @@
# Reviewed findings committed before the Gitea migration; exact historical fingerprints only.
267580b44babf4935c152da8fa2320d6059105f3:src/qqq/components/processes/GoogleDriveFolderPicker.tsx:gcp-api-key:43
-29
View File
@@ -348,35 +348,6 @@
</executions>
</plugin>
<!-- GPG signing for Maven Central -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Sonatype Central publishing (replaces deploy to distributionManagement) -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<!-- Server credentials with this ID must be provided in settings.xml -->
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
############################################################################
## ci-prebuild.sh
## CI prebuild for the shared ci-workflows maven.yaml (runs before Maven):
## Jest unit tests, the React build that is packaged into the jar, and the
## HTTPS dev server on :3001 that the Selenium ITs drive (as the old
## qqq-orb frontend-material pipeline did). Maven then runs the ITs headless.
############################################################################
set -euo pipefail
npm ci --legacy-peer-deps
npm test -- --watchAll=false
npm run build-and-publish
HTTPS=true PORT=3001 REACT_APP_PROXY_LOCALHOST_PORT=8001 \
nohup setsid npm run start > /tmp/react-dev-server.log 2>&1 < /dev/null &
for _ in $(seq 1 150); do
if curl -ksf -o /dev/null https://localhost:3001/; then
echo "React dev server is up on https://localhost:3001"
exit 0
fi
sleep 2
done
echo "React dev server did not come up on :3001"
cat /tmp/react-dev-server.log
exit 1
@@ -66,7 +66,7 @@ public class QBaseSeleniumTest
chromeOptions.addArguments("--remote-allow-origins=*");
String headless = System.getenv("QQQ_SELENIUM_HEADLESS");
if("true".equals(headless))
if("true".equals(headless) || "true".equals(System.getenv("CI")))
{
chromeOptions.addArguments("--headless=new");
}
@@ -193,9 +193,9 @@ public class QSeleniumLib
*******************************************************************************/
public void waitForever()
{
if(System.getenv("CIRCLECI") != null)
if(System.getenv("CIRCLECI") != null || "true".equals(System.getenv("CI")))
{
LOG.warn("A waitForever was found in CIRCLECI - so, we don't want to do that, so, returning immediately.");
LOG.warn("A waitForever was found in CI - so, we don't want to do that, so, returning immediately.");
return;
}
@@ -93,7 +93,7 @@ public class QBaseSeleniumWithQApplicationTest
chromeOptions.addArguments("--remote-allow-origins=*");
String headless = System.getenv("QQQ_SELENIUM_HEADLESS");
if("true".equals(headless))
if("true".equals(headless) || "true".equals(System.getenv("CI")))
{
chromeOptions.addArguments("--headless=new");
}