Skip to content

Conversation

@Neon-White
Copy link
Contributor

@Neon-White Neon-White commented Sep 30, 2025

Explain the Changes

This PR contains documentation for the code and flows added in #9229 and #9230

  • Doc added/updated

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive guide for Warp automation on IBM Cloud covering prerequisites and GitHub secrets, IBM COS credentials, VM configuration and dispatcher/workflow architecture, execution timeline (provisioning, cloud-init, testing, results upload, Slack notifications, cleanup), GitHub workflows, helper scripts, log locations, debugging methods (serial console, SSH), environment/secret handling, and security considerations.

@coderabbitai
Copy link

coderabbitai bot commented Sep 30, 2025

Walkthrough

Adds docs/CI & Tests/warp-on-ibm.md, a new document describing Warp IBM Cloud automation: prerequisites, architecture (dispatchers, provisioning, VM config, cleanup), execution timeline (midnight provisioning → cloud-init → tests → COS upload → Slack notifications → 4 AM cleanup), workflows, helpers, logs, debugging, secrets, and security.

Changes

Cohort / File(s) Summary
Documentation: Warp on IBM Cloud
docs/CI & Tests/warp-on-ibm.md
New document detailing prerequisites (GitHub secrets, IBM COS writer credentials), architecture (Provisioning Dispatcher & Workflow, VM Configuration, Cleanup Dispatcher & Workflow), execution flow (midnight provisioning → cloud-init → run tests → IBM COS upload → Slack notifications → 4 AM cleanup), GitHub workflows, cloud-init and helper scripts, log locations, debugging approaches (serial console, SSH), environment/secret handling, and security considerations.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Scheduler as Scheduler (CRON)
  participant GH as GitHub Dispatcher
  participant ProvWF as Provisioning Workflow
  participant IBM as IBM Cloud
  participant VM as Warp VM (cloud-init)
  participant Tests as Warp Tests
  participant COS as IBM COS
  participant Slack as Slack Notifier
  participant CleanDisp as Cleanup Dispatcher
  participant CleanWF as Cleanup Workflow

  Scheduler->>GH: Trigger provisioning dispatch (midnight)
  GH->>ProvWF: Invoke provisioning workflow
  ProvWF->>IBM: Provision VM & inject cloud-init
  IBM-->>ProvWF: VM provisioned

  ProvWF->>VM: cloud-init / run init scripts
  VM->>Tests: Execute run_containerized_warp_on_cloud_runner.sh
  Tests-->>COS: Upload logs/results
  Tests-->>Slack: Post status via slack_notifier.js

  Scheduler->>CleanDisp: Trigger cleanup dispatch (4 AM)
  CleanDisp->>CleanWF: Invoke cleanup workflow
  CleanWF->>IBM: Destroy VM/resources
  IBM-->>CleanWF: Cleanup complete
  CleanWF-->>Slack: Post cleanup status
Loading

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title “Add Warp on IBM Cloud docs” directly reflects the addition of the new documentation file for Warp on IBM Cloud and clearly conveys the primary change introduced by this pull request.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 27c9de4 and 0b03137.

📒 Files selected for processing (1)
  • docs/CI & Tests/warp-on-ibm.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/CI & Tests/warp-on-ibm.md
⏰ 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). (3)
  • GitHub Check: Build Noobaa Image
  • GitHub Check: run-package-lock-validation
  • GitHub Check: run-jest-unit-tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
docs/CI & Tests/warp-on-ibm.md (4)

45-45: Clarify JSON5 usage in code block.

The code block uses JSON5 syntax (with inline comments), but the secret must be stored as plain JSON. Consider adding a note above the code block stating "Example structure (shown with comments for clarity; store as plain JSON without comments):" to avoid confusion.


287-296: Fix list indentation (optional).

The unordered list items have inconsistent indentation. While readable, fixing this would align with markdown linting standards.

Apply this diff:

 This cloud-init configuration automatically sets up the VM environment for Warp testing.
 The config includes:
