LibreCores CI is a service, which hosts automation flows for the following purposes:
- Continuous Integration of projects being hosted on LibreCores
- Continuous Integration and packaging of EDA tools we use in the project (FuseSoC, etc.)
- Automation of the project infrastructure
This repository contains backend code and documentation for the LibreCores CI instance.
The instance is under construction now. In the case of any questions, please use bugtracker in this GitHub project.
Status overview from ORCONF2016:
More recent overview from ORCONF2017:
We have a librecores-ci-bot, which allows integrating with GitHub projects.
Commonly it requires the following permissions:
- Read-only - for accessing repos
- Write permission - for commenting and approving pull requests/commits
- Webhook - for automated hook management within repo/organization (not really required since project admins can setup hooks on their own)
Run image:
docker run --rm --name ci-jenkins-io-dev -v maven-repo:/root/.m2 -e DEV_HOST=${CURRENT_HOST} -p 8080:8080 -p 50000:50000 -v ${MY_SECRETS_DIR}:/var/jenkins_home/imported_secrets:ro librecores/librecores-ci-dev
Jenkins will need to connect to the Docker host to run agents.
If you use Docker for Mac, use -Dio.jenkins.dev.host
and additional socat
image for forwarding.
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2376:2375 bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
Connect to Jenkins and login:
Read "YOUR SERVER ADDRESS WILL BE AS FOLLOWS" section in server startup logs (very beginning). Try opening these destinations in your browser while the server is running to see what works for your setup.
When successfull log into Jenkins web GUI with
Login: admin
Password: admin
In the Development folder there is a PipelineLib folder, which allows local building and testing of the library. This folder can be mapped to a local repository in order to develop the library without committing changes:
docker run --rm --name librecores-ci-dev -v maven-repo:/root/.m2 -v ${MY_PIPELINE_DEV_DIR}:/var/jenkins_home/pipeline-dev:ro -v ${MY_SECRETS_DIR}:/var/jenkins_home/imported_secrets:ro -e DEV_HOST=${CURRENT_HOST} -p 8080:8080 -p 50000:50000 librecores/librecores-ci-dev
Once started, you can just start editing the Pipeline library locally. On every job start the changes will be reflected in the directory without committing anything.
In order to debug the master, use the -e DEBUG=true -p 5005:5005
when starting the container.
Jenkins will be suspended on the startup in such case.
In the debug mode it is possible to debug Jenkins core master, including Jenkins core, plugins, and Groovy Init Scripts in this repository. Just open IDE with the required projects and attach debugger to the instance.
Build image:
docker build -t librecores/librecores-ci-dev .
See other Docker repositories in the LibreCores organization.
Note that librecores/ci-modules (Jenkins label: librecores-ci-modules
) on the instance
requires a pre-deployed lcci-tools
volume with tools.
See LCCI Python Docker image documentation for more info about deploying tools on this volume.
- Oleg Nenashev - Instance maintainer: CI instance itself
- Stefan Wallentowitz - Instance maintainer: AWS, Certificates, etc.
- Olof Kindgren - Backup contact