2024-12-26 19:47:06 +03:00
2024-12-25 12:48:46 +03:00
2024-12-26 19:47:06 +03:00

Helper class for Jenkins

This repo add functionality for automate building with platforms.json configuration.

Setup

You should register this library in Jenkins -> System settings -> Global Pipeline Libraries:

  • Library name: SHS.Platforms
  • Default version: master
  • Project Repository: https://git.shstk.ru/SHS/jenkins_lib.git

Then create pipeline job with fixed name shstk-platforms and set script to:

@Library('SHS.Platforms') _
node {
	properties([copyArtifactPermission('*')])
    def pl = new org.SHS.Platforms(this)
	
	
	// First download 'platforms.json' source file
	
	// Download from 'https://git.shstk.ru/SHS/platforms.git'
    pl.download()

	// OR
	
	// Download from your git
    pl.download('https://my.git.address/my/repo.git')
	
	
	// Optionally filter with your lists
    pl.filter(whiteList: ['filter1', 'filter2'], blackList: ['filter3'])
	
	
	// Optionally mark platforms as 'ondemand' with your lists
    pl.setOndemand(whiteList: ['filter4', 'filter5'], blackList: ['filter6'])
	
	
	// Compile JSON and save as artifact
    pl.create()
	
	
	// Optionally copy to your host location
    pl.copyToHost('/your/path/platforms.json')
}

API

org.SHS.Platforms Class:

  • download() - download platforms.json from 'https://git.shstk.ru/SHS/platforms.git' or custom git address
  • filter() - filter with white/black lists
  • setOndemand() - mark as 'ondemand' with white/black lists
  • create() - compile final JSON and save it to artifact
  • copyToHost(path) - copy final JSON to path on your host
  • get() - read and parse platforms_local.json file from "shstk-platforms" artifact
  • root() - returns 'platforms' object of current platforms
  • forEach(func, ...) - iterate over platforms, func is only mandatory parameter:
    • func - method to execute for each enabled platform, pass JSON element of current platform and optional CMake toolchain argument
    • stagePrefix - prefix string for stage
    • stageSuffix - suffix string for stage
    • whiteList - array of permitted names, ignored if empty
    • blackList - array of denied names, ignored if empty
    • ondemand - if true then process also ondemand platforms

whiteList and blackList are case-insensitive, and can be part of platform name

Usage

Simple:

@Library('SHS.Platforms') _
node {
    def pl = new org.SHS.Platforms(this)
    pl.get()
    pl.forEach ({ dist ->
        print("works in ${dist.docker.image_basename}")
    })
}

With toolchain:

@Library('SHS.Platforms') _
node {
    def pl = new org.SHS.Platforms(this)
    pl.get()
    pl.forEach ({ dist, cmake_toolchain ->
        print("compile in ${dist.docker.image_basename} with arg ${cmake_toolchain}")
    })
}

With white/black lists:

@Library('SHS.Platforms') _
node {
    def pl = new org.SHS.Platforms(this)
    pl.get()
    pl.forEach ({ dist ->
			print("works in ${dist.docker.image_basename}")
		},
		stagePrefix: "Build ",
		stageSuffix: " soft",
		whiteList: ["ubuntu", "debian", "osx"],
		blackList: ["20.04", "11"]
	)
}
Description
Shared library for our Jenkins
Readme 60 KiB
Languages
Groovy 100%