This presentation is a status update regarding LibreCores CI, which is a part of LibreCores - Community Hub for open-source hardware projects. The project is in the early prototyping stage now.
Vision •Future work Disclaimer: the project is in early prototyping stage 2 Agenda @oleg_nenashev oleg-nenashev Speaker LibreCores Free and Open Digital Hardware #automation, #jenkinsci, #hardware, #embedded, #cloudbees
ecosystem quality •Improve project contributor experience • Continuous integration of changes • Pull Request builders, build status reporting • Result reporting in UI (unit test, coverage, parsed logs) •Improve project maintainer experience • Easy CI management and configuration • No need to host internal Jenkins instance •Improve project user experience • Public and easily accessible project health status 3 LibreCores Project Automation
being hosted on LibreCores •Build and test automation •Integration testing of OSS hardware projects and toolchains •Powered by Jenkins (see FAQ) 4 LibreCores CI
a good place for hundreds of simulations… •We cannot scale much there •No SLAs for reasonably- expensive versions •Not enough integrations •Hard to connect external peripherals 5 FAQ. Why NOT Travis/Appveyor/etc.?
•It’s a framework •Self-hosted setup • We can do “whatever we want” • E.g. remote build agents •Features we may need • Configuration as Code (Jenkins Pipeline) • Multi-branch pipeline • Tool Management Plugins • Security and shared access engines • General-purpose plugins •Success stories in the Area 6 FAQ. Why Jenkins?
flows •Basic infrastructure: •Few nodes for light-weight tasks •Images of nodes with EDA tools •Automation bots •Integration with external infrastructure 7 LibreCores does provide….
•Computing grids for simulations •FPGA grids for hardware testing •Licenses for all EDA tools 8 LibreCores does NOT* provide… *According to the current plan/resources
works? LibreCores CI GitHub SSO User management LibreCores Web Top-level Web UI Project repositories GitHub BitBucket SVN GitHub is a main target system, others may have limited integrations
Docker (Swarm) Other Integrated Components Physical nodes FPGAs and other HW peripherals LibreCores CI Infrastructure Project-specific Infrastructure On-demand build agents (from predefined images) SSH, JNLP over VPN • Projects connect their infrastructure to LibreCores CI • Quick setup of nodes by project maintainers • Node access is restricted => dedicated hardware and licenses
Connection •SSH for Jenkins-driven connection •VPN for large clusters •5-minute setup of a node with preconfigured environment 1. Install Java 7 + 2. Download executable JAR file 3. Launch command line generated by Jenkins 11 Vision. Connecting nodes
statuses on LibreCores Web and project pages • E-mail notifications • Simple initial setup • All the code is in the project SCM (Jenkinsfile) • Jenkinsfile is trivial if you use a package manager • Pipeline libraries are provided by LibreCores CI 13 Vision. Integration with projects @Library(’org.librecores.ci.fusesoc') import org.librecores.ci.fusesoc.FuseSoCBuild FuseSoCBuild.run([ sim: ‘verilator’ corePath: ‘myprj.core’ ]);
the projects are publicly readable • Ownership-based security • Each project has owners coming from LibreCores Web or GitHub • Only owners can edit and launch Jenkins jobs • Owners can restrict access to their build agents 15 LibreCores Security
•Mostly empty •It’s too early to start deploying projects •Infra changes ahead (Pipeline libraries, etc.) •Usage policies still need to be defined •Many plans, not so much time 16 Current state
Web •Build definition libraries for FuseSoC •Setup sample flows for real-world demos •OpTiMSoC •openrisc/mor1kx •Start defining usage conditions for projects •Ensure the infrastructure can scale enough 17 Future work
Petersburg Polytechnic University •Contributor, LibreCores •Working on LibreCores CI •Jenkins project, Core Team •Jenkins core and community 20 > whoami -summary @oleg_nenashev oleg-nenashev