All Projects → PyTorchLightning → ecosystem-ci

PyTorchLightning / ecosystem-ci

Licence: Apache-2.0 license
Automate issue discovery for your projects against Lightning nightly and releases.

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects
Makefile
30231 projects

Projects that are alternatives of or similar to ecosystem-ci

Sylph
Runs Flutter integration tests on real devices in cloud.
Stars: ✭ 128 (+212.2%)
Mutual labels:  integration-testing, ci-cd
Movieapp
🎬 MovieApp is a Flutter application built to demonstrate the use of modern development tools with best practices implementation like Modularization, BLoC, Dependency Injection, Dynamic Theme, Cache, Shimmer, Testing, Flavor, CI/CD, etc.
Stars: ✭ 117 (+185.37%)
Mutual labels:  integration-testing, ci-cd
actions
Set of actions for implementing CI/CD with werf and GitHub Actions
Stars: ✭ 67 (+63.41%)
Mutual labels:  ci-cd
flagpack
A lightweight flag icon toolkit for the web.
Stars: ✭ 51 (+24.39%)
Mutual labels:  lightweight
changed-files
Github action to retrieve all (added, copied, modified, deleted, renamed, type changed, unmerged, unknown) files and directories.
Stars: ✭ 733 (+1687.8%)
Mutual labels:  ci-cd
actix sqlx mysql user crud
A user crud written in Rust, designed to connect to a MySQL database with full integration test coverage.
Stars: ✭ 78 (+90.24%)
Mutual labels:  integration-testing
local-paste
Lightweight pastebin for home network which may or may not be connected to the internet.
Stars: ✭ 24 (-41.46%)
Mutual labels:  lightweight
ConfigAssets
Simple & Lightweight solution for managing configuration assets in Unity projects
Stars: ✭ 26 (-36.59%)
Mutual labels:  lightweight
lwlog
A lightweight header only logging library for C
Stars: ✭ 46 (+12.2%)
Mutual labels:  lightweight
Hexo-Theme-MengD
A simple, lightweight Hexo theme(支持:pjax、discuss、twikoo、waline、valine评论)
Stars: ✭ 69 (+68.29%)
Mutual labels:  lightweight
lightings
A lightweight Ajax Library
Stars: ✭ 20 (-51.22%)
Mutual labels:  lightweight
DovakinMQ
MQTT broker for java based on Netty
Stars: ✭ 14 (-65.85%)
Mutual labels:  lightweight
typesafe-i18n
A fully type-safe and lightweight internationalization library for all your TypeScript and JavaScript projects.
Stars: ✭ 1,227 (+2892.68%)
Mutual labels:  lightweight
MobilePose
Light-weight Single Person Pose Estimator
Stars: ✭ 588 (+1334.15%)
Mutual labels:  lightweight
koochak
A minimal & lightweight CSS framework
Stars: ✭ 15 (-63.41%)
Mutual labels:  lightweight
craftcms
Craft CMS Docker Image
Stars: ✭ 73 (+78.05%)
Mutual labels:  lightweight
dockershelf
A repository containing useful, lightweight and reliable dockerfiles.
Stars: ✭ 59 (+43.9%)
Mutual labels:  ci-cd
zEditor
a lightweight rich text editor | 一款超轻量级富文本编辑器 | 1行核心JS代码实现功能
Stars: ✭ 76 (+85.37%)
Mutual labels:  lightweight
ngx-testbedder
CLI tool for writing the test bed for Angular integration test
Stars: ✭ 13 (-68.29%)
Mutual labels:  integration-testing
chuck
Lightweight proxy for REST API mocking and run integration test on mobile devices
Stars: ✭ 17 (-58.54%)
Mutual labels:  integration-testing

Logo

Automated Testing for Lightning EcoSystem Projects

Lightning CI internal codecov pre-commit.ci status


Automate issue discovery for your projects against Lightning nightly and releases.
You get CPUs, Multi-GPUs testing for free, and Slack notification alerts if issues arise!

How do I add my own Project?

Pre-requisites

Here are pre-requisites for your project before adding to the Lightning EcoSystem CI:

  • Your project already includes some Python tests with PyTorch Lightning as a dependency
  • You'll be a contact/responsible person to resolve any issues that the CI finds in the future for your project

Adding your own project config

  1. First, fork this project (with CLI or in browser) to be able to create a new Pull Request, and work within a specific branch.
    gh repo fork Lightning-AI/ecosystem-ci
    cd ecosystem-ci/
  2. Copy the template file in configs folder and call it <my_project_name>.yaml.
    cp configs/template.yaml configs/<my_project_name>.yaml
    
  3. At the minimum, modify the HTTPS variable to point to your repository. See Configuring my project for more options.
    target_repository:
      HTTPS: https://github.com/MyUsername/MyProject.git
    ...
    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. As an example, have a look at metrics master and metrics release CI files.
  4. 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.
    • For CPU integration, specify the OS and Python version combinations inside your config file:
      runtimes:
        - {os: "ubuntu-20.04", python: "3.9"}
        - {os: "macOS-10.15", python: "3.7"}
        - {os: "windows-2019", python: "3.8"}
      ...
    • For GPU integration, add your config filename in the Azure GPU CI file file:
      ...
      jobs:
      - template: testing-template.yml
        parameters:
          configs:
          - "Lightning-AI/metrics_pl-develop.yaml"
          - "Lightning-AI/metrics_pl-release.yaml"
          - "MyUsername/my_project-master.yaml"
  5. Add the responsible person(s) to CODEOWNERS for your organization folder or just the project.
    # MyProject
    /configs/Myusername/MyProject*    @Myusername
    
  6. Finally, create a draft PR to the repo!

Additional suggestions and engagement rules

  • 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)
  • (Optional) Join our Slack channel #alerts-ecosystem-ci to be notified if your project is breaking
  • (Kind request) include Lightning badge in your readme:
    [![Lightning](https://img.shields.io/badge/-Lightning-792ee5?logo=pytorchlightning&logoColor=white)](https://pytorchlightning.ai)

Configuring my project

The config include a few different sections:

  • target_repository include your project
  • env (optional) define any environment variables required when running tests
  • dependencies listing all dependencies which are taken outside pip
  • testing defines specific pytest arguments and what folders shall be tested

All dependencies as well as the target repository is sharing the same template with the only required field HTTPS and all others are optional:

target_repository:
  HTTPS: https://github.com/Lightning-AI/metrics.git
  username: my-nick  # Optional, used when checking out private/protected repo
  password: dont-tell-anyone # Optional, used when checking out private/protected repo
  token: authentication-token # Optional, overrides the user/pass when checking out private/protected repo
  checkout: master # Optional, checkout a particular branch or a tag
  install_extras: all # Refers to standard pip option to install some additional dependencies defined with setuptools, typically used as `<my-package>[<install_extras>]`.

# Optional, if any installation/tests require some env variables
env:
   MY_ENV_VARIABLE: "VAR"

copy_tests:
    - integrations # copied folder from the original repo into the running test directory
    # this is copied as we use the helpers inside integrations as regular python package
    - tests/__init__.py
    - tests/helpers

# Optional, additional pytest arguments and control which directory to test on
testing:
  dirs:
    - integrations
  pytest_args: --strict

Note: 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.

The testing section provides access to the pytest run args and command.

testing:
  # by default pytest is called on all copied items/tests
  dirs:
    - integrations
  # OPTIONAL, additional pytest arguments
  pytest_args: --strict
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].