forked from SophiaTX/SophiaTX-MainNet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
120 lines (113 loc) · 3.56 KB
/
Jenkinsfile
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!groovy
////////////////////////////////////////
properties([parameters([booleanParam(defaultValue: false, description: '', name: 'build_as_debug'), booleanParam(defaultValue: false, description: '', name: 'build_as_testnet')])])
pipeline {
options {
buildDiscarder(logRotator(artifactNumToKeepStr: '20'))
}
environment {
ARCHIVE_NAME = "sophiatx_" + "#" + "${env.BUILD_NUMBER}" + ".tar.gz"
GENESIS_FILE = "genesis.json"
BUILD_TYPE = "Release"
}
agent {
label get_label_name()
}
stages {
stage('Build') {
steps {
script {
if( params.build_as_testnet ) {
GENESIS_FILE = "genesis_testnet.json"
}
if( params.build_as_debug ) {
BUILD_TYPE = "Debug"
}
}
sh "cmake -DUSE_PCH=ON -DBOOST_ROOT=${BOOST_167} -DOPENSSL_ROOT_DIR=${OPENSSL_102} -DFULL_STATIC_BUILD=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=install -DSOPHIATX_EGENESIS_JSON=${GENESIS_FILE} -DBUILD_SOPHIATX_TESTNET=${params.build_as_testnet}"
sh 'make -j4'
}
}
stage('Tests') {
steps {
script {
if( !params.build_as_testnet ) {
sh './tests/chain_test'
}
}
}
}
stage('Archive') {
steps {
sh 'make install'
dir('install') {
dir('lib') {
script {
if( !params.build_as_debug ) {
sh 'strip -s libalexandria.so libalexandriaJNI.so' //strip symbols
}
}
sh 'tar -czf libalexandria.tar.gz libalexandria.so libalexandriaJNI.so alexandria.hpp AlexandriaJNI.java' //create tar file
archiveArtifacts '*.gz'
}
dir('bin') {
script {
if( !params.build_as_debug ) {
sh 'strip -s *' //strip symbols
}
}
sh 'rm -f test*' //remove test binaries
sh 'cp ${WORKSPACE}/contrib/fullnode_config.ini .'//copy configs
sh 'cp ${WORKSPACE}/contrib/witness_config.ini .'//copy configs
sh 'tar -czf ${ARCHIVE_NAME} alexandria_deamon cli_wallet sophiatxd fullnode_config.ini witness_config.ini' //create tar file
archiveArtifacts '*.gz'
}
}
}
}
stage('Create RPM') {
when {
branch 'develop'
}
steps {
sh 'rm -rf /home/$USER/RPMBUILD/RPMS/*.rpm'
dir('install') {
dir('bin') {
sh 'mv *.gz sophiatx.tar.gz' //rename tar file
sh 'cp sophiatx.tar.gz /home/$USER/RPMBUILD/SOURCES' //copy file for rpm creation
}
}
sh 'cp ciscripts/sophiatx.spec /home/$USER/RPMBUILD/SPECS'
sh 'rpmbuild -ba /home/$USER/RPMBUILD/SPECS/sophiatx.spec'
sh 'cp /home/$USER/RPMBUILD/RPMS/x86_64/*.rpm ${WORKSPACE}'
archiveArtifacts '*.rpm'
}
}
stage('Clean WS') {
steps {
cleanWs()
}
}
}
post {
success {
send_positive_slack_notification()
}
failure {
slackSend (color: '#ff0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
}
////////////////////////////////////////
def send_positive_slack_notification() {
if( "${env.BRANCH_NAME}" == 'develop' ) {
slackSend (color: 'good', message: "SUCCESS: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
def get_label_name() {
if( "${env.BRANCH_NAME}" == 'develop' ) {
return 'suse'
} else {
return 'linux'
}
}