|
1 | 1 | pipeline { |
2 | 2 | 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') } |
4 | 5 | environment { |
5 | 6 | CONAN_USER_HOME = "${env.WORKSPACE}" |
6 | 7 | PROFILE_x86_64 = 'clang-6.0-linux-x86_64' |
7 | | - PROFILE_x86 = 'clang-6.0-linux-x86' |
8 | 8 | CPUS = """${sh(returnStdout: true, script: 'nproc')}""" |
9 | | - CC = 'clang-6.0' |
10 | | - CXX = 'clang++-6.0' |
11 | 9 | PACKAGE = 'diskbuilder' |
12 | 10 | USER = 'includeos' |
13 | | - CHAN = 'test' |
| 11 | + CHAN_LATEST = 'latest' |
| 12 | + CHAN_STABLE = 'stable' |
14 | 13 | REMOTE = "${env.CONAN_REMOTE}" |
15 | 14 | BINTRAY_CREDS = credentials('devops-includeos-user-pass-bintray') |
| 15 | + SRC = "${env.WORKSPACE}/src" |
16 | 16 | } |
17 | 17 |
|
18 | 18 | stages { |
19 | 19 | stage('Setup') { |
20 | 20 | steps { |
| 21 | + sh script: "ls -A | grep -v src | xargs rm -r || :", label: "Clean workspace" |
21 | 22 | sh script: "conan config install https://github.com/includeos/conan_config.git", label: "conan config install" |
22 | 23 | } |
23 | 24 | } |
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() } |
32 | 29 | } |
33 | 30 | } |
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' } |
42 | 35 | steps { |
43 | | - //TODO foreach profile ? |
44 | | - build_conan_package("$PROFILE_x86_64") |
| 36 | + upload_package("$CHAN_LATEST") |
45 | 37 | } |
46 | 38 | } |
47 | | - stage('Upload to bintray') { |
| 39 | + stage('Stable release') { |
| 40 | + when { buildingTag() } |
48 | 41 | 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") |
54 | 44 | } |
55 | 45 | } |
56 | 46 | } |
57 | 47 | } |
58 | 48 | } |
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 | | - } |
67 | 49 | } |
68 | 50 |
|
69 | | - |
70 | 51 | 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" |
72 | 60 | } |
0 commit comments