{"id":20261316,"url":"https://github.com/lightning-ai/ecosystem-ci","last_synced_at":"2025-04-11T01:45:01.183Z","repository":{"id":37019095,"uuid":"423009535","full_name":"Lightning-AI/ecosystem-ci","owner":"Lightning-AI","description":"Automate issue discovery for your projects against Lightning nightly and releases.","archived":false,"fork":false,"pushed_at":"2024-05-02T00:56:58.000Z","size":740,"stargazers_count":45,"open_issues_count":15,"forks_count":14,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-05-02T06:03:47.988Z","etag":null,"topics":["ci-cd","compatibility-testing","deep-learning","integration-testing","lightweight","python"],"latest_commit_sha":null,"homepage":"https://devblog.pytorchlightning.ai/stay-ahead-of-breaking-changes-with-the-new-lightning-ecosystem-ci-b7e1cf78a6c7","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lightning-AI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-30T23:12:41.000Z","updated_at":"2024-05-04T01:37:58.327Z","dependencies_parsed_at":"2023-10-15T01:42:08.114Z","dependency_job_id":"db00b786-104d-47b8-9c31-000432365766","html_url":"https://github.com/Lightning-AI/ecosystem-ci","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lightning-AI%2Fecosystem-ci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lightning-AI%2Fecosystem-ci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lightning-AI%2Fecosystem-ci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lightning-AI%2Fecosystem-ci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lightning-AI","download_url":"https://codeload.github.com/Lightning-AI/ecosystem-ci/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248327863,"owners_count":21085258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ci-cd","compatibility-testing","deep-learning","integration-testing","lightweight","python"],"created_at":"2024-11-14T11:25:14.615Z","updated_at":"2025-04-11T01:45:01.161Z","avatar_url":"https://github.com/Lightning-AI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Logo](_actions/logo.png)\n\n**Automated Testing for Lightning EcoSystem Projects**\n\n[![Lightning](https://img.shields.io/badge/-Lightning-792ee5?logo=pytorchlightning\u0026logoColor=white)](https://lightning.ai)\n[![CI internal](https://github.com/Lightning-AI/ecosystem-ci/actions/workflows/ci_test-acts.yml/badge.svg?branch=main\u0026event=push)](https://github.com/Lightning-AI/ecosystem-ci/actions/workflows/ci_test-acts.yml)\n[![codecov](https://codecov.io/gh/Lightning-AI/ecosystem-ci/branch/main/graph/badge.svg?token=binMTx5wr4)](https://codecov.io/gh/Lightning-AI/ecosystem-ci)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/Lightning-AI/ecosystem-ci/main.svg)](https://results.pre-commit.ci/latest/github/Lightning-AI/ecosystem-ci/main)\n\n______________________________________________________________________\n\n\u003cdiv align=\"center\"\u003e\nAutomate issue discovery for your projects against Lightning nightly and releases.\n\u003cbr / \u003e\nYou get CPUs, Multi-GPUs testing for free, and Slack notification alerts if issues arise!\n\u003c/div\u003e\n\n## How do I add my own Project?\n\n### Pre-requisites\n\nHere are pre-requisites for your project before adding to the Lightning EcoSystem CI:\n\n- Your project already includes some **Python tests with PyTorch Lightning** as a dependency\n- You'll be a **contact/responsible** person to resolve any issues that the CI finds in the future for your project\n\n### Adding your own project config\n\n1. First, fork this project (with [CLI](https://cli.github.com/) or in browser) to be able to create a new Pull Request, and work within a specific branch.\n   ```bash\n   gh repo fork Lightning-AI/ecosystem-ci\n   cd ecosystem-ci/\n   ```\n1. Copy the [template file](_actions/_config.yaml) in `configs` folder and call it `\u003cmy_project_name\u003e.yaml`.\n   ```\n   cp configs/template.yaml configs/\u003cmy_project_name\u003e.yaml\n   ```\n1. At the minimum, modify the `HTTPS` variable to point to your repository. See [Configuring my project](https://github.com/Lightning-AI/ecosystem-ci/tree/main#configuring-my-project) for more options.\n   ```yaml\n   source_repository:\n     HTTPS: https://github.com/MyUsername/MyProject.git\n   ...\n   ```\n   If your project tests multiple configurations or you'd like to test against multiple Lightning versions such as master and release branches, create a config file for each one of them.\n   As an example, have a look at [metrics master](configs/Lightning-AI/metrics_pl-develop.yaml) and [metrics release](configs/Lightning-AI/metrics_pl-release.yaml) CI files.\n1. Define your `runtimes` (OS and Python version) in your config file to be executed on CPU and/or add the config filename in the [Azure GPU CI file](.azure/ci-testig-parameterized.yml).\n   - For CPU integration, specify the OS and Python version combinations inside your config file:\n     ```yaml\n     runtimes:\n       - {os: \"ubuntu-20.04\", python: \"3.9\"}\n       - {os: \"macOS-12\", python: \"3.7\"}\n       - {os: \"windows-2019\", python: \"3.8\"}\n     ...\n     ```\n   - For GPU integration, add your config filename in the [Azure GPU CI file](.azure/ci-testig-parameterized.yml) file:\n     ```yaml\n     ...\n     jobs:\n     - template: testing-template.yml\n       parameters:\n         configs:\n         - \"Lightning-AI/metrics_pl-develop.yaml\"\n         - \"Lightning-AI/metrics_pl-release.yaml\"\n         - \"MyUsername/my_project-master.yaml\"\n     ```\n1. Add the responsible person(s) to [CODEOWNERS](.github/CODEOWNERS) for your organization folder or just the project.\n   ```\n   # MyProject\n   /configs/Myusername/MyProject*    @Myusername\n   ```\n1. Finally, create a draft PR to the repo!\n\n### Additional suggestions and engagement rules\n\n- To qualify for GPU machines we require your project to have 100+ GitHub stars (please note that this is for capacity reasons and may change in the future)\n- (**Optional**) Join our [Slack](https://www.lightning.ai/community) channel `#alerts-ecosystem-ci` to be notified if your project is breaking\n- (**Kind request**) include Lightning badge in your readme:\n  ```md\n  [![Lightning](https://img.shields.io/badge/-Lightning-792ee5?logo=pytorchlightning\u0026logoColor=white)](https://lightning.ai)\n  ```\n\n## Configuring my project\n\nThe config include a few different sections:\n\n- `source_repository` include your project\n- `env` (optional) define any environment variables required when running tests\n- `dependencies` listing all dependencies which are taken outside pip\n- `testing` defines specific pytest arguments and what folders shall be tested\n\nAll dependencies as well as the target repository is sharing the same template with the only required field `HTTPS` and all others are optional:\n\n```yaml\nsource_repository:\n  HTTPS: https://github.com/Lightning-AI/metrics.git\n  username: my-nick  # Optional, used when checking out private/protected repo\n  password: dont-tell-anyone # Optional, used when checking out private/protected repo\n  token: authentication-token # Optional, overrides the user/pass when checking out private/protected repo\n  checkout: master # Optional, checkout a particular branch or a tag\n  install_extras: all # Refers to standard pip option to install some additional dependencies defined with setuptools, typically used as `\u003cmy-package\u003e[\u003cinstall_extras\u003e]`.\n\n# Optional, if any installation/tests require some env variables\nenv:\n   MY_ENV_VARIABLE: \"VAR\"\n\ncopy_tests:\n    - integrations # copied folder from the original repo into the running test directory\n    # this is copied as we use the helpers inside integrations as regular python package\n    - tests/__init__.py\n    - tests/helpers\n\n# Optional, additional pytest arguments and control which directory to test on\ntesting:\n  dirs:\n    - integrations\n  pytest_args: --strict\n```\n\nNote: If you define some files as done above, and they are using internal-cross imports, you need to copy the `__init__.py` files from each particular package level.\n\nThe `testing` section provides access to the pytest run args and command.\n\n```yaml\ntesting:\n  # by default pytest is called on all copied items/tests\n  dirs:\n    - integrations\n  # OPTIONAL, additional pytest arguments\n  pytest_args: --strict\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flightning-ai%2Fecosystem-ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flightning-ai%2Fecosystem-ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flightning-ai%2Fecosystem-ci/lists"}