From 1445c1e3f139e1020c1a1d4e084c2013f5983f51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 21:55:21 +0000 Subject: [PATCH 1/9] chore(deps-dev): bump org.assertj:assertj-core Bumps the maven group with 1 update in the / directory: [org.assertj:assertj-core](https://github.com/assertj/assertj). Updates `org.assertj:assertj-core` from 3.24.2 to 3.27.7 - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.24.2...assertj-build-3.27.7) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-version: 3.27.7 dependency-type: direct:development dependency-group: maven ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 41d62c3..260bba5 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ org.assertj assertj-core - 3.24.2 + 3.27.7 test -- 2.54.0 From 62de7d6063c15b09b3f3116afbb2b5e0eb47ff79 Mon Sep 17 00:00:00 2001 From: James Maes Date: Thu, 21 May 2026 17:14:32 -0500 Subject: [PATCH 2/9] chore: add CODEOWNERS pointing to sole maintainer Architecture audit pass 2026-05-21. Minimal CODEOWNERS file making the implicit ownership explicit. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..e7d84f9 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @KofTwentyTwo -- 2.54.0 From 0af649ed01f07481db3247e09422e083889546b8 Mon Sep 17 00:00:00 2001 From: James Maes Date: Sun, 12 Jul 2026 05:31:21 -0500 Subject: [PATCH 3/9] docs: add CLAUDE.md pointer to QQQ knowledge-base dossier + hub Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..4c3e624 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,26 @@ +# qbit-template-data + +GitHub template repo for scaffolding QQQ "Data QBits" (reference data + +table prefixing + sync process + Liquibase generation). Placeholder package +`com.kingsrook.qbits.example`; meant to be renamed by template consumers. + +## Knowledge base + +- Domain hub: `R:/Git.Local/KofTwentyTwo/second-brain/knowledge/qqq/qqq-hub.md` +- This repo's dossier: `R:/Git.Local/KofTwentyTwo/second-brain/knowledge/qqq/repos/qbit-template-data.md` + (reviewed commit `62de7d6063c1`, branch `main`, 2026-07-04) +- QBit mechanics: `knowledge/qqq/architecture/metadata-model.md` in the same vault. + +Key facts from the review (see dossier for detail): + +- The template Java does NOT compile (4 errors: legacy + `model.MetaDataProducerInterface` import, duplicate `RunBackendStepInput` + imports, nonexistent `QProcessMetaData.withInputFields`, unimplemented + `getProcessSummary` from `AbstractTransformStep`). CircleCI has been red + since it was added. +- Pins `qqq-backend-core` 0.35.0 directly; no `qbit-build-parent`, no BOM + import — diverges from the convention used by all real qbit repos. +- Licensing: LICENSE/NOTICE are Apache-2.0 but the README still says AGPL-3.0 + and the pom has no `` block; source files have no license headers. +- Multi-instance prefixing only covers tables — PVS and process names collide + if the QBit is produced twice (compare `qbit-geo-data` for the full pattern). -- 2.54.0 From b8ed33985d051bec9313471eed6a7bb5dc9a38b7 Mon Sep 17 00:00:00 2001 From: James Maes Date: Thu, 24 Sep 2026 13:32:11 -0500 Subject: [PATCH 4/9] feat(release): migrate data template to QQQ 4.0 (#4) * fix(template): complete QQQ 4.0 data migration * fix(ci): avoid interactive package restart prompts * docs: align guides and examples with QQQ 4.0 * docs(release): finalize QQQ 4.0 template instructions Refs QRun-IO/qqq#631. --- .circleci/config.yml | 14 ++++- CLAUDE.md | 4 ++ README.md | 38 +++++-------- docs/00-getting-started.md | 53 +++++++------------ docs/01-data-qbit-architecture.md | 6 ++- docs/02-sync-process.md | 38 +------------ pom.xml | 2 +- ...xampleDataSyncProcessMetaDataProducer.java | 13 +++-- .../example/sync/ExampleDataSyncStep.java | 14 ++++- 9 files changed, 73 insertions(+), 109 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8828026..010cd62 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,19 @@ version: 2.1 orbs: qqq-orb: kingsrook/qqq-orb@0.5.0 +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 + workflows: build: jobs: - - qqq-orb/mvn_test + - qqq-orb/mvn_test_only: + pre-steps: + - configure-package-install diff --git a/CLAUDE.md b/CLAUDE.md index 4c3e624..cf97527 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,6 +4,10 @@ GitHub template repo for scaffolding QQQ "Data QBits" (reference data + table prefixing + sync process + Liquibase generation). Placeholder package `com.kingsrook.qbits.example`; meant to be renamed by template consumers. +## QQQ 4.0 baseline — 2026-09-24 + +The historical review below predates the 4.0 migration. This template targets Java 21 and the public QQQ 4.0.0 release from Maven Central. The corrected APIs, license references and actual template commands are in README.md and docs/00-getting-started.md. Preserve the documented multi-instance and scaffold limitations. + ## Knowledge base - Domain hub: `R:/Git.Local/KofTwentyTwo/second-brain/knowledge/qqq/qqq-hub.md` diff --git a/README.md b/README.md index f46dde7..ee95bda 100644 --- a/README.md +++ b/README.md @@ -12,24 +12,20 @@ Data QBits provide reusable reference data sets that applications consume. They ## Quick Start -1. Click "Use this template" to create your QBit -2. Run `scripts/customize_template.py` to rename the example -3. Define your entity classes -4. Add reference data JSON files -5. Implement sync process -6. Generate Liquibase changelog +Requires **Java 21**, **Maven 3.8+**, and QQQ **4.0.0**. Create your repository, rename its Maven coordinates and Java package/classes, then run `mvn clean verify`. See [Getting Started](docs/00-getting-started.md). ## Structure ``` src/main/java/com/kingsrook/qbits/example/ -├── ExampleDataQBitConfig.java # Extends AbstractDataQBitConfig -├── ExampleDataQBitProducer.java # Extends AbstractDataQBitProducer +├── ExampleDataQBitConfig.java # Configuration +├── ExampleDataQBitProducer.java # QBit registration ├── model/ │ ├── ExampleEntity.java │ └── ExampleChildEntity.java ├── sync/ -│ └── ExampleDataSyncProcess.java +│ ├── ExampleDataSyncStep.java +│ └── ExampleDataSyncProcessMetaDataProducer.java └── liquibase/ └── ExampleLiquibaseGenerator.java ``` @@ -37,28 +33,20 @@ src/main/java/com/kingsrook/qbits/example/ ## Key Characteristics - **Table prefixing** - `shipping_country`, `billing_country` -- **Multi-instance** - Same QBit deployed multiple times +- **Host configuration** - Backend and optional table prefix - **Sync process** - Upsert by natural key - **Liquibase generator** - Template-based, prefix-aware -## Multi-Instance Usage +## Host integration ```java -// Shipping addresses -new GeoDataQBitProducer() - .withConfig(new GeoDataQBitConfig() - .withBackendName("rdbms") - .withTableNamePrefix("shipping")) - .produce(qInstance, "shipping-geo"); - -// Billing addresses -new GeoDataQBitProducer() - .withConfig(new GeoDataQBitConfig() - .withBackendName("rdbms") - .withTableNamePrefix("billing")) - .produce(qInstance, "billing-geo"); +new ExampleDataQBitProducer() + .withConfig(new ExampleDataQBitConfig().withBackendName("rdbms")) + .produce(qInstance, "example-data"); ``` +The host must already define the backend. The example prefixes table names; adapting it for multiple instances also requires unique process and possible-value-source names and consistent references. See [Getting Started](docs/00-getting-started.md). + ## Documentation - [Getting Started](docs/00-getting-started.md) @@ -68,4 +56,4 @@ new GeoDataQBitProducer() ## License -AGPL-3.0 - See [LICENSE](LICENSE) +See [LICENSE](LICENSE) and [NOTICE](NOTICE). diff --git a/docs/00-getting-started.md b/docs/00-getting-started.md index 047d995..e281ee8 100644 --- a/docs/00-getting-started.md +++ b/docs/00-getting-started.md @@ -1,47 +1,30 @@ # Getting Started -## Prerequisites +Targets Java 21, Maven 3.8 or later, and QQQ 4.0.0. Maven resolves the framework dependencies from Maven Central. -- Java 17+ -- Maven 3.8+ -- QQQ 0.23.0+ +1. Choose **Use this template** on GitHub, then clone the repository you created. +2. In `pom.xml`, set your own `groupId`, `artifactId`, name, description, and version. +3. Use your IDE's package refactoring to rename `com.kingsrook.qbits.example` throughout `src/`. Rename the `Example*` classes and update their imports and references with the IDE's rename refactoring. +4. Update the QBit producer's `GROUP_ID`, `ARTIFACT_ID`, and `VERSION` constants to match your project. Give the metadata names their own stable names before combining the QBit with other examples. +5. Build the generated project: -## Creating Your Data QBit - -1. Click "Use this template" on GitHub -2. Clone your new repository -3. Run the customization script: - ```bash - python scripts/customize_template.py - ``` -4. Enter your QBit name when prompted - -## Project Structure - -``` -src/main/java/com/kingsrook/qbits/yourdata/ -├── YourDataQBitConfig.java -├── YourDataQBitProducer.java -├── model/ -│ └── YourEntity.java -├── sync/ -│ └── YourDataSyncProcess.java -└── liquibase/ - └── YourLiquibaseGenerator.java +```bash +mvn clean verify ``` -## Using Your QBit +The repository provides example Java sources; customization uses normal package/class refactoring. Keep example coordinates unpublished. After customizing, add tests for your QBit's behavior before setting up its publishing workflow. + +## Register with a host application + +The following uses the original example names; substitute the names chosen above: ```java -new YourDataQBitProducer() - .withConfig(new YourDataQBitConfig() - .withBackendName("rdbms") - .withTableNamePrefix("myprefix")) +new ExampleDataQBitProducer() + .withConfig(new ExampleDataQBitConfig() + .withBackendName("rdbms")) .produce(qInstance, "my-data"); ``` -## Next Steps +Register the configured backend in the host first. If you add table prefixes or multiple QBit instances, update related table references, possible-value-source names, and process/widget names consistently. A table prefix alone does not namespace all metadata. -- Read [Data QBit Architecture](01-data-qbit-architecture.md) -- Implement your sync process -- Generate Liquibase changelog +[Data QBit Architecture](01-data-qbit-architecture.md) explains the example data model. diff --git a/docs/01-data-qbit-architecture.md b/docs/01-data-qbit-architecture.md index 689568d..ea6f7c5 100644 --- a/docs/01-data-qbit-architecture.md +++ b/docs/01-data-qbit-architecture.md @@ -2,7 +2,7 @@ ## Table Prefixing -Data QBits support table prefixing for multi-instance deployment: +The producer can prefix metadata names. Prefixing alone does not guarantee multiple independent instances: review process names, relationships and any hard-coded table references before registering more than one instance. ```java public String applyPrefix(String tableName) @@ -54,6 +54,8 @@ public class ExampleEntity extends QRecordEntity private String code; // Natural key @QField - private Boolean isActive = true; // Soft delete + private Boolean isActive = true; // Used by the sync process's explicit deactivation logic } ``` + +An `isActive` field is not a global soft-delete facility. Add appropriate query filters and application behavior for inactive rows. diff --git a/docs/02-sync-process.md b/docs/02-sync-process.md index 20503f1..327c45c 100644 --- a/docs/02-sync-process.md +++ b/docs/02-sync-process.md @@ -27,44 +27,10 @@ Source Data (JSON) --> Sync Process --> Database Tables ## Implementation -```java -public class ExampleDataSyncStep extends AbstractTransformStep -{ - @Override - public void runOnePage(RunBackendStepInput input, RunBackendStepOutput output) - { - // 1. Load source data from classpath JSON - List sourceRecords = loadJsonData(resourcePath); +The checked implementation is [ExampleDataSyncStep](../src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncStep.java), with process metadata in [ExampleDataSyncProcessMetaDataProducer](../src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncProcessMetaDataProducer.java). It implements both `runOnePage` and the required `getProcessSummary` method. - // 2. Query existing by natural key - Map existingByKey = queryExisting(tableName, naturalKeyField); +The step loads classpath JSON, queries existing rows by their natural key, separates inserts/updates/deactivations, and calls its insert/update helpers. Deactivation explicitly sets `isActive=false` for removed active rows. Follow the source helper signatures when adapting the step, and review its execution behavior before introducing a preview or validation screen. The presence of an `isActive` field does not itself filter normal queries. - // 3. Categorize records - for(QRecord source : sourceRecords) - { - String key = source.getValueString(naturalKeyField); - QRecord existing = existingByKey.remove(key); - - if(existing == null) - toInsert.add(source); // New record - else if(hasChanges(source, existing)) - toUpdate.add(source); // Changed record - } - - // 4. Remaining in map - no longer in source - for(QRecord orphan : existingByKey.values()) - { - orphan.setValue("isActive", false); - toDeactivate.add(orphan); // Soft delete - } - - // 5. Execute operations - insertRecords(toInsert); - updateRecords(toUpdate); - updateRecords(toDeactivate); - } -} -``` ## Data File Format diff --git a/pom.xml b/pom.xml index 41d62c3..22ada99 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ 21 21 UTF-8 - 0.35.0 + 4.0.0 diff --git a/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncProcessMetaDataProducer.java b/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncProcessMetaDataProducer.java index 1a3184b..0d7be72 100644 --- a/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncProcessMetaDataProducer.java +++ b/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncProcessMetaDataProducer.java @@ -6,14 +6,14 @@ package com.kingsrook.qbits.example.sync; import java.util.List; import com.kingsrook.qqq.backend.core.exceptions.QException; +import com.kingsrook.qqq.backend.core.model.metadata.MetaDataProducerInterface; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.processes.QFunctionInputMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; -import com.kingsrook.qqq.backend.core.model.MetaDataProducerInterface; -import com.kingsrook.qbits.example.model.ExampleEntity; public class ExampleDataSyncProcessMetaDataProducer implements MetaDataProducerInterface @@ -31,15 +31,14 @@ public class ExampleDataSyncProcessMetaDataProducer implements MetaDataProducerI return new QProcessMetaData() .withName(NAME) .withLabel("Example Data Sync") - .withInputFields(List.of( - new QFieldMetaData("tableName", QFieldType.STRING), - new QFieldMetaData("naturalKeyField", QFieldType.STRING), - new QFieldMetaData("dataResourcePath", QFieldType.STRING) - )) .withStepList(List.of( new QBackendStepMetaData() .withName("sync") .withCode(new QCodeReference(ExampleDataSyncStep.class)) + .withInputData(new QFunctionInputMetaData() + .withField(new QFieldMetaData("tableName", QFieldType.STRING)) + .withField(new QFieldMetaData("naturalKeyField", QFieldType.STRING)) + .withField(new QFieldMetaData("dataResourcePath", QFieldType.STRING))) )); } } diff --git a/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncStep.java b/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncStep.java index e3a8217..477b91e 100644 --- a/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncStep.java +++ b/src/main/java/com/kingsrook/qbits/example/sync/ExampleDataSyncStep.java @@ -17,8 +17,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import com.kingsrook.qqq.backend.core.actions.processes.RunBackendStepInput; -import com.kingsrook.qqq.backend.core.actions.processes.RunBackendStepOutput; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; @@ -31,6 +29,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryOutput; import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; +import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLineInterface; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwithfrontend.AbstractTransformStep; import org.json.JSONArray; @@ -236,4 +235,15 @@ public class ExampleDataSyncStep extends AbstractTransformStep updateInput.setRecords(records); new UpdateAction().execute(updateInput); } + + + + /******************************************************************************* + ** Return the process summary. + *******************************************************************************/ + @Override + public ArrayList getProcessSummary(RunBackendStepOutput runBackendStepOutput, boolean isForResultScreen) + { + return (new ArrayList<>()); + } } -- 2.54.0 From 25651acbd43d8b28d57e8911ebb44a5da078a6bd Mon Sep 17 00:00:00 2001 From: James Maes Date: Tue, 20 Oct 2026 07:22:07 -0500 Subject: [PATCH 5/9] ci: adopt central QQQ orb 0.7.4 Co-Authored-By: Codex --- .circleci/config.yml | 29 +++++++++++------------------ .qqq-ci.yml | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 .qqq-ci.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index 010cd62..f8102d3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,21 +1,14 @@ version: 2.1 - +setup: true orbs: - qqq-orb: kingsrook/qqq-orb@0.5.0 - -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 - + qqq-orb: kingsrook/qqq-orb@0.7.4 workflows: - build: - jobs: - - qqq-orb/mvn_test_only: - pre-steps: - - configure-package-install + setup: + jobs: + - qqq-orb/generate_pipeline: + orb_version: 0.7.4 + filters: + branches: + ignore: automation/qbit-rc-pending + tags: + ignore: /.*/ diff --git a/.qqq-ci.yml b/.qqq-ci.yml new file mode 100644 index 0000000..dc27824 --- /dev/null +++ b/.qqq-ci.yml @@ -0,0 +1,16 @@ +profile: qbit +orb_version: 0.7.4 +default_branch: main +java_version: '21' +browsers: true +api_checks: false +docs_only: false +release_on_main: false +release_tag_policy: none +test_branch_policy: all +publish: + snapshot: false + release_candidate: false + release: false + asciidoc: false +release_completion: false -- 2.54.0 From d86263a408796601ee3116804c8a424cb218eefd Mon Sep 17 00:00:00 2001 From: James Maes Date: Wed, 21 Oct 2026 00:55:54 -0500 Subject: [PATCH 6/9] ci: adopt shared orb 0.7.11 (#6) Co-authored-by: Codex --- .circleci/config.yml | 4 ++-- .qqq-ci.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f8102d3..ff93256 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,12 @@ version: 2.1 setup: true orbs: - qqq-orb: kingsrook/qqq-orb@0.7.4 + qqq-orb: kingsrook/qqq-orb@0.7.11 workflows: setup: jobs: - qqq-orb/generate_pipeline: - orb_version: 0.7.4 + orb_version: 0.7.11 filters: branches: ignore: automation/qbit-rc-pending diff --git a/.qqq-ci.yml b/.qqq-ci.yml index dc27824..8e2829f 100644 --- a/.qqq-ci.yml +++ b/.qqq-ci.yml @@ -1,5 +1,5 @@ profile: qbit -orb_version: 0.7.4 +orb_version: 0.7.11 default_branch: main java_version: '21' browsers: true -- 2.54.0 From 342c183c6a9a55aa79dd885e29843c5d4d319821 Mon Sep 17 00:00:00 2001 From: James Maes Date: Wed, 21 Oct 2026 08:55:28 -0500 Subject: [PATCH 7/9] ci: adopt central orb 0.7.12 and stable gates (#7) Co-authored-by: Codex --- .circleci/config.yml | 4 ++-- .qqq-ci.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ff93256..8b8bfbd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,12 @@ version: 2.1 setup: true orbs: - qqq-orb: kingsrook/qqq-orb@0.7.11 + qqq-orb: kingsrook/qqq-orb@0.7.12 workflows: setup: jobs: - qqq-orb/generate_pipeline: - orb_version: 0.7.11 + orb_version: 0.7.12 filters: branches: ignore: automation/qbit-rc-pending diff --git a/.qqq-ci.yml b/.qqq-ci.yml index 8e2829f..7028d97 100644 --- a/.qqq-ci.yml +++ b/.qqq-ci.yml @@ -1,5 +1,5 @@ profile: qbit -orb_version: 0.7.11 +orb_version: 0.7.12 default_branch: main java_version: '21' browsers: true -- 2.54.0 From 5d3105a6f0490701c912fdf2175dec26e13cc922 Mon Sep 17 00:00:00 2001 From: James Maes Date: Wed, 21 Oct 2026 16:34:49 -0500 Subject: [PATCH 8/9] ci: adopt managed orb 0.8 patch track (#8) Co-authored-by: Codex --- .circleci/config.yml | 4 ++-- .qqq-ci.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8b8bfbd..32df77b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,12 @@ version: 2.1 setup: true orbs: - qqq-orb: kingsrook/qqq-orb@0.7.12 + qqq-orb: kingsrook/qqq-orb@0.8 workflows: setup: jobs: - qqq-orb/generate_pipeline: - orb_version: 0.7.12 + orb_version: '0.8' filters: branches: ignore: automation/qbit-rc-pending diff --git a/.qqq-ci.yml b/.qqq-ci.yml index 7028d97..d65dd23 100644 --- a/.qqq-ci.yml +++ b/.qqq-ci.yml @@ -1,5 +1,5 @@ profile: qbit -orb_version: 0.7.12 +orb_version: '0.8' default_branch: main java_version: '21' browsers: true -- 2.54.0 From fc9e2baf475c11f15208961f33633a7899c90cac Mon Sep 17 00:00:00 2001 From: James Maes Date: Wed, 21 Oct 2026 18:31:16 -0500 Subject: [PATCH 9/9] ci: use central orb pipeline on develop Co-Authored-By: Codex --- .circleci/config.yml | 17 +++++++++++------ .qqq-ci.yml | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 .qqq-ci.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index 8828026..32df77b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,9 +1,14 @@ version: 2.1 - +setup: true orbs: - qqq-orb: kingsrook/qqq-orb@0.5.0 - + qqq-orb: kingsrook/qqq-orb@0.8 workflows: - build: - jobs: - - qqq-orb/mvn_test + setup: + jobs: + - qqq-orb/generate_pipeline: + orb_version: '0.8' + filters: + branches: + ignore: automation/qbit-rc-pending + tags: + ignore: /.*/ diff --git a/.qqq-ci.yml b/.qqq-ci.yml new file mode 100644 index 0000000..d65dd23 --- /dev/null +++ b/.qqq-ci.yml @@ -0,0 +1,16 @@ +profile: qbit +orb_version: '0.8' +default_branch: main +java_version: '21' +browsers: true +api_checks: false +docs_only: false +release_on_main: false +release_tag_policy: none +test_branch_policy: all +publish: + snapshot: false + release_candidate: false + release: false + asciidoc: false +release_completion: false -- 2.54.0