- - The required packages that'll be installed on the VM
- - Additional setup commands
- - An environment file (`warp.env`) that is used to pass env vars from GitHub to the runner (via `envsubst` variable templating)
- - The 'entrypoint' (that is the last command that is run by cloud-init; in our case, the Warp scripts)
+- The required packages that'll be installed on the VM
+- Additional setup commands
+- An environment file (`warp.env`) that is used to pass env vars from GitHub to the runner (via `envsubst` variable templating)
+- The 'entrypoint' (that is the last command that is run by cloud-init; in our case, the Warp scripts)

317-321: Consider adding IBM COS log access details.

The log locations are documented, but consider adding a brief note on how to access the IBM COS bucket logs (e.g., via IBM Cloud Console or AWS CLI with the configured endpoint).


337-368: Consider adding SSH connection example.

The debug VM setup is well-documented, but step 4 ("SSH into the debug VM") could benefit from an actual command example, such as:

ssh -i ~/.ssh/your-private-key ubuntu@<FLOATING_IP>

This would make the debugging process more actionable for someone following these steps.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f792c8c and 2ce6c10.

📒 Files selected for processing (1)
  • docs/CI & Tests/warp-on-ibm.md (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
docs/CI & Tests/warp-on-ibm.md

27-27: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


71-71: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


293-293: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


294-294: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


295-295: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


296-296: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)

⏰ 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). (3)
  • GitHub Check: Build Noobaa Image
  • GitHub Check: run-jest-unit-tests
  • GitHub Check: run-package-lock-validation
🔇 Additional comments (5)
docs/CI & Tests/warp-on-ibm.md (5)

62-82: Architecture overview looks good.

The dispatcher pattern and component breakdown are clearly explained. The ASCII diagram effectively visualizes the flow.


84-98: Excellent timeline overview.

The timeline breakdown provides clear expectations for each phase and helps understand the 4-hour window design.


99-218: Comprehensive execution flow documentation.

The detailed walkthrough effectively maps the entire automation lifecycle with clear file references and timing expectations. The safety measures (auto-shutdown, tag-based cleanup) are well-documented.


298-316: Helper scripts well documented.

Both scripts are clearly described with their purposes and key parameters. The file references make it easy to locate the actual implementations.


322-336: Excellent security-aware debugging documentation.

The serial console access instructions are clear and the security context (no SSH by default) demonstrates good security practices. This provides a secure debugging path without compromising the production setup.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
docs/CI & Tests/warp-on-ibm.md (1)

286-295: Consider standardizing list indentation (optional).

The cloud-init configuration description is clear. The list items at lines 292-295 have a single space after the dash. While this is valid markdown, markdownlint prefers no space for consistency.

Apply this diff if you want to align with markdownlint preferences:

 The config includes:
- - The required packages that'll be installed on the VM
- - Additional setup commands
- - An environment file (`warp.env`) that is used to pass env vars from GitHub to the runner (via `envsubst` variable templating)
- - The 'entrypoint' (that is the last command that is run by cloud-init; in our case, the Warp scripts)
+- The required packages that'll be installed on the VM
+- Additional setup commands
+- An environment file (`warp.env`) that is used to pass env vars from GitHub to the runner (via `envsubst` variable templating)
+- The 'entrypoint' (that is the last command that is run by cloud-init; in our case, the Warp scripts)
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2ce6c10 and a0d8c1a.

📒 Files selected for processing (1)
  • docs/CI & Tests/warp-on-ibm.md (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: Neon-White
PR: noobaa/noobaa-core#9229
File: .github/workflows/ibm-nightly-provision-dispatcher.yaml:13-13
Timestamp: 2025-09-30T08:56:55.452Z
Learning: In the noobaa-core repository, PR #9229 (nightly IBM VM provision dispatcher) has a dependency on `.github/ibm-warp-runner-config.yaml` which is provided in PR #9230, requiring PR #9230 to be merged first.
🪛 markdownlint-cli2 (0.18.1)
docs/CI & Tests/warp-on-ibm.md

71-71: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


292-292: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


293-293: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


294-294: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


295-295: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)

⏰ 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). (3)
  • GitHub Check: run-package-lock-validation
  • GitHub Check: run-jest-unit-tests
  • GitHub Check: Build Noobaa Image
🔇 Additional comments (8)
docs/CI & Tests/warp-on-ibm.md (8)

1-15: LGTM! Clear and well-structured introduction.

