Compare commits

..
8 Commits
Author SHA1 Message Date
james.maes bbd3969a45 chore(GH-921): attest Material RC2 publication [skip ci]
Attests the unchanged tree of CI version commit 5212616166, built from 1784e4e8d2 by CircleCI job 1823. Public 0.42.0-RC.2 artifacts, signatures, source and notices verified.
2026-10-01 16:19:25 -05:00
CircleCI 5212616166 Bump version to 0.42.0-RC.2 [skip ci] 2026-10-01 12:16:08 +00:00
james.maes 1784e4e8d2 Merge pull request #161 from QRun-IO/feature/GH-921-material-rc2
build: prepare Apache-2.0 Material RC2 input
2026-10-01 07:00:08 -05:00
james.maes d091e17b84 Merge reviewed packaged notices into RC2 input (#942) 2026-09-30 23:28:18 -05:00
james.maes 01c9e981ee build: integrate reviewed security fixes into RC2 input
Preserve RC.1 calculator input and existing publication gates.
2026-09-30 22:40:18 -05:00
james.maes 162e17cff7 build: prepare Apache-2.0 Material RC2 input
Preserve the release calculator input and integrate reviewed license and tag-filter fixes. Refs QRun-IO/qqq#921 and QRun-IO/qqq#923.
2026-09-30 21:24:54 -05:00
james.maes f80d76bffa fix(ci): exclude RC tags from stable publication
Refs QRun-IO/qqq#938.
2026-09-30 21:17:44 -05:00
CircleCI c0d7e7b9a1 Bump version to 0.42.0-RC.1 [skip ci] 2026-09-29 22:39:20 +00:00
9 changed files with 201 additions and 71 deletions

No files matched your search

+167
View File
@@ -0,0 +1,167 @@
---
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
@@ -1,12 +0,0 @@
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
@@ -1,23 +0,0 @@
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
@@ -1,4 +0,0 @@
# Reviewed findings committed before the Gitea migration; exact historical fingerprints only.
267580b44babf4935c152da8fa2320d6059105f3:src/qqq/components/processes/GoogleDriveFolderPicker.tsx:gcp-api-key:43
+30 -1
View File
@@ -57,7 +57,7 @@
</developers>
<properties>
<revision>0.41.0-SNAPSHOT</revision>
<revision>0.42.0-RC.2</revision>
<qqq.version>4.0.0</qqq.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -348,6 +348,35 @@
</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
@@ -1,27 +0,0 @@
#!/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) || "true".equals(System.getenv("CI")))
if("true".equals(headless))
{
chromeOptions.addArguments("--headless=new");
}
@@ -193,9 +193,9 @@ public class QSeleniumLib
*******************************************************************************/
public void waitForever()
{
if(System.getenv("CIRCLECI") != null || "true".equals(System.getenv("CI")))
if(System.getenv("CIRCLECI") != null)
{
LOG.warn("A waitForever was found in CI - so, we don't want to do that, so, returning immediately.");
LOG.warn("A waitForever was found in CIRCLECI - 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) || "true".equals(System.getenv("CI")))
if("true".equals(headless))
{
chromeOptions.addArguments("--headless=new");
}