-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
127 lines (126 loc) · 4.03 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
121
122
123
124
125
126
127
/*
File: Jenkinsfile
Author: Dalwar Hossain (dalwar23@protonmail.com)
Copyright: Dalwar Hossain
*/
pipeline {
agent any
environment {
PYTHON_INTERPRETER = "python3.7"
REPOSITORY_NAME = sh (script: 'echo $(echo `git config --get remote.origin.url` | rev | cut -d "/" -f 1 | cut -d "." -f 2 | rev)', returnStdout: true).trim()
}
options {
buildDiscarder(logRotator(numToKeepStr: '2', artifactNumToKeepStr: '1'))
}
stages {
stage ('Sanity Check') {
parallel {
stage ('Check Python3') {
steps {
sh "${PYTHON_INTERPRETER} --version"
}
}
stage ('Python3 virtualenv') {
steps {
sh 'virtualenv --version'
}
}
stage ('Check setup.py') {
steps {
sh 'test -f setup.py'
sh 'echo \$?'
}
}
}
}
stage ('Initialize') {
steps {
sh "virtualenv --always-copy -p ${PYTHON_INTERPRETER} venv"
sh '''
source venv/bin/activate
pip install --upgrade pip setuptools wheel
pip --version
'''
}
}
stage ('Pre-Build') {
parallel {
stage ('Dev Dependencies') {
when {
expression {
fileExists('requirements_dev.txt')
}
}
steps {
sh '''
source venv/bin/activate
pip install -r requirements_dev.txt
deactivate
'''
}
}
stage ('Pkg Dependencies') {
when {
expression {
fileExists('requirements.txt')
}
}
steps {
sh '''
source venv/bin/activate
pip install -r requirements.txt
deactivate
'''
}
}
}
}
stage ('Build HTML') {
steps {
sh '''
source venv/bin/activate
cd docs/
make clean html
deactivate
'''
}
}
stage ('Create Artifacts') {
environment {
PROJECT_VERSION = sh (script: '"${PYTHON_INTERPRETER}" setup.py --version', returnStdout: true).trim()
}
steps {
sh '''
if [[ -d "${WORKSPACE}/docs/build/html/" ]]; then
cd "${WORKSPACE}/docs/build/html/"
tar -vczf "${WORKSPACE}/${REPOSITORY_NAME}-${BRANCH_NAME}-${PROJECT_VERSION}-${BUILD_NUMBER}.tar.gz" *
fi
'''
}
}
stage ('Manage Artifacts') {
parallel {
stage ('Archive Artifacts - tarball') {
steps {
archiveArtifacts artifacts: '*.gz ',
onlyIfSuccessful: true
}
}
stage ('Publish to Test') {
steps {
sh '''
DST="/var/www/html/staging/docs/${REPOSITORY_NAME}"
SRC="docs/build/html/*"
if [[ -d "${DST}" ]]; then
sudo cp -r $SRC $DST
else
sudo mkdir -p $DST
sudo cp -r $SRC $DST
fi
'''
}
}
}
}
}
}