The table of contents and introduction provide a good overview of the automation infrastructure.


17-60: LGTM! Well-documented prerequisites and secret structures.

The required secrets are clearly documented with comprehensive JSON examples and inline comments explaining each field.


62-82: LGTM! Clear architecture visualization.

The component breakdown and ASCII diagram effectively communicate the dispatcher pattern and execution flow.


84-217: LGTM! Comprehensive execution flow documentation.

The timeline overview and detailed phase-by-phase breakdown provide excellent traceability through the entire automation lifecycle, with clear file references and timing information.


219-284: LGTM! Accurate workflow documentation.

The dispatcher pattern, cloud-init configuration, and secrets limitation are all correctly documented. The explanation of GitHub Actions' constraint on mixing secrets: inherit with individual secret passing is technically accurate.


297-314: LGTM! Helper scripts are well-documented.

Both scripts are clearly described with their responsibilities and file locations. The Warp test parameters are consistent with the Execution Flow section.


316-319: LGTM! Log locations are clearly documented.

All relevant log locations are listed, covering the GitHub Actions, VM, and cloud storage layers.


321-367: LGTM! Comprehensive debugging guidance with good security practices.

The serial console access section provides a secure debugging method without compromising the production VMs. The SSH debug VM instructions are detailed and include an important cleanup reminder.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a0d8c1a and 093a715.

📒 Files selected for processing (1)
  • docs/CI & Tests/warp-on-ibm.md (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: Neon-White
PR: noobaa/noobaa-core#9229
File: .github/workflows/ibm-nightly-provision-dispatcher.yaml:13-13
Timestamp: 2025-09-30T08:56:55.452Z
Learning: In the noobaa-core repository, PR #9229 (nightly IBM VM provision dispatcher) has a dependency on `.github/ibm-warp-runner-config.yaml` which is provided in PR #9230, requiring PR #9230 to be merged first.
🪛 markdownlint-cli2 (0.18.1)
docs/CI & Tests/warp-on-ibm.md

71-71: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


292-292: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


293-293: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


294-294: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


295-295: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)

⏰ 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). (3)
  • GitHub Check: Build Noobaa Image
  • GitHub Check: run-jest-unit-tests
  • GitHub Check: run-package-lock-validation

Comment on lines 292 to 295
- The required packages that'll be installed on the VM
- Additional setup commands
- An environment file (`warp.env`) that is used to pass env vars from GitHub to the runner (via `envsubst` variable templating)
- The 'entrypoint' (that is the last command that is run by cloud-init; in our case, the Warp scripts)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix bullet indentation.

The lines currently start with a leading space before the dash, tripping markdownlint (MD007). Remove the extra space so each bullet begins at column 0.

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

292-292: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


293-293: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


294-294: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


295-295: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)

🤖 Prompt for AI Agents
In docs/CI & Tests/warp-on-ibm.md around lines 292 to 295, the list items have a
leading space before the dash which violates MD007; remove the extra leading
space so each bullet starts at column 0 (i.e., change " - " to "- " for each
line), save the file, and run markdownlint or preview to ensure the bullets are
correctly aligned.

Copy link
Contributor

@alphaprinz alphaprinz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (could use some full stops at the end of sentences though).

@Neon-White Neon-White force-pushed the warp-docs branch 2 times, most recently from 33f7eb3 to 27c9de4 Compare October 4, 2025 07:58
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 33f7eb3 and 27c9de4.

📒 Files selected for processing (1)
  • docs/CI & Tests/warp-on-ibm.md (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: Neon-White
PR: noobaa/noobaa-core#9229
File: .github/workflows/ibm-nightly-provision-dispatcher.yaml:13-13
Timestamp: 2025-09-30T08:56:55.478Z
Learning: In the noobaa-core repository, PR #9229 (nightly IBM VM provision dispatcher) has a dependency on `.github/ibm-warp-runner-config.yaml` which is provided in PR #9230, requiring PR #9230 to be merged first.
⏰ 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). (3)
  • GitHub Check: Build Noobaa Image
  • GitHub Check: run-package-lock-validation
  • GitHub Check: run-jest-unit-tests

@Neon-White Neon-White merged commit bc4b42e into noobaa:master Oct 4, 2025
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants