Skip to content

Commit 583dfc7

Browse files
committed
Jenkins: conan channels + better cleanup
1 parent 4fdb826 commit 583dfc7

1 file changed

Lines changed: 27 additions & 39 deletions

File tree

Jenkinsfile

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,60 @@
11
pipeline {
22
agent { label 'ubuntu-18.04' }
3-
3+
triggers { upstream( upstreamProjects: 'IncludeOS/IncludeOS/master, IncludeOS/IncludeOS/dev', threshold: hudson.model.Result.SUCCESS ) }
4+
options { checkoutToSubdirectory('src') }
45
environment {
56
CONAN_USER_HOME = "${env.WORKSPACE}"
67
PROFILE_x86_64 = 'clang-6.0-linux-x86_64'
7-
PROFILE_x86 = 'clang-6.0-linux-x86'
88
CPUS = """${sh(returnStdout: true, script: 'nproc')}"""
9-
CC = 'clang-6.0'
10-
CXX = 'clang++-6.0'
119
PACKAGE = 'diskbuilder'
1210
USER = 'includeos'
13-
CHAN = 'test'
11+
CHAN_LATEST = 'latest'
12+
CHAN_STABLE = 'stable'
1413
REMOTE = "${env.CONAN_REMOTE}"
1514
BINTRAY_CREDS = credentials('devops-includeos-user-pass-bintray')
15+
SRC = "${env.WORKSPACE}/src"
1616
}
1717

1818
stages {
1919
stage('Setup') {
2020
steps {
21+
sh script: "ls -A | grep -v src | xargs rm -r || :", label: "Clean workspace"
2122
sh script: "conan config install https://github.com/includeos/conan_config.git", label: "conan config install"
2223
}
2324
}
24-
stage('Pull Request pipeline') {
25-
when { changeRequest() }
26-
stages {
27-
stage('Build package') {
28-
steps {
29-
build_conan_package("$PROFILE_x86_64")
30-
}
31-
}
25+
stage('Build package') {
26+
steps {
27+
build_conan_package("$PROFILE_x86_64")
28+
script { VERSION = sh(script: "conan inspect -a version $SRC | cut -d ' ' -f 2", returnStdout: true).trim() }
3229
}
3330
}
34-
stage('Deploy package pipeline') {
35-
when {
36-
anyOf {
37-
branch 'master'
38-
}
39-
}
40-
stages {
41-
stage('Build Conan package') {
31+
stage('Upload to bintray') {
32+
parallel {
33+
stage('Latest release') {
34+
when { branch 'master' }
4235
steps {
43-
//TODO foreach profile ?
44-
build_conan_package("$PROFILE_x86_64")
36+
upload_package("$CHAN_LATEST")
4537
}
4638
}
47-
stage('Upload to bintray') {
39+
stage('Stable release') {
40+
when { buildingTag() }
4841
steps {
49-
sh script: """
50-
conan user -p $BINTRAY_CREDS_PSW -r $REMOTE $BINTRAY_CREDS_USR
51-
VERSION=\$(conan inspect -a version . | cut -d " " -f 2)
52-
conan upload --all -r $REMOTE $PACKAGE/\$VERSION@$USER/$CHAN
53-
""", label: "Upload to bintray"
42+
sh script: "conan copy --all $PACKAGE/$VERSION@$USER/$CHAN_LATEST $USER/$CHAN_STABLE", label: "Copy to stable channel"
43+
upload_package("$CHAN_STABLE")
5444
}
5545
}
5646
}
5747
}
5848
}
59-
post {
60-
cleanup {
61-
sh script: """
62-
VERSION=\$(conan inspect -a version . | cut -d " " -f 2)
63-
conan remove $PACKAGE/\$VERSION@$USER/$CHAN -f || echo 'Could not remove. This does not fail the pipeline'
64-
""", label: "Cleaning up and removing conan package"
65-
}
66-
}
6749
}
6850

69-
7051
def build_conan_package(String profile) {
71-
sh script: "conan create . $USER/$CHAN -pr ${profile}", label: "Build with profile: $profile"
52+
sh script: "conan create $SRC $USER/$CHAN_LATEST -pr ${profile}", label: "Build with profile: $profile"
53+
}
54+
55+
def upload_package(String channel) {
56+
sh script: """
57+
conan user -p $BINTRAY_CREDS_PSW -r $REMOTE $BINTRAY_CREDS_USR
58+
conan upload --all -r $REMOTE $PACKAGE/$VERSION@$USER/$channel
59+
""", label: "Upload to bintray"
7260
}

0 commit comments

Comments
 (0)