-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
136 lines (119 loc) · 5.47 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
@Library('StanUtils')
import org.stan.Utils
def utils = new org.stan.Utils()
pipeline {
agent none
options {
skipDefaultCheckout()
preserveStashes(buildCount: 7)
parallelsAlwaysFailFast()
buildDiscarder(logRotator(numToKeepStr: '20', daysToKeepStr: '30'))
}
environment {
GIT_AUTHOR_NAME = 'Stan Jenkins'
GIT_AUTHOR_EMAIL = '[email protected]'
GIT_COMMITTER_NAME = 'Stan Jenkins'
GIT_COMMITTER_EMAIL = '[email protected]'
GITHUB_TOKEN = credentials('6e7c1e8f-ca2c-4b11-a70e-d934d3f6b681')
}
stages {
stage("Update docs") {
agent {
docker {
image 'alpine/git'
label 'linux && triqs'
args "--entrypoint=''"
}
}
steps {
withCredentials([usernamePassword(credentialsId: 'a630aebc-6861-4e69-b497-fd7f496ec46b',
usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD')]) {
sh """
git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/stan-dev/docs.git
cd docs
git config user.email "[email protected]"
git config user.name "Stan Jenkins"
git config auth.token ${GITHUB_TOKEN}
git checkout master
git pull origin master
git submodule update --init --recursive --remote
cd src/quarto-config
git checkout origin/main
git pull origin main
cd ../..
git submodule update --init --recursive --remote
"""
script {
env.COMMIT_HASH = sh (
script: 'cd docs/src/quarto-config && git rev-parse --short HEAD && cd ../..',
returnStdout: true
)
}
sh """
cd docs
if [[ -n "`git status -s`" ]]; then
git add .
git commit -m "Updating submodule quarto to ${env.COMMIT_HASH.trim()}"
git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/stan-dev/docs.git master
fi
"""
}
}
post { always { deleteDir() } }
}
stage("Create PR in stan-dev.github.io") {
agent {
docker {
image 'mrnonz/alpine-git-curl'
label 'linux && triqs'
args "--entrypoint=''"
}
}
steps {
withCredentials([usernamePassword(credentialsId: 'a630aebc-6861-4e69-b497-fd7f496ec46b',
usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD')]) {
sh """
git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/stan-dev/stan-dev.github.io.git
cd stan-dev.github.io
git config user.email "[email protected]"
git config user.name "Stan Jenkins"
git config auth.token ${GITHUB_TOKEN}
git checkout master
git pull origin master
git submodule update --init --recursive --remote
cd quarto-config
git checkout origin/main
git pull origin main
cd ../
git submodule update --init --recursive --remote
git status
pwd
"""
script {
env.COMMIT_HASH = sh (
script: 'cd stan-dev.github.io/quarto-config && git rev-parse --short HEAD && cd ../..',
returnStdout: true
)
}
sh """
pwd
cd stan-dev.github.io
if [[ -n "`git status -s`" ]]; then
git checkout -b quarto-${env.COMMIT_HASH.trim()}
git add .
git commit -m "Updating submodule quarto to ${env.COMMIT_HASH.trim()}"
git push https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/stan-dev/stan-dev.github.io.git quarto-${env.COMMIT_HASH.trim()}
curl -s -H "Authorization: token ${GITHUB_TOKEN}" -X POST -d '{"title": "Updating submodule quarto to ${env.COMMIT_HASH.trim()}", "base":"master", "head":"quarto-${env.COMMIT_HASH.trim()}", "body":"Updating submodule quarto to ${env.COMMIT_HASH.trim()}"}' "https://api.github.com/repos/stan-dev/stan-dev.github.io/pulls"
fi
"""
}
}
post { always { deleteDir() } }
}
}
post {
success { script { utils.mailBuildResults("SUCCESSFUL") } }
unstable { script { utils.mailBuildResults("UNSTABLE", "[email protected]") } }
failure { script { utils.mailBuildResults("FAILURE", "[email protected]") } }
}
}