-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
95 lines (91 loc) · 2.97 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
//
// Plugin "build user vars" is needed!
// Set "Manage Jenkins -> Configure System -> Global properties" "DEFAULT_EMAIL" Environment variable for users without email address!
//
// github commit status
void setBuildStatus(String message, String state) {
step([
$class: 'GitHubCommitStatusSetter',
reposSource: [$class: 'ManuallyEnteredRepositorySource', url: 'https://github.com/lapicidae/feed-actions'],
contextSource: [$class: 'ManuallyEnteredCommitContextSource', context: 'ci/jenkins/build-status'],
errorHandlers: [[$class: 'ChangingBuildStatusErrorHandler', result: 'UNSTABLE']],
statusResultSource: [ $class: 'ConditionalStatusResultSource', results: [[$class: 'AnyBuildResult', message: message, state: state]] ]
]);
}
pipeline {
environment {
registry = "lapicidae/feed-actions"
registryCredential = 'dockerhub'
registryTag = 'latest'
//gitURL = 'https://github.com/lapicidae/feed-actions.git'
currTime = sh(returnStdout: true, script: 'date +"%H:%M"').trim()
currDate = sh(returnStdout: true, script: 'date +"%m.%d.%Y"').trim()
dockerImage = ''
email = ''
}
agent any
stages {
stage('Init') {
steps{
echo 'Initializing....'
script {
user = wrap([$class: 'BuildUser']) { return env.BUILD_USER }
user_id = wrap([$class: 'BuildUser']) { return env.BUILD_USER_ID }
email = wrap([$class: 'BuildUser']) { return env.BUILD_USER_EMAIL }
if (!email?.trim()) {
email = "${DEFAULT_EMAIL}"
}
}
echo "--- User Info ---\nUser:\t\t$user\nUser ID:\t$user_id\neMail:\t\t$email\nTime:\t\t$currTime\nDate:\t\t$currDate"
}
}
stage('Clone') {
steps{
echo 'Cloning....'
checkout scm
//git gitURL
}
}
stage('Build') {
steps{
echo 'Building....'
script {
dockerImage = docker.build registry + ":$BUILD_NUMBER"
}
}
}
stage('Publish') {
steps{
echo 'Publishing....'
script {
docker.withRegistry( '', registryCredential ) {
dockerImage.push(registryTag)
}
}
}
}
stage('Clean') {
steps{
echo 'Cleaning....'
sh "docker rmi $registry:$BUILD_NUMBER || echo Failed to remove image $registry:$BUILD_NUMBER."
sh "docker rmi $registry:$registryTag || echo Failed to remove image $registry:$BUILD_NUMBER."
}
}
}
post {
always {
echo "Build result => ${currentBuild.result}"
mail to: "$email",
subject: "Pipeline: ${currentBuild.fullDisplayName} -> ${currentBuild.result}",
charset: 'UTF-8',
mimeType: 'text/html',
body: "<b>${env.JOB_NAME} - Build #${env.BUILD_NUMBER} - <em>${currentBuild.result}</em></b><br/><br/>Job started by user ${user_id} (${user}) at ${currTime} on ${currDate}.<br/>Build took ${currentBuild.durationString}.<br/><br/>Check console <a href='${env.BUILD_URL}console'>output</a> to view full results.<br/><br/>Your faithful employee<br/><em>Node</em> ${env.NODE_NAME}"
}
success {
setBuildStatus('Build succeeded', 'SUCCESS');
}
failure {
setBuildStatus('Build failed', 'FAILURE');
}
}
}