Package: port-ocean
OceanOcean is an innovative solution developed by Port to seamlessly integrate various third-party systems with our developer portal product,
empowering engineers to effortlessly prioritize key features and streamline the integration process.PrerequisitesPython 3.11InstallationIn order to install the Ocean Framework, run the following command:pipinstallport-ocean[cli]Orpoetryaddport-ocean[cli]Run Integrationsource the integration venv..venv/bin/activateRunoceansail./path/to/
integrationExport ArchitectureReal-Time updates ArchitectureIntegration LifecycleFolder StructureThe Ocean Integration Framework follows a specific folder structure within this mono repository. This structure ensures proper organization and easy identification of integration modules. The suggested folder structure is as follows:port-ocean/
├── port_ocean (framework)/
│ ├── ocean.py
│ ├── core/
| └── ...
└── integrations/
│  └─── integration_name/
│     ├──── main.py
│     ├──── pyproject.toml
│     └──── Dockerfile
├── ...
└── ...Theframeworkfolder contains the core logic for managing the integration lifecycle.Each integration is represented by a separate folder inside theintegrationsdirectory.Inside each integration folder, you'll find amain.pyfile that implements the core functionality of the integration for the specific third-party system.Thepyproject.tomlfile inside each integration folder lists the required dependencies for that integration.ConfigurationThe Integration Framework utilizes aconfig.yamlfile for its configuration. This file defines both the framework configuration and the integration configuration within it. Each integration is identified by its type and unique identifier, which are utilized during initialization to appropriately update Port.Exampleconfig.yaml:# This is an example configuration file for the integration service.# Please copy this file to config.yaml file in the integration folder and edit it to your needs.port:clientId:PORT_CLIENT_ID# Can be loaded via environment variable: PORT_CLIENT_IDclientSecret:PORT_CLIENT_SECRET# Can be loaded via environment variable: PORT_CLIENT_SECRETbaseUrl:https://api.getport.io/v1# The event listener to use for the integration service.eventListener:type:KAFKA / WEBHOOKintegration:# The name of the integration.identifier:"my_integration"# The type of the integration.type:"PagerDuty"config:my_git_token:"random"some_other_integration_config:"Veryimportantinformation"ContributingThe reason Ocean is open source is that we aim for the Port integration library to offer numerous useful out-of-the-box integrations. We have confidence that developers and DevOps professionals who rely on Port in their everyday work will be inclined to contribute and assist in making it a comprehensive tool.In order to learn how you can contribute to Ocean, read ourcontributing guideLocal Development (Framework)Clone the repositoryInstall dependencies:makeinstallOr (For installing integrations dependencies as well)makeinstall/allsource the integration venv..venv/bin/activateLocal Development (Integration)Clone the repositoryFor new integration runmakenewand follow the instructionsInstall dependenciescdDESIRED_INTEGRATION_FOLDER&&makeinstallsource the integration venv..venv/bin/activateRun the integrationmakerunOroceansailLicenseThe Ocean Framework is open-source software licensed under theApache 2.0 License. See theLICENSEfile for more information.ContactFor any questions or inquiries, please reach out to our team atsupport@getport.io