-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
86 lines (80 loc) · 3.11 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
pipeline {
//options {}
agent any
triggers {
issueCommentTrigger('.*test.*please.*')
}
parameters {
string(defaultValue: 'registry.gitlab.com', description: 'URL for Docker Registry', name: 'DOCKER_REGISTRY')
}
//environment {}
stages {
stage('setup') {
steps {
setBuildStatus("${env.GIT_URL}", "Pipeline", "Running", "PENDING")
checkout([$class: 'GitSCM',
branches: [[name: env.GIT_COMMIT]],
userRemoteConfigs: [[
credentialsId: 'dhutty-github-token',
url: env.GIT_URL
]]
])
sh "virtualenv -p python3 venv"
sh "source venv/bin/activate; pip install -r test-requirements.txt"
}
}
stage('test') {
steps {
setBuildStatus("${env.GIT_URL}", "Test", "Running", "PENDING")
sh "source venv/bin/activate; pylint -E pythonhttpserver.py"
sh "source venv/bin/activate; yapf -d pythonhttpserver.py"
}
post {
failure {
setBuildStatus("${env.GIT_URL}", "Test", "Test Failure", "FAILURE")
}
success {
setBuildStatus("${env.GIT_URL}", "Test", "Test Success", "SUCCESS")
}
aborted {
setBuildStatus("${env.GIT_URL}", "Test", "Test Aborted", "ERROR")
}
}
}
// alternative; for container-based pythonhttp
/* stage('build') { */
/* steps { */
/* script {docker.build("${params.DOCKER_REGISTRY}/dhutty/pythonhttp")} */
/* } */
/* } */
/* stage('publish') { */
/* steps { */
/* withDockerRegistry(credentialsId: 'dhutty-gitlab-username-password', url: "${params.DOCKER_REGISTRY}") { */
/* script {docker.image("${params.DOCKER_REGISTRY}/dhutty/pythonhttp").push()} */
/* } */
/* } */
/* } */
}
post {
failure {
setBuildStatus("${env.GIT_URL}", "Pipeline", "Pipeline Failure", "FAILURE")
}
success {
setBuildStatus("${env.GIT_URL}", "Pipeline", "Pipeline Success", "SUCCESS")
}
aborted {
setBuildStatus("${env.GIT_URL}", "Pipeline", "Pipeline Aborted", "ERROR")
}
}
}
void setBuildStatus(String url, String context, String message, String state) {
if (env.CHANGE_ID && "${env.CHANGE_TARGET}" == "master") {
step([
$class: "GitHubCommitStatusSetter",
reposSource: [$class: "ManuallyEnteredRepositorySource", url: url],
contextSource: [$class: "ManuallyEnteredCommitContextSource", context: context],
errorHandlers: [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]],
statusResultSource: [ $class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]] ]
]);
}
}