# TeCI ## ![](https://gitlab.com/uploads/-/system/project/avatar/38887738/emoji_u1f3de.png?width=64) Tezos Ecosystem CI <!-- Put the link to this slide here so people can follow slide: https://hackmd.io/p/template-Talk-slide --> --- ## Problem - Every ~2.5 months, new protocol on mainnet. ![Tezos Amendment process](https://i.imgur.com/CBEXkSV.png) - Ecosystem software must adapt to breaking changes and new features. - Not always easy to find out about breaking changes and features. --- ## [Hyrum's law](https://www.hyrumslaw.com/) ```code With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody. ``` `CHANGES.md` is insufficient! --- ## Expensive - Finding incompatibilities after-the-fact is expensive. - Earlier detection reduces stress and enables planning. - How to detect incompatibilities earlier? --- ## Testing? - Testing with different protocols is cumbersome - Requires devops expertise to setup Tezos networks - Why have each project duplicate this effort? --- ## Public Testnets? - Public: interference may induce flakiness - Runs a fixed protocol, shells unknown. - Updates weekly (only) --- ## Solution: TeCI - Automatically tests ecosystem software against: - `latest` / `master` Octez shell - Activated / proposed / developed protocol - Optionally: generates test traffic - Synthesizes and reports failures --- ## Contents of a TeCI pipeline ```code for each shell in { latest, master }: for each protocol in { active, proposed, developed }: for each ecosystem test suite: Launch shell with protocol, expose RPC endpoint URL. (Generate traffic). Run ecosystem test suite against RPC endpoint URL. Gather results. ``` --- ## When? Currently, TeCI runs daily. Could be configured to run on demand or link with other CI systems. --- ## Simple Docker-based solution - An ecosystem test suite is a Docker image - On execution, runs in isolation against ephemeral test networks - Results through exit code (+ [JUnit XML](https://www.ibm.com/docs/en/developer-for-zos/14.1?topic=formats-junit-xml-format)) --- ## Conclusion - Ecosystem/Core developers can detect breaking changes earlier. - Reduce stress for everyone. - Smoother amendments for everyone. - To participate: write integration tests and package as Docker images. 🔗 [https://gitlab.com/tezos/teci/](https://gitlab.com/tezos/teci/)
{"metaMigratedAt":"2023-06-17T21:25:31.302Z","metaMigratedFrom":"YAML","title":"TeCI: Tezos Ecosystem CI","breaks":true,"description":"Presentation of TeCI","contributors":"[{\"id\":\"9921985b-ef8c-4d3a-bdb4-5fda7d357001\",\"add\":5777,\"del\":3172}]"}
    176 views