This library contains common operations and logic for LibreCores CI.
The library is under development. All commands may change, the compatibility is not guaranteed.
This is the class to more conveniently build CI based on Environment Modules (http://modules.sourceforge.net/). First modules are loaded to the environment and calling sh() then executes the command(s) in that environment.
Usage:
@Library('librecoresci') import org.librecores.ci.Modules
def lcci = new Modules(steps)
node('librecores-ci-modules') {
lcci.load(["eda/verilator/3.902"])
stage('Simulation Build') {
lcci.sh 'verilator -f verilate.vc'
}
}
Executes the sh()
command with initializing the specified modules before executing.
Example:
node('librecores-ci-modules') {
sh_with_modules(modules: ["gcc", "fusesoc/1.6"], command: "make all")
}
Effectively the example above creates commands like source ${modulesPath}/init/bash && sh "module load gcc && module load fusesoc/1.6 && make all"
.
Builds a pipeline for OpenRISC projects.
Out of the box it configures:
librecores-ci-openrisc
job
invocation will run the .travis/test.sh
script in the module directoryJOB
env var that will be exported to .travis/test.sh
SIM
env var that will be exported to .travis/test.sh
PIPELINE
env var that will be exported to .travis/test.sh
EXPECTED_FAILURES
env var that will be exported to .travis/test.sh
EXTRA_CORE_ARGS
env var that will be exported to .travis/test.sh
This snippet is from the Jenkins pipeline for mor1kx
@Library('librecoresci') _
openriscPipeline {
job('verilator') {
job 'verilator'
}
job('testing-1') {
job 'or1k-tests'
sim 'icarus'
pipeline 'CAPPUCCINO'
expectedFailures 'or1k-cy'
}
}
Builds a step for generic FuseSoC invocation.
some_core
below, is the core to
run. run()
can be specified multiple times to execute multiple fusesoc
builds. The available parameters are:
--target
argument to fusesoc--tool
argument to fusesoc@Library('librecoresci') _
pipeline {
stages {
stage('example-fusesoc-step') {
fusesoc {
image 'librecores/librecores-ci:0.5.0'
library 'some_core', '/src'
run('some_core') {
target 'fusesoc_target'
}
shell "echo 'Additional steps on shell'"
}
}
}
}
Build a step for Yosys Synthesis for monitoring resource usage statistics and publish on Jenkins.
core
, target
, logpath
yosys.log
file, the default is "build/${core}_/${target}-/yosys.log"@Library('librecoresci') _
pipeline {
agent any
stages{
stage('yosys') {
steps {
yosysSynthesisReport {
core 'mor1kx'
target 'synth'
logPath 'build/mor1kx_5.0-r3/synth-icestorm/yosys.log'
}
}
}
}
}