POC-1 feat: cci plugin framework#19
Draft
dipakparmar wants to merge 23 commits into
Draft
Conversation
…e secrets and vars files
…n from pip to uv
…lariti CumulusCI
…Clariti CumulusCI
…lusCI maintainers
…s and improve documentation links
…instructions and key documentation references
…or of dependabot
…n tests and utils
…ng for releases
…l vars) - Fix typo "Offical" → "Official" in bug report template - Fix grammar "please visit on the" → "please visit the" - Improve release.yml to use shell variables instead of reading $GITHUB_OUTPUT Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a comprehensive plugin system that allows third-party packages to extend CumulusCI with custom tasks, flows, services, CLI commands, Robot Framework libraries, and event hooks. Key features: - Plugin discovery via Python entry_points mechanism - Trust levels (untrusted, standard, trusted) for security - Hook system using pluggy for event interception - CLI commands: cci plugin list/info/enable/disable/trust/tasks/flows - @plugin:task_name syntax for referencing plugin tasks/flows - PluginConfig schema for cumulusci.yml configuration - Plugin registry for discovering available plugins New modules: - cumulusci/core/plugins/ - Core plugin infrastructure - cumulusci/cli/plugin.py - Plugin CLI commands Documentation: - docs/plugins.md - Plugin development guide - Updated docs/config.md with plugin configuration and sources vs plugins comparison - Updated docs/cli.md with plugin commands - Updated docs/robot.md with plugin library support
The runtime creates its own PluginManager instance with plugins loaded, but project_config._get_plugin_task() was calling get_plugin_manager() which returned a different empty global singleton. This caused `cci task info @plugin:task` to fail with "Task not found". Changes: - Add set_plugin_manager() function to register the runtime's plugin manager as the global singleton - Add runtime.setter to CCIPlugin base class for plugin initialization - Call set_plugin_manager() in BaseCumulusCI.__init__ after creating the plugin manager Also adds example cci-slack-plugin demonstrating plugin development with tasks, flows, services, and hooks. The example includes: - SlackNotify task for sending simple messages - SlackNotifyFlowResult task for rich flow result notifications - notify_dev_org flow that combines dev_org setup with Slack notification - Slack service for storing webhook configuration - Hooks for automatic notifications on flow/task completion - Comprehensive test suite (28 tests)
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Note
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.