Slide 1

Slide 1 text

#librecores, #ORConf Oct 27, 2019 LibreCores Free and Open Digital Hardware What’s new in LibreCores CI? Oleg Nenashev, FOSSi and Jenkins project CloudBees, Inc. 2019

Slide 2

Slide 2 text

#librecores, #ORConf Oct 27, 2019 > whoami 2 @oleg_nenashev oleg-nenashev

Slide 3

Slide 3 text

#librecores, #ORConf Oct 27, 2019 What is LibreCores? 3

Slide 4

Slide 4 text

#librecores, #ORConf Oct 27, 2019 4

Slide 5

Slide 5 text

#librecores, #ORConf Oct 27, 2019 5 Web Planet CI https://www.librecores.org/

Slide 6

Slide 6 text

#librecores, #ORConf Oct 27, 2019 How it started… Continuous Integration service for open-source HW projects 6 LibreCores Web

Slide 7

Slide 7 text

#librecores, #ORConf Oct 27, 2019 LibreCores CI Vision, 2016 LibreCores CI GitHub SSO User management LibreCores Web Top-level Web UI Project repositories GitHub BitBucket SVN GitHub is a main target system 7 CI Status Gitlab

Slide 8

Slide 8 text

#librecores, #ORConf Oct 27, 2019 LibreCores CI in 2017 Jenkins Docker (Swarm) LibreCores Pipeline Library Physical nodes FPGAs and other HW peripherals LibreCores CI Infrastructure Project-specific Infrastructure On-demand build agents SSH, JNLP over VPN 8

Slide 9

Slide 9 text

#librecores, #ORConf Oct 27, 2019 LibreCores CI Vision, 2017 CI as SaaS Deploy on your own Developer tools • EDA tool Images • Shared Libraries for Jenkins Pipeline • Docker packages • Configuration scripts • ci.librecores.org • State: PoC It is not just a service! 9

Slide 10

Slide 10 text

#librecores, #ORConf Oct 27, 2019 LibreCores CI Vision, Now CI as SaaS Deploy on your own Developer tools • EDA tool Images • Shared Libraries for Jenkins Pipeline • Docker packages • Configuration scripts • ci.librecores.org • State: Alpha Developer tools is a new TOP priority! 10

Slide 11

Slide 11 text

#librecores, #ORConf Oct 27, 2019 Base Docker images 11 https://hub.docker.com/u/librecores

Slide 12

Slide 12 text

#librecores, #ORConf Oct 27, 2019 Module-based Environment • Problem: Diverse tool requirements • Many different tools are needed • Different versions might be needed • Configuration matrix explosion • Docker is not just enough! • Tool Modules • Configured by „modulefiles“ • http://modules.sourceforge.net/ $> module load verilator/3.902 PATH=/tools/verilator/3.902/bin/:… VERILATOR_ROOT=/tools/verilator/3.902 12 Contributions by Stefan Wallentowitz

Slide 13

Slide 13 text

#librecores, #ORConf Oct 27, 2019 13 2018… Maintenance and minor improvements

Slide 14

Slide 14 text

#librecores, #ORConf Oct 27, 2019 2019 Projects were reactivated LibreCores CI Jenkins Master updates • https://github.com/librecores/librecores-ci-jenkins-server • Images on DockerHub are aligned with SaaS • CI/CD for the images Google Summer of Code 2019 14

Slide 15

Slide 15 text

#librecores, #ORConf Oct 27, 2019 Google Summer of Code 2019 New CI Pipelines for OpenRISC • Stay tuned for the talk by Stafford! LibreCores CI updates • Base images • FuseSoC / Yosys integrations • OpenRISC flows 15 http://nancychauhan.in/ https://github.com/Nancy-Chauhan https://fossi-foundation.org/2019/08/23/gsoc_LibrecoresCI_Report

Slide 16

Slide 16 text

#librecores, #ORConf Oct 27, 2019 LibreCores CI Images. OpenRISC flavor • Built on the top of librecores/librecores-ci base image • Includes GCC build and OpenRISC standard testing scripts • Battle-tested in Travis and Jenkins 16 https://github.com/librecores/docker-images Contributions by Nancy Chauhan

Slide 17

Slide 17 text

#librecores, #ORConf Oct 27, 2019 LibreCores CI images in Travis language: c cache: ccache sudo: true dist: trusty services: - docker before_install: - docker pull librecores/librecores-ci-openrisc - docker images script: - docker run --rm -v $(pwd):/src -e "JOB=$JOB" -e "SIM=$SIM" -e "PIPELINE=$PIPELINE" -e "EXPECTED_FAILURES=$EXPECTED_FAILURES" -e "EXTRA_CORE_ARGS=$EXTRA_CORE_ARGS" librecores/librecores-ci-openrisc /src/.travis/test.sh matrix: …. 17 https://github.com/openrisc/mor1kx/blob/master/.travis.yml

Slide 18

Slide 18 text

#librecores, #ORConf Oct 27, 2019 Improved FuseSoC integration • New fusesoc() closure for FuseSoC Sim • Integrates with standard images and tools 18 https://github.com/librecores/librecores-pipeline-lib#fusesoc Contributions by Nancy Chauhan

Slide 19

Slide 19 text

#librecores, #ORConf Oct 27, 2019 Yosys Log Parsers • Python script for extracting Cell counts and resource usage • Part of LCCI base images • Pipeline library steps: trends for your projects 19 Contributions by Nancy Chauhan

Slide 20

Slide 20 text

#librecores, #ORConf Oct 27, 2019 What’s next? Reviving LibreCores Developer Huddle More EDA tool Images & documentation LCCI Docker containers as FuseSoC stages 20

Slide 21

Slide 21 text

#librecores, #ORConf Oct 27, 2019 What’s next? Reviving LibreCores Developer Huddle More EDA tool Images & documentation LCCI Docker containers as FuseSoC stages Using K8s to Manage the LibreCores CI Infrastructure • Reusable Helm charts Back to SaaS • Got some budget to expand the instance • Integrate with FPGAaaS? • Sponsorship for CI SaaS from Cloud vendors 21

Slide 22

Slide 22 text

#librecores, #ORConf Oct 27, 2019 Contributing Try it in your projects! • Base images • LCCI Jenkins Server GitHub: Code repository and issue tracker • https://github.com/librecores/docker-images • https://github.com/librecores/librecores-ci • https://github.com/librecores/librecores-pipeline-lib • Discussions: • Mailing list: [email protected] • Gitter: https://gitter.im/librecores/librecores-ci 22

Slide 23

Slide 23 text

#librecores, #ORConf Oct 27, 2019 23

Slide 24

Slide 24 text

#librecores, #ORConf Oct 27, 2019 LibreCores CI in Hacktoberfest Contributions welcome! https://hacktoberfest.digitalocean.com/ Suggested issues: https://github.com/search?q=org%3Alibrecores+label%3Ahacktoberfes t&unscoped_q=label%3Ahacktoberfest 24

Slide 25

Slide 25 text

#librecores, #ORConf Oct 27, 2019 Questions? Contacts: • Mailing list: [email protected] • Gitter: https://gitter.im/librecores/librecores-ci • Twitter: @oleg_nenashev 25