port-ocean


Nameport-ocean JSON
Version 0.5.16 PyPI version JSON
download
home_pagehttps://app.getport.io
SummaryPort Ocean is a CLI tool for managing your Port projects.
upload_time2024-05-01 08:30:28
maintainerNone
docs_urlNone
authorDaniel Sinai
requires_python<4.0,>=3.11
licenseNone
keywords ocean port-ocean port
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <img src="./assets/Thumbnail.png" alt="Ocean">

# Ocean <img src="./assets/OceanSymbol.svg" alt="Ocean" width="100" height="100" align="right">

[![Lint](https://github.com/port-labs/Port-Ocean/actions/workflows/lint.yml/badge.svg)](https://github.com/port-labs/port-ocean/actions/workflows/lint.yml)

Ocean 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.

## Prerequisites

- Python 3.11

## Installation

In order to install the Ocean Framework, run the following command:

```bash
pip install port-ocean[cli]
```

Or

```bash
poetry add port-ocean[cli]
```

## Run Integration

1. source the integration venv

   ```bash
   . .venv/bin/activate
   ```

2. Run

   ```bash
   ocean sail ./path/to/
   integration
   ```

# Export Architecture

![image](./assets/ExportArchitecture.svg)

## Real-Time updates Architecture

![image](./assets/RealTimeUpdatesArchitecture.svg)

## Integration Lifecycle

![image](./assets/LifecycleOfIntegration.svg)

## Folder Structure

The 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
├── ...
└── ...
```

- The `framework` folder contains the core logic for managing the integration lifecycle.
- Each integration is represented by a separate folder inside the `integrations` directory.
- Inside each integration folder, you'll find a `main.py` file that implements the core functionality of the integration for the specific third-party system.
- The `pyproject.toml` file inside each integration folder lists the required dependencies for that integration.

## Configuration

The Integration Framework utilizes a `config.yaml` file 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.

Example `config.yaml`:

```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_ID
  clientSecret: PORT_CLIENT_SECRET # Can be loaded via environment variable: PORT_CLIENT_SECRET
  baseUrl: https://api.getport.io/v1
# The event listener to use for the integration service.
eventListener:
  type: KAFKA / WEBHOOK
integration:
  # The name of the integration.
  identifier: "my_integration"
  # The type of the integration.
  type: "PagerDuty"
  config:
    my_git_token: "random"
    some_other_integration_config: "Very important information"
```

## Contributing

The 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 our [contributing guide](./CONTRIBUTING.md)

### Local Development (Framework)

1. Clone the repository

2. Install dependencies:

   ```bash
   make install
   ```

   Or (For installing integrations dependencies as well)

   ```bash
   make install/all
   ```

3. source the integration venv

   ```bash
   . .venv/bin/activate
   ```

### Local Development (Integration)

1. Clone the repository

2. For new integration run

   ```bash
   make new
   ```

   and follow the instructions

3. Install dependencies

4. ```bash
   cd DESIRED_INTEGRATION_FOLDER && make install
   ```

5. source the integration venv

   ```bash
   . .venv/bin/activate
   ```

6. Run the integration

   ```bash
   make run
   ```

   Or

   ```bash
   ocean sail
   ```

## License

The Ocean Framework is open-source software licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). See the [LICENSE](./LICENSE) file for more information.

## Contact

For any questions or inquiries, please reach out to our team at support@getport.io


            

Raw data

            {
    "_id": null,
    "home_page": "https://app.getport.io",
    "name": "port-ocean",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": "ocean, port-ocean, port",
    "author": "Daniel Sinai",
    "author_email": "daniel@getport.io",
    "download_url": "https://files.pythonhosted.org/packages/30/bf/9a37c054837ffb11d5b296224b02a27ba0c9cee0d416767002edfc758b5b/port_ocean-0.5.16.tar.gz",
    "platform": null,
    "description": "<img src=\"./assets/Thumbnail.png\" alt=\"Ocean\">\n\n# Ocean <img src=\"./assets/OceanSymbol.svg\" alt=\"Ocean\" width=\"100\" height=\"100\" align=\"right\">\n\n[![Lint](https://github.com/port-labs/Port-Ocean/actions/workflows/lint.yml/badge.svg)](https://github.com/port-labs/port-ocean/actions/workflows/lint.yml)\n\nOcean is an innovative solution developed by Port to seamlessly integrate various third-party systems with our developer portal product,\nempowering engineers to effortlessly prioritize key features and streamline the integration process.\n\n## Prerequisites\n\n- Python 3.11\n\n## Installation\n\nIn order to install the Ocean Framework, run the following command:\n\n```bash\npip install port-ocean[cli]\n```\n\nOr\n\n```bash\npoetry add port-ocean[cli]\n```\n\n## Run Integration\n\n1. source the integration venv\n\n   ```bash\n   . .venv/bin/activate\n   ```\n\n2. Run\n\n   ```bash\n   ocean sail ./path/to/\n   integration\n   ```\n\n# Export Architecture\n\n![image](./assets/ExportArchitecture.svg)\n\n## Real-Time updates Architecture\n\n![image](./assets/RealTimeUpdatesArchitecture.svg)\n\n## Integration Lifecycle\n\n![image](./assets/LifecycleOfIntegration.svg)\n\n## Folder Structure\n\nThe 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:\n\n```\nport-ocean/\n\u251c\u2500\u2500 port_ocean (framework)/\n\u2502 \u251c\u2500\u2500 ocean.py\n\u2502 \u251c\u2500\u2500 core/\n| \u2514\u2500\u2500 ...\n\u2514\u2500\u2500 integrations/\n\u2502  \u2514\u2500\u2500\u2500 integration_name/\n\u2502     \u251c\u2500\u2500\u2500\u2500 main.py\n\u2502     \u251c\u2500\u2500\u2500\u2500 pyproject.toml\n\u2502     \u2514\u2500\u2500\u2500\u2500 Dockerfile\n\u251c\u2500\u2500 ...\n\u2514\u2500\u2500 ...\n```\n\n- The `framework` folder contains the core logic for managing the integration lifecycle.\n- Each integration is represented by a separate folder inside the `integrations` directory.\n- Inside each integration folder, you'll find a `main.py` file that implements the core functionality of the integration for the specific third-party system.\n- The `pyproject.toml` file inside each integration folder lists the required dependencies for that integration.\n\n## Configuration\n\nThe Integration Framework utilizes a `config.yaml` file 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.\n\nExample `config.yaml`:\n\n```yaml\n# This is an example configuration file for the integration service.\n# Please copy this file to config.yaml file in the integration folder and edit it to your needs.\n\nport:\n  clientId: PORT_CLIENT_ID # Can be loaded via environment variable: PORT_CLIENT_ID\n  clientSecret: PORT_CLIENT_SECRET # Can be loaded via environment variable: PORT_CLIENT_SECRET\n  baseUrl: https://api.getport.io/v1\n# The event listener to use for the integration service.\neventListener:\n  type: KAFKA / WEBHOOK\nintegration:\n  # The name of the integration.\n  identifier: \"my_integration\"\n  # The type of the integration.\n  type: \"PagerDuty\"\n  config:\n    my_git_token: \"random\"\n    some_other_integration_config: \"Very important information\"\n```\n\n## Contributing\n\nThe 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.\n\nIn order to learn how you can contribute to Ocean, read our [contributing guide](./CONTRIBUTING.md)\n\n### Local Development (Framework)\n\n1. Clone the repository\n\n2. Install dependencies:\n\n   ```bash\n   make install\n   ```\n\n   Or (For installing integrations dependencies as well)\n\n   ```bash\n   make install/all\n   ```\n\n3. source the integration venv\n\n   ```bash\n   . .venv/bin/activate\n   ```\n\n### Local Development (Integration)\n\n1. Clone the repository\n\n2. For new integration run\n\n   ```bash\n   make new\n   ```\n\n   and follow the instructions\n\n3. Install dependencies\n\n4. ```bash\n   cd DESIRED_INTEGRATION_FOLDER && make install\n   ```\n\n5. source the integration venv\n\n   ```bash\n   . .venv/bin/activate\n   ```\n\n6. Run the integration\n\n   ```bash\n   make run\n   ```\n\n   Or\n\n   ```bash\n   ocean sail\n   ```\n\n## License\n\nThe Ocean Framework is open-source software licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). See the [LICENSE](./LICENSE) file for more information.\n\n## Contact\n\nFor any questions or inquiries, please reach out to our team at support@getport.io\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Port Ocean is a CLI tool for managing your Port projects.",
    "version": "0.5.16",
    "project_urls": {
        "Homepage": "https://app.getport.io",
        "Repository": "https://github.com/port-labs/Port-Ocean"
    },
    "split_keywords": [
        "ocean",
        " port-ocean",
        " port"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ab0818c9243767f116e988e82d6988f6f7492cb0d00fe20c27a6c2d26f6cd1c2",
                "md5": "117238d1571af7a90085fe8159bd996c",
                "sha256": "87772b05eded5e88e4aea6348919f4ab6ae02f1ceb4d50e99b9eda4323ef38de"
            },
            "downloads": -1,
            "filename": "port_ocean-0.5.16-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "117238d1571af7a90085fe8159bd996c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 103123,
            "upload_time": "2024-05-01T08:30:25",
            "upload_time_iso_8601": "2024-05-01T08:30:25.955238Z",
            "url": "https://files.pythonhosted.org/packages/ab/08/18c9243767f116e988e82d6988f6f7492cb0d00fe20c27a6c2d26f6cd1c2/port_ocean-0.5.16-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "30bf9a37c054837ffb11d5b296224b02a27ba0c9cee0d416767002edfc758b5b",
                "md5": "aa679390865bbac08be30035724c458a",
                "sha256": "97b2e97d5c8bbce0ff1b00d8e22fd41cbd1a8a9ac274a7983f368b6484e3de58"
            },
            "downloads": -1,
            "filename": "port_ocean-0.5.16.tar.gz",
            "has_sig": false,
            "md5_digest": "aa679390865bbac08be30035724c458a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 65722,
            "upload_time": "2024-05-01T08:30:28",
            "upload_time_iso_8601": "2024-05-01T08:30:28.506551Z",
            "url": "https://files.pythonhosted.org/packages/30/bf/9a37c054837ffb11d5b296224b02a27ba0c9cee0d416767002edfc758b5b/port_ocean-0.5.16.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-01 08:30:28",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "port-labs",
    "github_project": "Port-Ocean",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "port-ocean"
}
        
Elapsed time: 0.31197s