1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
// This CI setup checks out aktualizr, meta-updater and updater-repo and builds
// master branches whenever a change is pushed to any of these
// define these for docker image creation
node {
// might cause some problems:
// https://stackoverflow.com/questions/44805076/setting-build-args-for-dockerfile-agent-using-a-jenkins-declarative-pipeline
JENKINS_UID = sh(returnStdout: true, script: 'id -u').trim()
JENKINS_GID = sh(returnStdout: true, script: 'id -g').trim()
}
pipeline {
agent any
environment {
TEST_AKTUALIZR_REMOTE = 'aktualizr'
TEST_AKTUALIZR_DIR = 'aktualizr'
TEST_AKTUALIZR_BRANCH = 'master'
TEST_BITBAKE_COMMON_DIR = "/opt/jenkins/bitbake-common"
}
stages {
stage('checkout') {
steps {
checkout([$class: 'GitSCM',
userRemoteConfigs: [
[url: 'https://github.com/advancedtelematic/aktualizr', name: 'aktualizr']
],
branches: [[name: 'refs/heads/master']],
extensions: [
[$class: 'DisableRemotePoll'],
[$class: 'PruneStaleBranch'],
[$class: 'RelativeTargetDirectory',
relativeTargetDir: 'aktualizr'
]
],
])
checkout([$class: 'RepoScm',
manifestRepositoryUrl: 'https://github.com/advancedtelematic/updater-repo',
manifestBranch: null,
manifestFile: 'master.xml',
manifestGroup: null,
mirrorDir: null,
jobs: 0,
depth: 0,
localManifest: null,
destinationDir: 'updater-repo',
repoUrl: null,
currentBranch: false,
resetFirst: true,
quiet: false,
trace: false,
showAllChanges: false,
])
// ignore bitbake build directories in docker
sh 'echo \'build*\' > .dockerignore'
// override meta-updater commit with currently tested branch
sh '''
META_UPDATER_COMMIT=$(git rev-parse HEAD)
cd updater-repo/meta-updater
git checkout $META_UPDATER_COMMIT
'''
}
}
stage('build-core-image-minimal') {
agent {
dockerfile {
filename 'scripts/ci/Dockerfile.bitbake'
args '-v /opt/jenkins/bitbake-common:/opt/jenkins/bitbake-common'
additionalBuildArgs "--build-arg uid=${JENKINS_UID} --build-arg gid=${JENKINS_GID}"
reuseNode true
}
}
environment {
TEST_AKTUALIZR_CREDENTIALS = credentials('garage-credentials')
}
steps {
sh 'scripts/ci/configure.sh'
sh 'scripts/ci/build.sh core-image-minimal'
}
}
}
}
// vim: set ft=groovy tabstop=2 shiftwidth=2 expandtab:
|