Skip to content
This repository was archived by the owner on Mar 17, 2021. It is now read-only.
This repository was archived by the owner on Mar 17, 2021. It is now read-only.

Proposal: Plugins should be side loaded without any dependency manager like maven #623

@neubs-bsi

Description

@neubs-bsi

Proposal copied from internal repo. Inital reporter: @bs-matil

Summary of the Feature

Today we package antenna with all plugins it needs and use this as "fat" dependency. Also we rely on the dependency management of the chosen frondend (e.g. maven). If we want to deliver a small and fast usable antanna cli in the future it might be better to think of the plugins as remote resources which can be side loaded at run time.

I would like to have terrform like plugin management
https://www.terraform.io/docs/plugins/index.html
https://www.terraform.io/docs/plugins/basics.html

  • Plugins MUST be downloaded while antanna run
  • Plugins MUST be qualified with a plugin name and a version (optional) in workflow.xml instead of class path
  • Plugins SHOULD register them self. The class path MUST not be exposed , or equally generic way like a manifest in each plugin which is read by antenna and contains the classpath.
  • Plugins SHOULD be cached in a .antenna-cache directory
  • Plugins SHOULD be configurable from local filesystem to provider custom plugins
  • Plugins SHOULD be fetchable from configured repositories in any frontend (e.g. private nexus)

Acceptance Criteria

  • antenna without any module/workflowstep preloaded can be used with any workflow.xml
  • antenna works within any corporate context by side loading private plugins from internal sources
  • workflowsteps MAY be released independent from antenna core

Definition of Done

  • Acceptance criteria fulfilled
  • A PR is created, the CI infrastructure reports green
  • The PR is reviewed and approved
  • No TODOs left in the code unless explained in the ticket, if something else is still open, this is summarized in a comment in the issue
  • Test cases are created to prove the functionality of the feature
  • Documentation is updated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions