-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
100 lines (99 loc) · 3.55 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
def PROJECT_NAME = "WEB-Java-SeleniumWebDriver"
def LABEL_ID = "js-slave-${PROJECT_NAME}-${UUID.randomUUID().toString()}"
def GIT_COMMIT
def TAG = "regression"
def ENVIRONMENT = "environmentA"
def DEPLOY_CREDENTIALS = 'credendiatls'
def AWS_CREDENTIALS_ID = 'aws-jenkins-dev'
podTemplate(label: LABEL_ID, yaml: """
apiVersion: v1
kind: Pod
spec:
containers:
- name: docker-container
image: docker
command: ['cat']
tty: true
env:
- name: REGISTRY
value: ????
volumeMounts:
- name: dockersock
mountPath: /var/run/docker.sock
- name: sdk-container
image: imagem jdk8
command: ['cat']
tty: true
- name: ansible-container
image: sdk:ansible
command: ['cat']
tty: true
- name: selenium-container
image: selenium/standalone-chrome:102.0-chromedriver-102.0
ports:
- containerPort: 4444
- name: sonar-container
image: sonar:jdk8
command: ['cat']
tty: true
env:
- name: ENVIRONMENT
value: "${ENVIRONMENT}"
- name: TAG
value: "${TAG}"
nodeSelector:
nodegroup-type: jenkins-nodes
tolerations:
- key: "jenkins-nodes"
operator: "Exists"
effect: "NoSchedule"
resources:
requests:
memory: "4Gi"
cpu: "2"
imagePullSecrets:
- name: dockerhub
volumes:
- name: dockersock
hostPath:
path: /var/run/docker.sock
"""
) {
node(LABEL_ID){
checkout scm
currentBuild.displayName += " ${env.ENVIRONMENT} - ${env.TAG}"
currentBuild.description = "${env.ENVIRONMENT} - ${env.TAG}"
stage('Integration-tests'){
notifyStarted()
try {
container('sdk-container'){
sh "mvn clean test -Dtest=CucumberRunner -Dbrowser=chromeHeadless -Denvironment=${env.ENVIRONMENT} -Dcucumber.options="-t @${env.TAG}\""
}
// cucumber reports collection
cucumber buildStatus: null, fileIncludePattern: '**/cucumber.json', jsonReportDirectory: 'target', sortingMethod: 'ALPHABETICAL'
publishHTML(target:[
allowMissing: true,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: "${WORKSPACE}",
reportFiles: 'target/cucumber/index.html',
reportName: 'cucumber-html-reports',
reportTitles: 'cucumber-html-reports'
])
notifySuccessful()
}
catch(e) {
notifyFailed()
}
}
}//fim node label
}//fim pod template
def notifyStarted() {
slackSend (channel: '#reports', color: '#FFFF00', message: "STARTING WEB Tests : ${env.ENVIRONMENT}, TAG:${env.TAG} \n By ${env.BUILD_USER}")
}
def notifySuccessful() {
slackSend (channel: '#reports', color: '#00FF00', message: "SUCCESSFUL WEB Tests : ${env.ENVIRONMENT}, TAG: ${env.TAG} \n ${env.BUILD_URL} \n Build Report: ${env.BUILD_URL}cucumber-html-reports/overview-features.html \n Cucumber Report: ${env.BUILD_URL}cucumber-html-reports/overview-features.html \n Cucumber steps: ${env.BUILD_URL}cucumber-html-reports/overview-steps.html")
}
def notifyFailed() {
slackSend (channel: '#reports', color: '#FF0000', message: "FAILED WEB Tests : ${env.ENVIRONMENT}, TAG: ${env.TAG} \n ${env.BUILD_URL} \n Build Report: ${env.BUILD_URL}cucumber-html-reports/overview-features.html \n Cucumber Report: ${env.BUILD_URL}cucumber-html-reports/overview-features.html \n Cucumber steps: ${env.BUILD_URL}cucumber-html-reports/overview-steps.html")
}