-
-
Notifications
You must be signed in to change notification settings - Fork 28
[#1571] Split CircleCI config into multiple files. #2105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…style naming. - Created build-test-deploy.yml for main pipeline - Created database-nightly.yml for overnight DB refresh - Created update-dependencies.yml for Renovate automation - Created vortex-test-postbuild.yml for Vortex post-build tests - Created vortex-test-didi-fi.yml for DIDI file-to-image tests - Created vortex-test-didi-ii.yml for DIDI image-to-image tests - Added comprehensive documentation in README.md - Added workflow mapping and shared components documentation - Preserved all conditional markers for installer processing - Used GitHub Actions-style naming conventions throughout
WalkthroughThis pull request splits a monolithic CircleCI configuration into six independent, self-contained configuration files (build-test-deploy.yml, database-nightly.yml, update-dependencies.yml, vortex-test-postbuild.yml, vortex-test-didi-fi.yml, vortex-test-didi-ii.yml) with corresponding documentation describing workflow mappings, shared components, testing procedures, and implementation strategy. Changes
Sequence Diagram(s)sequenceDiagram
participant GH as GitHub Push/<br/>Schedule
participant CI as CircleCI<br/>Multi-File Config
participant BT as build-test-deploy
participant DB as database-nightly
participant UD as update-dependencies
participant VP as vortex-test-*
GH->>CI: Commit/Tag to main/develop
activate CI
CI->>BT: Trigger: build-test-deploy.yml<br/>Workflow: build-test-deploy
activate BT
BT->>BT: build → test → deploy
BT-->>CI: ✓ Complete
deactivate BT
GH->>CI: Nightly cron trigger<br/>(develop branch)
CI->>DB: Trigger: database-nightly.yml<br/>Workflow: database-nightly
activate DB
DB->>DB: Setup SSH, Docker,<br/>Download/Export DB
DB-->>CI: ✓ Cache updated
deactivate DB
GH->>CI: Cron or manual<br/>run_update_dependencies=true
CI->>UD: Trigger: update-dependencies.yml<br/>Workflows: scheduled/manual
activate UD
UD->>UD: Validate env vars,<br/>Execute Renovate
UD-->>CI: ✓ PR created (if needed)
deactivate UD
GH->>CI: Commit/Tag/Manual
CI->>VP: Trigger: vortex-test-*.yml<br/>Workflows: vortex-test-didi-fi/ii, postbuild
activate VP
VP->>VP: Specialized test flow<br/>(DB-from-file, DB-in-image,<br/>post-build PHPUnit)
VP-->>CI: ✓ Results & artifacts
deactivate VP
deactivate CI
Note over CI: Each config file<br/>self-contained &<br/>independently triggered
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes
Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2105 +/- ##
===========================================
- Coverage 70.02% 65.98% -4.04%
===========================================
Files 97 44 -53
Lines 4898 2214 -2684
Branches 44 44
===========================================
- Hits 3430 1461 -1969
+ Misses 1468 753 -715 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 15
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (12)
.circleci/README.md(1 hunks).circleci/SHARED_COMPONENTS.md(1 hunks).circleci/TESTING.md(1 hunks).circleci/WORKFLOW_MAPPING.md(1 hunks).circleci/build-test-deploy.yml(6 hunks).circleci/database-nightly.yml(1 hunks).circleci/update-dependencies.yml(1 hunks).circleci/vortex-test-didi-fi.yml(1 hunks).circleci/vortex-test-didi-ii.yml(1 hunks).circleci/vortex-test-postbuild.yml(1 hunks)IMPLEMENTATION_SUMMARY.md(1 hunks)plan.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
IMPLEMENTATION_SUMMARY.md
[uncategorized] ~42-~42: The official name of this software platform is spelled with a capital “H”.
Context: ...icate purpose - Consistent: Matches .github/workflows/ naming patterns - **Prefixe...
(GITHUB)
plan.md
[style] ~11-~11: ‘mixed together’ might be wordy. Consider a shorter alternative.
Context: ... all jobs, workflows, and configuration mixed together - Difficult to navigate and maintain - ...
(EN_WORDINESS_PREMIUM_MIXED_TOGETHER)
[uncategorized] ~51-~51: The official name of this software platform is spelled with a capital “H”.
Context: ...creation GitHub Actions Equivalent: .github/workflows/build-test-deploy.yml **Work...
(GITHUB)
[uncategorized] ~89-~89: The official name of this software platform is spelled with a capital “H”.
Context: ...arameter GitHub Actions Equivalent: .github/workflows/update-dependencies.yml **Wo...
(GITHUB)
[uncategorized] ~117-~117: The official name of this software platform is spelled with a capital “H”.
Context: ...Note:* Follows same naming pattern as .github/workflows/vortex-test-*.yml files. --...
(GITHUB)
.circleci/README.md
[uncategorized] ~300-~300: The official name of this software platform is spelled with a capital “H”.
Context: ...e.com - GitHub Actions (reference): .github/workflows/ directory --- ## Maintena...
(GITHUB)
🪛 markdownlint-cli2 (0.18.1)
.circleci/TESTING.md
19-19: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
26-26: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
33-33: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
43-43: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
49-49: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
55-55: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
65-65: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
93-93: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
104-104: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
118-118: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
131-131: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
141-141: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
148-148: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
160-160: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
177-177: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
196-196: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
202-202: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
208-208: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
213-213: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
231-231: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
235-235: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
239-239: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
243-243: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
247-247: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
259-259: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
263-263: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
267-267: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
271-271: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
331-331: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
.circleci/SHARED_COMPONENTS.md
7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
11-11: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
15-15: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
18-18: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
22-22: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
26-26: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
30-30: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
39-39: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
44-44: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
49-49: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
54-54: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
58-58: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
62-62: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
68-68: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
74-74: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
83-83: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
92-92: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
97-97: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
104-104: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
112-112: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
IMPLEMENTATION_SUMMARY.md
39-39: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
51-51: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
60-60: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
66-66: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
72-72: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
78-78: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
88-88: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
96-96: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
.circleci/WORKFLOW_MAPPING.md
7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
16-16: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
22-22: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
28-28: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
33-33: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
38-38: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
50-50: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
55-55: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
60-60: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
66-66: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
71-71: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
plan.md
27-27: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
48-48: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
67-67: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
84-84: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
87-87: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
88-88: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
104-104: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
121-121: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
137-137: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
153-153: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
168-168: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
179-179: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
197-197: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
245-245: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
273-273: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
289-289: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
307-307: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
312-312: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
317-317: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
322-322: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
329-329: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
336-336: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
343-343: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
350-350: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
357-357: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
.circleci/README.md
13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
34-34: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
51-51: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
78-78: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
95-95: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
112-112: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
193-193: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
297-297: Bare URL used
(MD034, no-bare-urls)
298-298: Bare URL used
(MD034, no-bare-urls)
299-299: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
- GitHub Check: build (0)
- GitHub Check: build (1)
- GitHub Check: vortex-test-workflow (2)
- GitHub Check: vortex-test-workflow (4)
- GitHub Check: vortex-test-workflow (1)
- GitHub Check: vortex-test-workflow (3)
- GitHub Check: vortex-test-workflow (0)
- GitHub Check: vortex-test-common
- GitHub Check: vortex-test-installer (8.3)
- GitHub Check: vortex-test-installer (8.4)
🔇 Additional comments (11)
.circleci/build-test-deploy.yml (2)
185-185: Verify workflow and job naming consistency.Job names have been simplified in the workflows section (e.g.,
build-test-deployworkflow at line 447), but the original job names are preserved. Confirm this naming matches the intended refactor and documentation.Line 447 shows workflow named
build-test-deploywhich matches the plan.md naming. Verify this is the intended name per the multi-file strategy.Also applies to: 382-382, 417-417
41-41: Verify CI runner and cache version strings are current by checking Docker Hub and GitHub releases.The version
25.10.0(October 2025) is consistently pinned across your infrastructure—including in docker-compose.yml for mysql, valkey, and docker-wait-for-dependencies services. However, I cannot definitively confirm thatdrevops/ci-runner:25.10.0and thev25.10.0-db11-cache keys are actual released versions.To verify these versions are available and maintained:
- Check Docker Hub for
drevops/ci-runner:25.10.0release- Check drevops/ci-runner GitHub releases to confirm version 25.10.0 exists
- Confirm the
-db11-cache suffix aligns with your database versioning strategy (likely MariaDB 11.x).circleci/README.md (1)
300-300: Capitalize "GitHub" correctly per branding guidelines.Line 300 references "Github Actions" but the official branding is "GitHub".
- - **GitHub Actions (reference):** `.github/workflows/` directory + - **GitHub Actions (reference):** `.github/workflows/` directoryLikely an incorrect or invalid review comment.
.circleci/vortex-test-didi-ii.yml (3)
246-250: Workflow dependency chain is correct.The workflow
vortex-test-didi-iicorrectly establishes thatvortex-test-didi-build-iidepends onvortex-test-didi-database-ii, ensuring the database is prepared before the build test executes. This sequential dependency is semantically sound.
213-237: No issues found—cache branch configuration is correct.Verification confirms both jobs in
vortex-test-didi-ii.ymlconsistently defineVORTEX_CI_DB_CACHE_BRANCH: vortex-dev-didi-ii, and this value is unique to the file with no conflicts against other configuration files (e.g.,vortex-test-didi-fi.ymlusesvortex-dev-didi-fi). Cache isolation is properly maintained.
119-126: No action required—cache key format is consistent across all sibling configuration files.Verification confirms the cache key formats in
vortex-test-didi-ii.ymlmatch exactly across sibling files (build-test-deploy.yml,database-nightly.yml,vortex-test-didi-fi.yml). The distinction betweendb_cache_fallbackin restore operations anddb_cache_fallback_yesin save operations is intentional and consistently applied across all configuration files, indicating a deliberate cache strategy design.IMPLEMENTATION_SUMMARY.md (1)
42-42: Capitalize "GitHub" consistently.Line 42 references
.github/workflows/but the capitalization of "GitHub" in nearby text should be consistent. Change ".github/workflows/" context comment to use proper "GitHub" capitalization if part of a sentence or heading.The reference to
.github/workflows/is correct as a path/directory name. No change needed here—this is a false positive from the static analysis tool. The linter flagged this as "uncategorized" because.github/is a literal path, not a reference to the GitHub service/company. Disregard this hint..circleci/vortex-test-didi-fi.yml (2)
227-227: Tags are already unique across variants; no action required.Verification confirms the FI and II variants use distinct, clearly distinguishable tags (
vortex-dev-didi-database-fivs.vortex-dev-database-ii) appended to the shared base image. These tags are sufficiently unique to prevent cache conflicts and accidental overwrites across pipeline runs.
213-249: No issues found. TheVORTEX_DB_DOWNLOAD_SOURCEdistinction between FI and II variants is intentional and correct.Verification confirms:
- FI variant correctly uses
urlfor file-based database downloads (line 216)- II variant correctly uses
VORTEX_CONTAINER_REGISTRYfor container image downloads (line 216)- Both configurations are properly differentiated and architecturally appropriate
- Comments in the FI file (lines 218-226) explain the design rationale
The code is correctly configured for its intended workflow.
.circleci/database-nightly.yml (2)
176-186: Override is intentional and correctly implemented.The cache fallback logic works as designed: when
VORTEX_CI_DB_CACHE_FALLBACKis set to"no", the bash expansion${VORTEX_CI_DB_CACHE_FALLBACK/no/${CIRCLE_BUILD_NUM}}substitutes a unique build number into/tmp/db_cache_fallback, making cache keys unique per build and forcing a fresh cache build. When set to"yes"(base value), it remains constant, allowing cache restoration. The restore_cache keys correctly use this file's checksum, ensuring the cache invalidation logic functions properly without breaking the build.
182-182: Verify MariaDB image version25.3.0currency with drevops maintainers.Confirmed findings:
- CI runner version is synchronized at
25.10.0across all 5 CircleCI config files ✓- MariaDB version
25.3.0is pinned indatabase-nightly.yml:182and consistent (only one occurrence)- Version mismatch exists:
25.10.0(ci-runner) vs25.3.0(mariadb-drupal-data)Cannot confirm via web search whether
25.3.0is current or outdated for the customdrevops/mariadb-drupal-dataimage. Manually verify:
- If version
25.10.0exists for the MariaDB image- Whether the
25.3.0pin is intentional or requires update for compatibility
| database-nightly: | ||
| triggers: | ||
| - schedule: | ||
| cron: *nightly_db_schedule | ||
| filters: | ||
| branches: | ||
| only: | ||
| - develop | ||
| jobs: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Verify cron schedule syntax and UTC timezone awareness.
The nightly database workflow uses cron schedule "0 18 * * *" (6 PM UTC daily on develop branch). Ensure that stakeholders are aware this runs in UTC and may execute at unexpected local times depending on timezone. Consider documenting the expected execution time in project documentation or CircleCI settings.
If the current schedule does not align with team expectations, adjust the hour value in the cron expression. For reference, common values: 0 2 * * * (2 AM UTC), 0 18 * * * (6 PM UTC), 0 22 * * * (10 PM UTC).
🤖 Prompt for AI Agents
In .circleci/database-nightly.yml around lines 195 to 203 the scheduled cron "0
18 * * *" is set for UTC (runs 18:00 UTC daily on develop) which may not match
team local expectations; verify the cron syntax and timezone with stakeholders,
either adjust the hour field to the correct UTC time that maps to the intended
local run time or document the UTC execution time near this job (or in project
docs/CircleCI settings) so everyone is aware of when it will run.
| #### 1. `build-test-deploy.yml` | ||
| **Pipeline Name:** `Database, Build, Test and Deploy` | ||
|
|
||
| **Purpose:** Core build, test, and deployment workflow for the project. | ||
|
|
||
| **Triggers:** | ||
| - Push to any branch | ||
| - Push to any tag | ||
|
|
||
| **Jobs:** | ||
| - `database` - Download and cache database | ||
| - `build` - Build stack, lint code, run tests | ||
| - `deploy` - Deploy to specific branches | ||
| - `deploy-tags` - Deploy tagged releases | ||
|
|
||
| **Conditionals:** | ||
| - `database` job: Conditional on `!PROVISION_TYPE_PROFILE` | ||
| - `deploy` and `deploy-tags` jobs: Conditional on `DEPLOYMENT` | ||
|
|
||
| --- | ||
|
|
||
| #### 2. `database-nightly.yml` | ||
| **Pipeline Name:** `Database - Nightly refresh` | ||
|
|
||
| **Purpose:** Overnight database refresh and caching for next-day builds. | ||
|
|
||
| **Triggers:** | ||
| - Schedule: `0 18 * * *` (6 PM UTC daily) | ||
| - Branch: `develop` only | ||
|
|
||
| **Jobs:** | ||
| - `database-nightly` - Fresh database download and cache | ||
|
|
||
| **Conditionals:** | ||
| - Entire file: Conditional on `!PROVISION_TYPE_PROFILE` | ||
|
|
||
| --- | ||
|
|
||
| #### 3. `update-dependencies.yml` | ||
| **Pipeline Name:** `Update dependencies` | ||
|
|
||
| **Purpose:** Self-hosted Renovate for automated dependency updates. | ||
|
|
||
| **Triggers:** | ||
| - Schedule: `5 11,23 * * *` (11:05 AM and 11:05 PM UTC daily) | ||
| - Manual: Pipeline parameter `run_update_dependencies` | ||
| - Branch: `develop` only | ||
|
|
||
| **Jobs:** | ||
| - `update-dependencies` - Run Renovate bot | ||
|
|
||
| **Requirements:** | ||
| - `RENOVATE_TOKEN` environment variable | ||
| - `RENOVATE_REPOSITORIES` environment variable | ||
| - `RENOVATE_GIT_AUTHOR` environment variable | ||
|
|
||
| **Conditionals:** | ||
| - Entire file: Conditional on `DEPS_UPDATE_PROVIDER_CI` | ||
|
|
||
| --- | ||
|
|
||
| ### Vortex Development Pipelines | ||
|
|
||
| These pipelines are used for Vortex framework testing and will be removed during project installation. | ||
|
|
||
| #### 4. `vortex-test-postbuild.yml` | ||
| **Pipeline Name:** `Vortex - Test (Post-build)` | ||
|
|
||
| **Purpose:** Vortex framework validation after main build. | ||
|
|
||
| **Triggers:** | ||
| - Push to any branch | ||
| - Push to any tag | ||
|
|
||
| **Jobs:** | ||
| - `vortex-test-postbuild` - Run Vortex post-build tests | ||
|
|
||
| **Conditionals:** | ||
| - Entire file: Conditional on `VORTEX_DEV` | ||
|
|
||
| --- | ||
|
|
||
| #### 5. `vortex-test-didi-fi.yml` | ||
| **Pipeline Name:** `Vortex - Test (DIDI from file)` | ||
|
|
||
| **Purpose:** Test database-in-image workflow with file source. | ||
|
|
||
| **Triggers:** | ||
| - Push to any branch (implicit) | ||
|
|
||
| **Jobs:** | ||
| - `vortex-test-didi-database-fi` - Create DB image from file | ||
| - `vortex-test-didi-build-fi` - Build site with DIDI image | ||
|
|
||
| **Conditionals:** | ||
| - Entire file: Conditional on `VORTEX_DEV` | ||
|
|
||
| --- | ||
|
|
||
| #### 6. `vortex-test-didi-ii.yml` | ||
| **Pipeline Name:** `Vortex - Test (DIDI from registry)` | ||
|
|
||
| **Purpose:** Test database-in-image workflow with registry source. | ||
|
|
||
| **Triggers:** | ||
| - Push to any branch (implicit) | ||
|
|
||
| **Jobs:** | ||
| - `vortex-test-didi-database-ii` - Create DB image from registry | ||
| - `vortex-test-didi-build-ii` - Build site with DIDI image | ||
|
|
||
| **Conditionals:** | ||
| - Entire file: Conditional on `VORTEX_DEV` | ||
|
|
||
| --- | ||
|
|
||
| ## Setting Up Pipelines in CircleCI | ||
|
|
||
| **Prerequisites:** | ||
| - CircleCI account connected to GitHub | ||
| - **CircleCI GitHub App integration** (required for multiple pipelines) | ||
| - Existing project configured in CircleCI | ||
|
|
||
| ### Configuration Steps | ||
|
|
||
| 1. **Access CircleCI UI:** | ||
| - Go to your project in CircleCI | ||
| - Navigate to **Project Settings** → **Project Setup** | ||
|
|
||
| 2. **Create Each Pipeline:** | ||
|
|
||
| For each configuration file, click **Add Pipeline** and configure: | ||
|
|
||
| | Config File | Pipeline Name | Config Path | Trigger | | ||
| |-------------|--------------|-------------|---------| | ||
| | build-test-deploy.yml | `Database, Build, Test and Deploy` | `.circleci/build-test-deploy.yml` | Push to all branches, all tags | | ||
| | database-nightly.yml | `Database - Nightly refresh` | `.circleci/database-nightly.yml` | Schedule (`0 18 * * *` on `develop`) | | ||
| | update-dependencies.yml | `Update dependencies` | `.circleci/update-dependencies.yml` | Schedule (`5 11,23 * * *` on `develop`) + Manual | | ||
| | vortex-test-postbuild.yml | `Vortex - Test (Post-build)` | `.circleci/vortex-test-postbuild.yml` | Push to all branches, all tags | | ||
| | vortex-test-didi-fi.yml | `Vortex - Test (DIDI from file)` | `.circleci/vortex-test-didi-fi.yml` | Push to all branches | | ||
| | vortex-test-didi-ii.yml | `Vortex - Test (DIDI from registry)` | `.circleci/vortex-test-didi-ii.yml` | Push to all branches | | ||
|
|
||
| 3. **Configure Environment Variables:** | ||
|
|
||
| Ensure the following project-level environment variables are set: | ||
|
|
||
| **Required for all pipelines:** | ||
| - `VORTEX_CONTAINER_REGISTRY_USER` - Docker registry username | ||
| - `VORTEX_CONTAINER_REGISTRY_PASS` - Docker registry password | ||
|
|
||
| **Required for database pipelines:** | ||
| - Add SSH key for database downloads (fingerprint in config) | ||
|
|
||
| **Required for deployment pipelines:** | ||
| - Add SSH key for deployments (fingerprint in config) | ||
|
|
||
| **Required for update-dependencies pipeline:** | ||
| - `RENOVATE_TOKEN` - GitHub access token | ||
| - `RENOVATE_REPOSITORIES` - Repository to run Renovate on | ||
| - `RENOVATE_GIT_AUTHOR` - Author for Renovate commits | ||
|
|
||
| ### Trigger Configuration Examples | ||
|
|
||
| **For scheduled pipelines:** | ||
| - In CircleCI UI, select **Trigger** → **Schedule** | ||
| - Set cron expression and target branch | ||
| - Example: `0 18 * * *` on branch `develop` | ||
|
|
||
| **For manual triggers:** | ||
| - Use pipeline parameters in config file | ||
| - Trigger via CircleCI UI or API | ||
|
|
||
| **For push triggers:** | ||
| - Select **Trigger** → **GitHub event** | ||
| - Choose appropriate events (push, tag, pull request) | ||
|
|
||
| --- | ||
|
|
||
| ## File Organization | ||
|
|
||
| ``` | ||
| .circleci/ | ||
| ├── README.md # This file | ||
| ├── WORKFLOW_MAPPING.md # Workflow mapping documentation | ||
| ├── SHARED_COMPONENTS.md # Shared component analysis | ||
| ├── build-test-deploy.yml # Main pipeline | ||
| ├── database-nightly.yml # Nightly DB refresh | ||
| ├── update-dependencies.yml # Dependency updates | ||
| ├── vortex-test-postbuild.yml # Vortex post-build tests | ||
| ├── vortex-test-didi-fi.yml # Vortex DIDI from file tests | ||
| └── vortex-test-didi-ii.yml # Vortex DIDI from registry tests | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## Naming Conventions | ||
|
|
||
| Files follow **GitHub Actions-style naming** for consistency: | ||
|
|
||
| - **Kebab-case:** All lowercase with hyphens (e.g., `build-test-deploy.yml`) | ||
| - **Descriptive names:** Action-oriented naming (e.g., `update-dependencies.yml`) | ||
| - **Vortex prefix:** Development workflows prefixed with `vortex-` (e.g., `vortex-test-*.yml`) | ||
|
|
||
| Pipeline names in CircleCI UI also follow this convention for easy identification. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Fix Markdown formatting: add blank lines around headings.
Multiple headings lack required blank lines per MD022. Ensure each heading is surrounded by blank lines.
Apply blank lines around headings at lines 13, 34, 51, 78, 95, 112 and others.
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
34-34: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
51-51: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
78-78: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
95-95: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
112-112: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
193-193: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
.circleci/README.md around lines 13 to 217: several Markdown headings are not
surrounded by blank lines (MD022); to fix, insert a single blank line before and
after each heading listed (lines 13, 34, 51, 78, 95, 112 and any other headings
in this range), ensuring top-level and subsection headings have an empty line
above and below so lists and paragraphs are separated from the heading; scan the
file for any additional headings in this block and apply the same change.
|
|
||
| ## File Organization | ||
|
|
||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Specify language for fenced code block.
Line 193 uses a fenced code block without specifying a language identifier per MD040.
- ```
+ ```bash
.circleci/🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
193-193: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In .circleci/README.md around line 193, the fenced code block opener is missing
a language identifier (MD040); update the opening backticks to include the
language (e.g., change ``` to ```bash) so the block reads as a bash code block,
ensuring the language tag follows the three backticks on that line.
| - **CircleCI Multiple Pipelines:** https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/ | ||
| - **CircleCI GitHub App:** https://circleci.com/docs/github-apps-integration/ | ||
| - **Vortex Documentation:** https://www.vortextemplate.com |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Wrap bare URLs in Markdown link syntax.
Lines 297-299 contain bare URLs that should be properly linked per MD034.
- - **CircleCI Multiple Pipelines:** https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/
- - **CircleCI GitHub App:** https://circleci.com/docs/github-apps-integration/
- - **Vortex Documentation:** https://www.vortextemplate.com
+ - **CircleCI Multiple Pipelines:** [https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/](https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/)
+ - **CircleCI GitHub App:** [https://circleci.com/docs/github-apps-integration/](https://circleci.com/docs/github-apps-integration/)
+ - **Vortex Documentation:** [https://www.vortextemplate.com](https://www.vortextemplate.com)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - **CircleCI Multiple Pipelines:** https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/ | |
| - **CircleCI GitHub App:** https://circleci.com/docs/github-apps-integration/ | |
| - **Vortex Documentation:** https://www.vortextemplate.com | |
| - **CircleCI Multiple Pipelines:** [https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/](https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/) | |
| - **CircleCI GitHub App:** [https://circleci.com/docs/github-apps-integration/](https://circleci.com/docs/github-apps-integration/) | |
| - **Vortex Documentation:** [https://www.vortextemplate.com](https://www.vortextemplate.com) |
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
297-297: Bare URL used
(MD034, no-bare-urls)
298-298: Bare URL used
(MD034, no-bare-urls)
299-299: Bare URL used
(MD034, no-bare-urls)
🤖 Prompt for AI Agents
In .circleci/README.md around lines 297 to 299, there are bare URLs that violate
MD034; replace each plain URL with proper Markdown link syntax by providing
descriptive link text followed by the URL in brackets/parentheses (e.g.,
[CircleCI Multiple
Pipelines](https://circleci.com/docs/set-up-multiple-configuration-files-for-a-project/)),
updating all three lines so none contain raw bare URLs.
| # Shared Components Across CircleCI Configs | ||
|
|
||
| This document identifies shared components and their usage across the split configuration files. | ||
|
|
||
| ## Aliases (All Files Need These) | ||
|
|
||
| ### 1. **db_ssh_fingerprint** (lines 16-20) | ||
| - **Used by:** build-test-deploy.yml, database-nightly.yml, vortex-test-didi-*.yml | ||
| - **Conditional:** !PROVISION_TYPE_PROFILE | ||
| - **Purpose:** SSH key for database downloads | ||
| ```yaml | ||
| - &db_ssh_fingerprint "SHA256:6d+U5QubT0eAWz+4N2wt+WM2qx6o4cvyvQ6xILETJ84" | ||
| ``` | ||
|
|
||
| ### 2. **deploy_ssh_fingerprint** (lines 22-24) | ||
| - **Used by:** build-test-deploy.yml | ||
| - **Purpose:** SSH key for deployments | ||
| ```yaml | ||
| - &deploy_ssh_fingerprint "SHA256:6d+U5QubT0eAWz+4N2wt+WM2qx6o4cvyvQ6xILETJ84" | ||
| ``` | ||
|
|
||
| ### 3. **nightly_db_schedule** (lines 26-29) | ||
| - **Used by:** database-nightly.yml | ||
| - **Conditional:** !PROVISION_TYPE_PROFILE | ||
| - **Purpose:** Cron schedule for nightly DB refresh | ||
| ```yaml | ||
| - &nightly_db_schedule "0 18 * * *" | ||
| ``` | ||
|
|
||
| ### 4. **runner_config** (lines 31-83) | ||
| - **Used by:** ALL config files (universal) | ||
| - **Purpose:** Shared runner container configuration | ||
| - **Contains:** | ||
| - working_directory alias | ||
| - Environment variables (DB cache, test results, artifacts) | ||
| - Docker image and auth | ||
| - Resource class | ||
|
|
||
| ### 5. **test_results** anchor (line 69) | ||
| - **Used by:** build-test-deploy.yml, vortex-test-*.yml | ||
| - **Purpose:** Test results directory path | ||
| - **Embedded in:** runner_config environment | ||
|
|
||
| ### 6. **artifacts** anchor (line 71) | ||
| - **Used by:** build-test-deploy.yml, vortex-test-*.yml | ||
| - **Purpose:** Artifacts directory path | ||
| - **Embedded in:** runner_config environment | ||
|
|
||
| ### 7. **working_directory** anchor (line 33) | ||
| - **Used by:** ALL config files | ||
| - **Purpose:** Project working directory | ||
| - **Embedded in:** runner_config | ||
|
|
||
| ### 8. **step_setup_remote_docker** (lines 85-91) | ||
| - **Used by:** build-test-deploy.yml, database-nightly.yml, vortex-test-*.yml | ||
| - **Purpose:** Setup remote docker with layer caching | ||
|
|
||
| ### 9. **step_process_codebase_for_ci** (lines 93-98) | ||
| - **Used by:** build-test-deploy.yml, database-nightly.yml, vortex-test-postbuild.yml | ||
| - **Purpose:** Process docker-compose.yml for CI | ||
|
|
||
| ### 10. **load_variables_from_dotenv** (lines 100-104) | ||
| - **Used by:** build-test-deploy.yml, database-nightly.yml, vortex-test-postbuild.yml | ||
| - **Purpose:** Load .env variables into bash environment | ||
|
|
||
| ## Parameters | ||
|
|
||
| ### run_update_dependencies (lines 110-113) | ||
| - **Used by:** update-dependencies.yml only | ||
| - **Purpose:** Manual trigger for dependency updates | ||
|
|
||
| ## File-Specific Component Mapping | ||
|
|
||
| ### build-test-deploy.yml | ||
| **Needs:** | ||
| - db_ssh_fingerprint (conditional) | ||
| - deploy_ssh_fingerprint | ||
| - runner_config (with all embedded anchors) | ||
| - step_setup_remote_docker | ||
| - step_process_codebase_for_ci | ||
| - load_variables_from_dotenv | ||
|
|
||
| ### database-nightly.yml | ||
| **Needs:** | ||
| - db_ssh_fingerprint | ||
| - nightly_db_schedule | ||
| - runner_config (with all embedded anchors) | ||
| - step_setup_remote_docker | ||
| - step_process_codebase_for_ci | ||
| - load_variables_from_dotenv | ||
|
|
||
| ### update-dependencies.yml | ||
| **Needs:** | ||
| - parameters: run_update_dependencies | ||
| - NO other shared components (uses different docker image) | ||
|
|
||
| ### vortex-test-postbuild.yml | ||
| **Needs:** | ||
| - runner_config (with all embedded anchors) | ||
| - step_setup_remote_docker | ||
| - step_process_codebase_for_ci | ||
| - load_variables_from_dotenv | ||
|
|
||
| ### vortex-test-didi-fi.yml | ||
| **Needs:** | ||
| - db_ssh_fingerprint (for database job) | ||
| - runner_config (with all embedded anchors) | ||
| - step_setup_remote_docker | ||
| - step_process_codebase_for_ci | ||
| - load_variables_from_dotenv | ||
|
|
||
| ### vortex-test-didi-ii.yml | ||
| **Needs:** | ||
| - db_ssh_fingerprint (for database job) | ||
| - runner_config (with all embedded anchors) | ||
| - step_setup_remote_docker | ||
| - step_process_codebase_for_ci | ||
| - load_variables_from_dotenv | ||
|
|
||
| ## Strategy | ||
|
|
||
| Each config file will include its own copy of required aliases. This approach: | ||
| - ✅ Maintains file independence | ||
| - ✅ No cross-file dependencies | ||
| - ✅ Each file is self-contained and complete | ||
| - ✅ Easier to understand and modify | ||
| - ⚠️ Some duplication (acceptable trade-off) | ||
|
|
||
| ## Consistency Notes | ||
|
|
||
| 1. All aliases must be identical across files | ||
| 2. runner_config version (drevops/ci-runner:25.10.0) must match | ||
| 3. Conditional markers (#;<, #;>) must be preserved in all files | ||
| 4. Comments should be consistent across files |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Fix Markdown formatting: add blank lines around headings and code blocks.
Multiple formatting issues per Markdown best practices:
- MD022: Many headings lack surrounding blank lines (lines 7, 15, 22, 30, 39, 44, 49, 54, 58, 62, 68, 74, 83, 92, 97, 104, 112)
- MD031: Fenced code blocks on lines 11, 18, 26 need blank lines above them
Apply blank lines before and after all headings and code blocks per Markdown formatting standards.
Example for line 11:
`.yaml
- &db_ssh_fingerprint "SHA256:6d+U5QubT0eAWz+4N2wt+WM2qx6o4cvyvQ6xILETJ84"
becomes:
```diff
`.yaml
- &db_ssh_fingerprint "SHA256:6d+U5QubT0eAWz+4N2wt+WM2qx6o4cvyvQ6xILETJ84"
> Committable suggestion skipped: line range outside the PR's diff.
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>
7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
11-11: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
---
15-15: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
18-18: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
---
22-22: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
26-26: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
---
30-30: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
39-39: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
44-44: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
49-49: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
54-54: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
58-58: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
62-62: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
68-68: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
74-74: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
83-83: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
92-92: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
97-97: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
104-104: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
---
112-112: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
.circleci/SHARED_COMPONENTS.md around lines 1 to 134: fix Markdown spacing
violations (MD022, MD031) by inserting a single blank line before and after each
heading and before and after each fenced code block; specifically add blank
lines surrounding the headings referenced (lines 7, 15, 22, 30, 39, 44, 49, 54,
58, 62, 68, 74, 83, 92, 97, 104, 112) and ensure code blocks at lines ~11, ~18,
~26 (and any other fenced blocks) have an empty line above and below them so all
headings and fenced blocks follow Markdown best practices.
</details>
<!-- This is an auto-generated comment by CodeRabbit -->
| #### GitHub Actions-Style Naming | ||
| - **Kebab-case**: `build-test-deploy.yml`, `update-dependencies.yml` | ||
| - **Descriptive**: Names clearly indicate purpose | ||
| - **Consistent**: Matches `.github/workflows/` naming patterns | ||
| - **Prefixed**: Vortex development files use `vortex-` prefix | ||
|
|
||
| #### Self-Contained Files | ||
| - Each file includes all required aliases | ||
| - No cross-file dependencies | ||
| - Independent pipeline execution | ||
| - Complete workflow definitions | ||
|
|
||
| #### Preserved Functionality | ||
| - All conditional markers (`#;<`, `#;>`) intact | ||
| - Original job definitions preserved | ||
| - Caching behavior maintained | ||
| - Environment variable usage unchanged | ||
| - SSH key configuration preserved | ||
|
|
||
| ## Benefits Achieved | ||
|
|
||
| ### Maintainability | ||
| - ✅ Smaller, focused files (average ~245 lines vs. 763) | ||
| - ✅ Clear separation of concerns | ||
| - ✅ Easier to navigate and understand | ||
| - ✅ Reduced merge conflicts | ||
|
|
||
| ### Clarity | ||
| - ✅ Purpose-driven organization | ||
| - ✅ Consumer vs. development clearly separated | ||
| - ✅ Better documentation per pipeline | ||
| - ✅ Intuitive file naming | ||
|
|
||
| ### Flexibility | ||
| - ✅ Independent pipeline triggers | ||
| - ✅ Isolated testing workflows | ||
| - ✅ Easier to modify specific pipelines | ||
| - ✅ Better error isolation | ||
|
|
||
| ### Consumer Experience |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion | 🟠 Major
Add blank lines above subheadings per Markdown best practices (MD022).
Multiple subheadings lack preceding blank lines, reducing readability. Add a blank line before each subheading to comply with the markdownlint standard.
## Overview
Successfully split the monolithic 763-line `.circleci/config.yml` into 6 focused, maintainable configuration files following GitHub Actions-style naming conventions.
## What Was Implemented
### 1. Configuration Files Created
+
| File | Purpose | Lines | Status |
...
### 2. Documentation Created
+
| Document | Purpose | Status |
...
### 3. Key Features
+
#### GitHub Actions-Style Naming
+
- **Kebab-case**: `build-test-deploy.yml`, `update-dependencies.yml`
...
+
#### Self-Contained Files
+
- Each file includes all required aliases
...
+
#### Preserved Functionality
+
- All conditional markers (`#;<`, `#;>`) intact
...
## Benefits Achieved
+
### Maintainability
+
- ✅ Smaller, focused files (average ~245 lines vs. 763)
...
+
### Clarity
+
- ✅ Purpose-driven organization
...
+
### Flexibility
+
- ✅ Independent pipeline triggers
...
+
### Consumer Experience
+
- ✅ Cleaner consumer projects (Vortex dev files removed)Committable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~42-~42: The official name of this software platform is spelled with a capital “H”.
Context: ...icate purpose - Consistent: Matches .github/workflows/ naming patterns - **Prefixe...
(GITHUB)
🪛 markdownlint-cli2 (0.18.1)
39-39: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
51-51: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
60-60: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
66-66: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
72-72: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
78-78: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🤖 Prompt for AI Agents
In IMPLEMENTATION_SUMMARY.md around lines 39 to 78, several subheadings lack a
blank line above them which violates markdownlint MD022; insert a single blank
line before each subheading (lines that start with one or more #) within this
range so every heading is preceded by an empty line, ensure you don't remove
existing content or alter heading text, and keep surrounding spacing consistent
with the rest of the document.
|
|
||
| ### Main Project Pipelines (Consumer Projects) | ||
|
|
||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion | 🟠 Major
Specify language identifier for fenced code blocks (MD040).
Code blocks at lines 88 and 96 lack language specification. Add language identifiers for syntax highlighting and clarity.
### Pipeline Structure
-\`\`\`
+\`\`\`text
build-test-deploy.yml → Push to branches/tags → Build, test, deploy
...
-\`\`\`
### Vortex Development Pipelines (Removed During Installation)
-\`\`\`
+\`\`\`text
vortex-test-postbuild.yml → Push to branches/tags → Post-build validationAlso applies to: 96-96
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
88-88: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In IMPLEMENTATION_SUMMARY.md around lines 88 and 96, the fenced code blocks are
missing language identifiers (MD040); add the appropriate language tags (e.g.,
```json, ```js, ```yaml, or ```text as applicable) immediately after the opening
triple backticks for both blocks so they render with correct syntax highlighting
and satisfy the linter.
| Split the configuration into logical, purpose-driven files using GitHub Actions-style naming conventions for consistency: | ||
|
|
||
| ``` | ||
| .circleci/ | ||
| ├── build-test-deploy.yml # Main pipeline (commit workflow) | ||
| ├── database-nightly.yml # Nightly database refresh pipeline | ||
| ├── update-dependencies.yml # Renovate/dependency updates pipeline | ||
| ├── vortex-test-postbuild.yml # Vortex post-build validation tests | ||
| ├── vortex-test-didi-fi.yml # Database-in-image from file tests | ||
| └── vortex-test-didi-ii.yml # Database-in-image from registry tests | ||
| ``` | ||
|
|
||
| **Naming Conventions (aligned with GitHub Actions):** | ||
| - Use kebab-case (lowercase with hyphens) | ||
| - Descriptive, action-oriented names (build-test-deploy, update-dependencies) | ||
| - Prefix Vortex development workflows with `vortex-` (e.g., `vortex-test-*`) | ||
| - Match GitHub Actions equivalents where they exist: | ||
| - `.github/workflows/build-test-deploy.yml` → `.circleci/build-test-deploy.yml` | ||
| - `.github/workflows/update-dependencies.yml` → `.circleci/update-dependencies.yml` | ||
| - `.github/workflows/vortex-test-*.yml` → `.circleci/vortex-test-*.yml` | ||
|
|
||
| ## File Breakdown | ||
|
|
||
| ### 1. **build-test-deploy.yml** - Main Build Pipeline | ||
| **Purpose:** Core build, test, and deployment workflow | ||
| **Trigger:** Push to any branch, tag creation | ||
| **GitHub Actions Equivalent:** `.github/workflows/build-test-deploy.yml` | ||
| **Workflow Name:** `Database, Build, Test and Deploy` (matches GHA) | ||
|
|
||
| **Contents:** | ||
| - Aliases (SSH fingerprints, runner config, shared steps) | ||
| - Jobs: | ||
| - `database` (conditional: !PROVISION_TYPE_PROFILE) | ||
| - `build` | ||
| - `deploy` | ||
| - `deploy-tags` | ||
| - Workflow: `build-test-deploy` | ||
|
|
||
| **Size:** ~470 lines | ||
|
|
||
| --- | ||
|
|
||
| ### 2. **database-nightly.yml** - Nightly Database Pipeline | ||
| **Purpose:** Overnight database refresh and caching | ||
| **Trigger:** Scheduled cron (`0 18 * * *`) on `develop` branch | ||
| **Workflow Name:** `Database - Nightly refresh` | ||
|
|
||
| **Contents:** | ||
| - Shared aliases (SSH fingerprints, runner config, db cache config) | ||
| - Jobs: | ||
| - `database-nightly` | ||
| - Workflow: `database-nightly` | ||
|
|
||
| **Size:** ~200 lines (includes shared aliases) | ||
|
|
||
| **Note:** In GitHub Actions, this is part of `build-test-deploy.yml` with a schedule trigger. CircleCI requires separate file for clarity. | ||
|
|
||
| --- | ||
|
|
||
| ### 3. **update-dependencies.yml** - Dependency Updates Pipeline | ||
| **Purpose:** Self-hosted Renovate for automated dependency updates | ||
| **Trigger:** | ||
| - Scheduled cron (`5 11,23 * * *`) on `develop` branch | ||
| - Manual trigger via pipeline parameter | ||
| **GitHub Actions Equivalent:** `.github/workflows/update-dependencies.yml` | ||
| **Workflow Name:** `Update dependencies` (matches GHA) | ||
|
|
||
| **Contents:** | ||
| - Parameters (run_update_dependencies) | ||
| - Jobs: | ||
| - `update-dependencies` | ||
| - Workflows: | ||
| - `update-dependencies-scheduled` | ||
| - `update-dependencies-manual` | ||
|
|
||
| **Size:** ~60 lines | ||
|
|
||
| --- | ||
|
|
||
| ### 4. **vortex-test-postbuild.yml** - Post-Build Tests | ||
| **Purpose:** Vortex framework validation after main build | ||
| **Trigger:** Push to any branch (runs after main pipeline) | ||
| **Workflow Name:** `Vortex - Test (Post-build)` | ||
|
|
||
| **Contents:** | ||
| - Shared aliases (runner config) | ||
| - Jobs: | ||
| - `vortex-test-postbuild` | ||
| - Workflow: `vortex-test-postbuild` | ||
|
|
||
| **Size:** ~80 lines | ||
|
|
||
| **Note:** Follows same naming pattern as `.github/workflows/vortex-test-*.yml` files. | ||
|
|
||
| --- | ||
|
|
||
| ### 5. **vortex-test-didi-fi.yml** - DIDI File-to-Image Tests | ||
| **Purpose:** Test database-in-image workflow with file source | ||
| **Trigger:** Push to any branch | ||
| **Workflow Name:** `Vortex - Test (DIDI from file)` | ||
|
|
||
| **Contents:** | ||
| - Shared aliases (runner config, db config) | ||
| - Jobs: | ||
| - `vortex-test-didi-database-fi` (creates image from DB file) | ||
| - `vortex-test-didi-build-fi` (builds site with DIDI image) | ||
| - Workflow: `vortex-test-didi-fi` | ||
|
|
||
| **Size:** ~250 lines (includes shared job definitions) | ||
|
|
||
| --- | ||
|
|
||
| ### 6. **vortex-test-didi-ii.yml** - DIDI Image-to-Image Tests | ||
| **Purpose:** Test database-in-image workflow with registry source | ||
| **Trigger:** Push to any branch | ||
| **Workflow Name:** `Vortex - Test (DIDI from registry)` | ||
|
|
||
| **Contents:** | ||
| - Shared aliases (runner config, db config) | ||
| - Jobs: | ||
| - `vortex-test-didi-database-ii` (creates image from registry) | ||
| - `vortex-test-didi-build-ii` (builds site with DIDI image) | ||
| - Workflow: `vortex-test-didi-ii` | ||
|
|
||
| **Size:** ~250 lines (includes shared job definitions) | ||
|
|
||
| ## Implementation Strategy | ||
|
|
||
| ### Phase 1: Preparation and Validation | ||
| 1. **Document current behavior:** | ||
| - Map all workflows to their triggers | ||
| - Identify job dependencies across workflows | ||
| - Document environment variables per workflow | ||
|
|
||
| 2. **Create reference documentation:** | ||
| - CircleCI pipeline configuration requirements | ||
| - Trigger event mappings for each workflow | ||
| - Variable inheritance and scoping rules | ||
|
|
||
| 3. **Validate prerequisites:** | ||
| - Confirm CircleCI GitHub App is installed | ||
| - Verify permissions for pipeline management | ||
|
|
||
| ### Phase 2: Extract Shared Components | ||
| 1. **Identify common elements:** | ||
| - Aliases used across multiple jobs (runner_config, ssh fingerprints) | ||
| - Shared steps (setup_remote_docker, process_codebase_for_ci) | ||
| - Common parameters and environment variables | ||
|
|
||
| 2. **Create extraction strategy:** | ||
| - Determine which aliases need duplication vs. reference | ||
| - Document which shared components belong in each file | ||
| - Plan for maintaining consistency across files | ||
|
|
||
| ### Phase 3: Split Configuration Files | ||
| 1. **Create individual config files:** | ||
| - Start with simplest workflows first (update-dependencies) | ||
| - Move to isolated workflows (nightly-db) | ||
| - Handle complex workflows last (vortex-dev tests) | ||
|
|
||
| 2. **For each file:** | ||
| - Copy necessary CircleCI structure (`version: '2.1'`) | ||
| - Include all required shared components (aliases, steps) | ||
| - Preserve Vortex comment markers (`#;<`, `#;>`) | ||
| - Maintain conditional logic for installer | ||
| - Ensure all environment variables are accessible | ||
|
|
||
| 3. **Handle Vortex-specific concerns:** | ||
| - Preserve installer token markers | ||
| - Maintain comment structure for template processing | ||
| - Ensure conditional includes work correctly | ||
|
|
||
| ### Phase 4: Configure CircleCI Pipelines | ||
| 1. **Access CircleCI UI:** | ||
| - Navigate to Project Settings → Project Setup | ||
|
|
||
| 2. **Create pipelines (in order):** | ||
|
|
||
| **Note:** Pipeline names in CircleCI UI follow GitHub Actions style for consistency. | ||
|
|
||
| - **Build, Test and Deploy Pipeline** | ||
| - Name: `Database, Build, Test and Deploy` | ||
| - Config: `.circleci/build-test-deploy.yml` | ||
| - Trigger: Push to all branches, all tags | ||
| - _Matches:_ `.github/workflows/build-test-deploy.yml` | ||
|
|
||
| - **Nightly Database Pipeline** | ||
| - Name: `Database - Nightly refresh` | ||
| - Config: `.circleci/database-nightly.yml` | ||
| - Trigger: Schedule (`0 18 * * *` on `develop`) | ||
| - _Note:_ GHA combines this with main workflow; CircleCI separates for clarity | ||
|
|
||
| - **Update Dependencies Pipeline** | ||
| - Name: `Update dependencies` | ||
| - Config: `.circleci/update-dependencies.yml` | ||
| - Trigger: Schedule (`5 11,23 * * *` on `develop`) + Manual | ||
| - _Matches:_ `.github/workflows/update-dependencies.yml` | ||
|
|
||
| - **Vortex Post-Build Tests Pipeline** | ||
| - Name: `Vortex - Test (Post-build)` | ||
| - Config: `.circleci/vortex-test-postbuild.yml` | ||
| - Trigger: Push to all branches | ||
| - _Follows pattern:_ `.github/workflows/vortex-test-*.yml` | ||
|
|
||
| - **Vortex DIDI-FI Tests Pipeline** | ||
| - Name: `Vortex - Test (DIDI from file)` | ||
| - Config: `.circleci/vortex-test-didi-fi.yml` | ||
| - Trigger: Push to all branches | ||
| - _Follows pattern:_ `.github/workflows/vortex-test-*.yml` | ||
|
|
||
| - **Vortex DIDI-II Tests Pipeline** | ||
| - Name: `Vortex - Test (DIDI from registry)` | ||
| - Config: `.circleci/vortex-test-didi-ii.yml` | ||
| - Trigger: Push to all branches | ||
| - _Follows pattern:_ `.github/workflows/vortex-test-*.yml` | ||
|
|
||
| 3. **Configure environment variables:** | ||
| - Ensure all pipelines inherit project-level variables | ||
| - Document any pipeline-specific variables needed | ||
|
|
||
| ### Phase 5: Testing and Validation | ||
| 1. **Create test branch:** | ||
| - Create `feature/1571-split-circleci-config` branch | ||
| - Push with split configuration | ||
|
|
||
| 2. **Validate each pipeline:** | ||
| - **Commit workflow:** Push to test branch, verify build runs | ||
| - **Nightly DB:** Manually trigger or wait for schedule | ||
| - **Update dependencies:** Trigger manually via parameter | ||
| - **Vortex dev tests:** Verify all three DIDI workflows run | ||
|
|
||
| 3. **Test scenarios:** | ||
| - Push to feature branch (should trigger main + vortex-dev pipelines) | ||
| - Push to `develop` (should trigger all applicable workflows) | ||
| - Create tag (should trigger deploy-tags job) | ||
| - Schedule triggers (wait for or manually trigger) | ||
|
|
||
| 4. **Verify job dependencies:** | ||
| - Ensure `build` waits for `database` in main pipeline | ||
| - Ensure `deploy` waits for `build` | ||
| - Verify Vortex DIDI build jobs wait for database jobs | ||
|
|
||
| 5. **Check for regressions:** | ||
| - Compare job outputs with previous runs | ||
| - Verify all tests pass | ||
| - Ensure deployments work correctly | ||
| - Validate caching behavior | ||
|
|
||
| ### Phase 6: Documentation Updates | ||
| 1. **Update project documentation:** | ||
| - `docs/ci.md` - Explain new multi-pipeline structure | ||
| - `README.md` - Update CircleCI setup instructions | ||
| - `.circleci/README.md` (create) - Document pipeline organization | ||
|
|
||
| 2. **Document for consumer projects:** | ||
| - How installer handles multiple files | ||
| - Which files are removed/kept for consumer projects | ||
| - How to configure their own pipelines post-install | ||
|
|
||
| 3. **Create maintenance guide:** | ||
| - How to add new workflows | ||
| - How to modify shared components | ||
| - Testing guidelines for CI changes | ||
|
|
||
| ### Phase 7: Installer Integration | ||
| 1. **Update Vortex installer:** | ||
| - Modify installer to handle multiple CircleCI files | ||
| - Ensure Vortex-dev files are removed during installation | ||
| - Preserve conditional markers and processing logic | ||
|
|
||
| 2. **Test installer behavior:** | ||
| - Run installer with various configurations | ||
| - Verify correct files are generated for consumer projects | ||
| - Ensure conditional blocks work across all files | ||
|
|
||
| 3. **Update installer tests:** | ||
| - Add test cases for multi-file scenarios | ||
| - Verify file generation logic | ||
| - Test Vortex-dev file removal | ||
|
|
||
| ## Benefits | ||
|
|
||
| ### Maintainability | ||
| - **Smaller files:** Each file focuses on single responsibility | ||
| - **Easier navigation:** Find relevant configuration quickly | ||
| - **Reduced conflicts:** Changes to different workflows don't collide | ||
|
|
||
| ### Clarity | ||
| - **Purpose-driven organization:** File name indicates purpose | ||
| - **Separated concerns:** Consumer vs. Vortex development clearly split | ||
| - **Better documentation:** Each file documents its own trigger and purpose | ||
|
|
||
| ### Flexibility | ||
| - **Independent triggers:** Each pipeline runs on appropriate events | ||
| - **Isolated testing:** Test workflows without affecting main pipeline | ||
| - **Easier debugging:** Identify which pipeline failed at a glance | ||
|
|
||
| ### Consumer Experience | ||
| - **Cleaner projects:** Consumer projects don't receive Vortex-dev configs | ||
| - **Simpler customization:** Modify specific pipelines without touching others | ||
| - **Clear examples:** Each config file serves as standalone example | ||
|
|
||
| ## Risks and Mitigation | ||
|
|
||
| ### Risk 1: CircleCI GitHub App Requirement | ||
| **Impact:** Consumer projects must use GitHub App integration | ||
| **Mitigation:** | ||
| - Document requirement clearly in installation guide | ||
| - Provide migration guide for existing projects | ||
| - Consider maintaining single-file option as fallback (legacy mode) | ||
|
|
||
| ### Risk 2: Increased Complexity | ||
| **Impact:** More files to manage and configure | ||
| **Mitigation:** | ||
| - Comprehensive documentation | ||
| - Clear naming conventions | ||
| - Automated validation in CI | ||
|
|
||
| ### Risk 3: Shared Component Duplication | ||
| **Impact:** Aliases and steps may need duplication across files | ||
| **Mitigation:** | ||
| - Accept reasonable duplication for independence | ||
| - Document canonical definitions | ||
| - Use comments to track which components are shared | ||
|
|
||
| ### Risk 4: Installer Compatibility | ||
| **Impact:** Installer must handle multiple files correctly | ||
| **Mitigation:** | ||
| - Thorough testing of installer changes | ||
| - Maintain backward compatibility during transition | ||
| - Provide migration scripts if needed | ||
|
|
||
| ### Risk 5: Breaking Consumer Projects | ||
| **Impact:** Existing projects might break after update | ||
| **Mitigation:** | ||
| - Mark as breaking change in release notes | ||
| - Provide migration guide with manual steps | ||
| - Consider phased rollout or opt-in mechanism | ||
|
|
||
| ## Success Criteria | ||
|
|
||
| 1. **Functionality:** | ||
| - All workflows continue to work as before | ||
| - Job dependencies are preserved | ||
| - Caching behavior remains consistent | ||
| - Deployments succeed without changes | ||
|
|
||
| 2. **Code Quality:** | ||
| - Each config file is under 300 lines | ||
| - Clear separation of concerns | ||
| - No duplicate job definitions (shared via references) | ||
| - Preserved Vortex template processing markers | ||
|
|
||
| 3. **Documentation:** | ||
| - Pipeline structure documented | ||
| - Trigger events clearly explained | ||
| - Consumer migration guide available | ||
| - Maintenance guide created | ||
|
|
||
| 4. **Testing:** | ||
| - All existing tests pass | ||
| - New pipeline-specific tests added | ||
| - Installer tests validate multi-file handling | ||
|
|
||
| 5. **Consumer Impact:** | ||
| - Installation process documented | ||
| - Consumer projects receive only relevant configs | ||
| - Migration path for existing projects | ||
|
|
||
| ## Open Questions | ||
|
|
||
| 1. **Should we provide a single-file fallback for projects not using GitHub App?** | ||
| - Consider maintaining both structures | ||
| - Or require GitHub App as prerequisite | ||
|
|
||
| 2. **How should shared aliases be handled?** | ||
| - Duplicate in each file (independence) | ||
| - Or create a shared config via CircleCI orb | ||
|
|
||
| 3. **Should pipeline names be configurable?** | ||
| - Allow consumers to customize pipeline names | ||
| - Or enforce standard naming convention | ||
|
|
||
| 4. **How to handle Vortex version upgrades?** | ||
| - Update all config files in sync | ||
| - Or version each file independently | ||
|
|
||
| 5. **Should we extract orbs for common functionality?** | ||
| - Create Vortex CircleCI orb for shared commands | ||
| - Or keep everything in config files | ||
|
|
||
| ## Timeline Estimate | ||
|
|
||
| - **Phase 1 (Preparation):** 2-4 hours | ||
| - **Phase 2 (Extract Shared):** 2-3 hours | ||
| - **Phase 3 (Split Files):** 4-6 hours | ||
| - **Phase 4 (Configure Pipelines):** 2-3 hours | ||
| - **Phase 5 (Testing):** 4-6 hours | ||
| - **Phase 6 (Documentation):** 3-4 hours | ||
| - **Phase 7 (Installer):** 4-6 hours | ||
|
|
||
| **Total Estimated Time:** 21-32 hours | ||
|
|
||
| ## Next Steps | ||
|
|
||
| 1. Review and approve this plan | ||
| 2. Answer open questions | ||
| 3. Create subtasks in GitHub issue | ||
| 4. Begin Phase 1 implementation | ||
| 5. Regular checkpoints after each phase | ||
|
|
||
| --- | ||
|
|
||
| **Issue:** #1571 | ||
| **Branch:** `feature/1571-split-circleci-config` | ||
| **Milestone:** 25.11.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Fix Markdown formatting: add blank lines around headings and adjust list indentation.
Multiple formatting issues per Markdown best practices:
- MD022: Many headings lack surrounding blank lines (lines 48, 67, 84, 104, 121, 137, 153, 168, 179, 197, 245, 273, 289, 307, 312, 317, 322, 329, 336, 343, 350, 357)
- MD007: Lines 87-88 have incorrect list indentation (2 spaces instead of 0)
Example fix for line 87-88:
**Trigger:**
- - Scheduled cron (`5 11,23 * * *`) on `develop` branch
- - Manual trigger via pipeline parameter
+ - Scheduled cron (`5 11,23 * * *`) on `develop` branch
+ - Manual trigger via pipeline parameterApply consistent blank lines around all headings throughout the file.
Committable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~51-~51: The official name of this software platform is spelled with a capital “H”.
Context: ...creation GitHub Actions Equivalent: .github/workflows/build-test-deploy.yml **Work...
(GITHUB)
[uncategorized] ~89-~89: The official name of this software platform is spelled with a capital “H”.
Context: ...arameter GitHub Actions Equivalent: .github/workflows/update-dependencies.yml **Wo...
(GITHUB)
[uncategorized] ~117-~117: The official name of this software platform is spelled with a capital “H”.
Context: ...Note:* Follows same naming pattern as .github/workflows/vortex-test-*.yml files. --...
(GITHUB)
🪛 markdownlint-cli2 (0.18.1)
27-27: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
48-48: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
67-67: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
84-84: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
87-87: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
88-88: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
104-104: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
121-121: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
137-137: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
153-153: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
168-168: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
179-179: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
197-197: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
245-245: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
273-273: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
289-289: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
307-307: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
312-312: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
317-317: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
322-322: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
329-329: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
336-336: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
343-343: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
350-350: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
357-357: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🤖 Prompt for AI Agents
In plan.md around lines 25 to 440, many headings lack surrounding blank lines
(MD022) and the list at lines 87-88 has incorrect indentation (MD007); add a
blank line above and below each heading listed (lines 48, 67, 84, 104, 121, 137,
153, 168, 179, 197, 245, 273, 289, 307, 312, 317, 322, 329, 336, 343, 350, 357)
to ensure one blank line before and after each heading, and fix the list
indentation at lines 87-88 by removing the two-space indent so the list items
align with the top-level list format (or adjust nesting consistently), then run
your Markdown linter to confirm MD022 and MD007 are resolved.
|
|
||
| Split the configuration into logical, purpose-driven files using GitHub Actions-style naming conventions for consistency: | ||
|
|
||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Specify language for fenced code block.
Line 27 uses a fenced code block without a language identifier per MD040.
- ```
+ ```
.circleci/Or to highlight the file structure syntax:
- ```
+ ```text
.circleci/🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
27-27: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In plan.md around line 27 the fenced code block opening is missing a language
identifier (MD040); update the block to include an explicit language/tag (for
example `text` or `bash`) before the directory listing so it becomes a fenced
block with a language (e.g., replace the opening ``` with ```text), and scan
nearby fenced blocks to add appropriate language identifiers as needed.
| ### 1. **build-test-deploy.yml** - Main Build Pipeline | ||
| **Purpose:** Core build, test, and deployment workflow | ||
| **Trigger:** Push to any branch, tag creation | ||
| **GitHub Actions Equivalent:** `.github/workflows/build-test-deploy.yml` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Capitalize GitHub branding correctly.
Multiple references to "Github Actions" should use the official "GitHub" capitalization per style guidelines.
- **GitHub Actions Equivalent:** `.github/workflows/build-test-deploy.yml`
+ **GitHub Actions Equivalent:** `.github/workflows/build-test-deploy.yml`(Note: This appears correct in provided code; verify lines 51, 89, 117 in source if LanguageTool flagged them.)
Also applies to: 89-89, 117-117
🧰 Tools
🪛 LanguageTool
[uncategorized] ~51-~51: The official name of this software platform is spelled with a capital “H”.
Context: ...creation GitHub Actions Equivalent: .github/workflows/build-test-deploy.yml **Work...
(GITHUB)
🤖 Prompt for AI Agents
In plan.md around lines 51, 89 and 117, instances of "Github" (e.g., "Github
Actions") are not using the official branding; update those occurrences to the
correct capitalization "GitHub" (so "GitHub Actions" where applicable) and run a
quick search in the file to replace any other "Github" -> "GitHub" to ensure
consistent styling.
Closes #1571
Summary by CodeRabbit
Documentation
Chores