-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathJenkinsfile
71 lines (55 loc) · 3.04 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
def production_zone = "reconfigure.io"
def staging_zone = "reconfigureio-infra.com"
def staging_base = "/${env.BRANCH_NAME}"
notifyStarted()
def zone = ""
def base = ""
if(env.BRANCH_NAME == "master") {
zone = production_zone
} else {
zone = staging_zone
base = staging_base
}
node ('master') {
try {
timeout(time: 10, unit: 'MINUTES') {
stage 'checkout'
checkout scm
stage 'lint'
sh 'docker build -t "reconfigureio/sphinx:latest" docs'
sh 'docker build -t "reconfigureio/dashboard:latest" dashboard/build'
stage 'dashboard - test'
dir ('dashboard/') {
sh 'docker-compose run --rm test'
}
stage 'build'
if(env.BRANCH_NAME == "master") {
sh "docker run --init -v \$PWD/docs:/mnt --env-file=docs/vars/production.env 'reconfigureio/sphinx:latest' make html"
sh "docker run --init -v \$PWD/dashboard:/mnt 'reconfigureio/dashboard:latest' make production"
}else{
sh "docker run --init -v \$PWD/docs:/mnt --env-file=docs/vars/staging.env 'reconfigureio/sphinx:latest' make html"
sh "docker run --init -v \$PWD/dashboard:/mnt 'reconfigureio/dashboard:latest' make build BASE_URL=${staging_base}/"
}
stage 'upload'
step([$class: 'S3BucketPublisher', dontWaitForConcurrentBuildCompletion: false, entries: [[bucket: "app.${zone}${base}", excludedFile: '', flatten: false, gzipFiles: false, keepForever: true, managedArtifacts: false, noUploadOnFailure: true, selectedRegion: 'us-east-1', showDirectlyInBrowser: false, sourceFile: 'dashboard/dist/**/*', storageClass: 'STANDARD', uploadFromSlave: true, useServerSideEncryption: false]], profileName: 's3', userMetadata: []])
step([$class: 'S3BucketPublisher', dontWaitForConcurrentBuildCompletion: false, entries: [[bucket: "docs.${zone}${base}", excludedFile: '', flatten: false, gzipFiles: false, keepForever: true, managedArtifacts: false, noUploadOnFailure: true, selectedRegion: 'us-east-1', showDirectlyInBrowser: false, sourceFile: 'docs/build/html/**/*', storageClass: 'STANDARD', uploadFromSlave: true, useServerSideEncryption: false]], profileName: 's3', userMetadata: []])
stage 'clean'
sh 'docker run --init -v $PWD/docs:/mnt "reconfigureio/sphinx:latest" make clean'
sh 'docker run --init -v $PWD/dashboard:/mnt "reconfigureio/dashboard:latest" make clean'
notifySuccessful()
}
} catch (e) {
currentBuild.result = "FAILED"
notifyFailed()
throw e
}
}
def notifyStarted() {
slackSend (color: '#FFFF00', message: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
def notifySuccessful() {
slackSend (color: '#00FF00', message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
def notifyFailed() {
slackSend (color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}