-
Notifications
You must be signed in to change notification settings - Fork 6
/
Jenkinsfile
154 lines (148 loc) · 3.61 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
properties(
[
buildDiscarder(
logRotator(
artifactDaysToKeepStr: '',
artifactNumToKeepStr: '',
daysToKeepStr: '14',
numToKeepStr: '10',
)
),
// Make new builds terminate existing builds
disableConcurrentBuilds(
abortPrevious: true,
)
]
)
pipeline {
agent any
environment {
registryCredential = "dockerhub-inriachile"
dockerImageName = "lsstts/love-frontend:"
dockerImage = ""
// SAL setup file
SAL_SETUP_FILE = "/home/saluser/.setup_dev.sh"
// LTD credentials
user_ci = credentials('lsst-io')
LTD_USERNAME="${user_ci_USR}"
LTD_PASSWORD="${user_ci_PSW}"
}
stages {
stage("Build Docker image") {
when {
anyOf {
branch "main"
branch "develop"
branch "bugfix/*"
branch "hotfix/*"
branch "release/*"
branch "tickets/*"
}
}
steps {
script {
def git_branch = "${GIT_BRANCH}"
def image_tag = git_branch
def slashPosition = git_branch.indexOf('/')
if (slashPosition > 0) {
git_tag = git_branch.substring(slashPosition + 1, git_branch.length())
git_branch = git_branch.substring(0, slashPosition)
if (git_branch == "release" || git_branch == "hotfix" || git_branch == "bugfix" || git_branch == "tickets") {
image_tag = git_tag
}
}
dockerImageName = dockerImageName + image_tag
echo "dockerImageName: ${dockerImageName}"
dockerImage = docker.build(dockerImageName, "-f docker/Dockerfile .")
}
}
}
stage("Push Docker image") {
when {
anyOf {
branch "main"
branch "develop"
branch "bugfix/*"
branch "hotfix/*"
branch "release/*"
branch "tickets/*"
}
}
steps {
script {
docker.withRegistry("", registryCredential) {
dockerImage.push()
}
}
}
}
stage("Run tests") {
when {
anyOf {
branch "main"
branch "develop"
branch "bugfix/*"
branch "hotfix/*"
branch "release/*"
branch "tickets/*"
branch "PR-*"
}
}
steps {
script {
sh "docker build -f docker/Dockerfile-test -t love-frontend-test ."
sh "docker run love-frontend-test"
}
}
}
stage("Deploy documentation") {
agent {
docker {
alwaysPull true
image 'lsstts/develop-env:develop'
args "--entrypoint=''"
}
}
when {
anyOf {
branch "main"
branch "develop"
}
}
steps {
script {
sh """
source ${env.SAL_SETUP_FILE}
# Remove old docs folder
rm -rf ./docs
# Install dependencies
cd ./love
npm install
# Create docs
npx styleguidist build
cd ..
# Upload docs
pip install ltd-conveyor
ltd upload --product love-frontend --git-ref ${GIT_BRANCH} --dir ./docs
"""
}
}
}
stage("Trigger develop deployment") {
when {
branch "develop"
}
steps {
build(job: '../LOVE-integration-tools/develop', wait: false)
}
}
stage("Trigger main deployment") {
when {
branch "main"
}
steps {
build(job: '../LOVE-integration-tools/main', wait: false)
}
}
}
}