initial commit
This commit is contained in:
70
README.md
Normal file
70
README.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# Helper class for Jenkins
|
||||||
|
|
||||||
|
This repo add functionality for automate building with `platforms.json` configuration.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
You should add `PLATFORMS_GIT` environment to your Jenkins with url to git repo, which
|
||||||
|
contains single `platforms.json` file.
|
||||||
|
|
||||||
|
Next you should register this library in Jenkins -> System settings -> Global Pipeline Libraries:
|
||||||
|
* Library name: `SHS.Platforms`
|
||||||
|
* Default version: `master`
|
||||||
|
* Project Repository: `https://git.shs.tools/SHS/jenkins_lib.git`
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
`org.SHS.Platforms` Class:
|
||||||
|
* `get()` - download and parse `platforms.json` file from `PLATFORMS_GIT`
|
||||||
|
* `root()` - returns root JSON object of `platforms.json`
|
||||||
|
* `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
|
||||||
|
|
||||||
|
`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}")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
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} with arg ${cmake_toolchain}")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
With filter:
|
||||||
|
```
|
||||||
|
@Library('SHS.Platforms') _
|
||||||
|
node {
|
||||||
|
def pl = new org.SHS.Platforms(this)
|
||||||
|
pl.get()
|
||||||
|
pl.forEach ({ dist ->
|
||||||
|
print("works in ${dist.docker_image}")
|
||||||
|
},
|
||||||
|
stagePrefix: "Build ",
|
||||||
|
stageSuffix: " soft",
|
||||||
|
whiteList: ["ubuntu", "debian", "osx"],
|
||||||
|
blackList: ["20.04", "11"]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
```
|
||||||
34
src/org/SHS/SDK.groovy
Normal file
34
src/org/SHS/SDK.groovy
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
package org.SHS
|
||||||
|
|
||||||
|
@Library('SHS.Platforms') _
|
||||||
|
class SDK {
|
||||||
|
def steps
|
||||||
|
def pl
|
||||||
|
|
||||||
|
public SDK(steps) {
|
||||||
|
this.steps = steps
|
||||||
|
this.pl = new org.SHS.Platforms(this.steps)
|
||||||
|
}
|
||||||
|
|
||||||
|
public void build() {
|
||||||
|
steps.stage("Download sources") {
|
||||||
|
steps.checkout scm
|
||||||
|
}
|
||||||
|
//pl.get()
|
||||||
|
pl._root = steps.readJSON(file: '${env.SHSSDK_DIR}/platforms.json')
|
||||||
|
pl.forEach ({ dist, cmake_toolchain ->
|
||||||
|
print("compile in ${dist.docker_image} with arg ${cmake_toolchain}")
|
||||||
|
/*steps.docker.image("${dist.docker_image}-shssdk").inside() {
|
||||||
|
steps.sh "rm -rf ./release"
|
||||||
|
steps.sh "mkdir -p build"
|
||||||
|
steps.sh "cd build && rm -rf ./* && cmake -G Ninja ${toolchain} -DBUILD_NUMBER=${env.BUILD_NUMBER} -DCMAKE_INSTALL_PREFIX=../release ../src"
|
||||||
|
steps.sh "cd build && cmake --build ./ --target install -j${env.JOBS_COUNT}"
|
||||||
|
steps.archiveArtifacts 'release/*/*/*'
|
||||||
|
steps.sh 'rm -rf ./build ./bin ./release ./builds'
|
||||||
|
},
|
||||||
|
//whiteList: ["ubuntu", "debian", "osx"],
|
||||||
|
blackList: ["android"]*/
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
1
vars/SHS.txt
Normal file
1
vars/SHS.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
libraryVersion = '0.0.1'
|
||||||
Reference in New Issue
Block a user