-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
178 lines (145 loc) · 7.43 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
sh 'make'
}
}
stage('Unit Testing') {
steps {
//sh 'go test -v ./models/... ./utils/...'
sh 'go test -v ./utils/...'
echo 'Unit....'
}
}
stage('Regression Testing') {
steps {
//sh 'go test -cover ./models/... ./utils/...'
sh 'go test -cover ./utils/...'
echo 'Regression....'
}
}
/*stage('SonarQube analysis') {
environment {
SCANNER_HOME = tool 'SonarQube-scanner'
}
steps {
withSonarQubeEnv(credentialsId: 'OGREE-API', installationName: 'sonarqube-netbox') {
sh '''$SCANNER_HOME/bin/sonar-scanner \
-Dsonar.projectKey=OGREE-API \
-Dsonar.projectName=OGREE-API '''
}
}
}
stage('SQuality Gate') {
steps {
timeout(time: 2, unit: 'MINUTES') {
waitForQualityGate abortPipeline: true
}
}
}*/
stage('Functional Test') {
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
echo 'Functional....'
sh 'docker stop lapd || true'
//sh 'cd ./resources/test && docker build -t apitester:dockerfile .'
sh 'docker run --rm --network=roachnet -p 27018:27017 --name lapd -d -v /home/ziad/project/testMDB:/docker-entrypoint-initdb.d/ mongo'
sh 'sleep 1'
sh 'mv ./.env ./.env.bak'
sh 'cp ./resources/test/.env .'
sh 'sudo ./main &'
//script {
//
// env.RES = sh(script: 'sudo ./resources/test/scenario1.py || true', returnStdout: true).trim()
//
//
//echo "RES = ${env.RES}"
//}
sh 'sudo ./resources/test/scenario1.py'
sh 'sudo ./resources/test/scenario2.py'
sh 'sudo ./resources/test/scenario3.py'
sh 'sudo ./resources/test/scenario4.py'
sh 'mv ./.env.bak ./.env'
//sh 'docker run -d --rm --network=roachnet --name=rotten_apple_test testingalpine:dockerfile /bin/sh -c /home/main'
//sh 'docker run -d --rm --network=roachnet --name=tester apitester:dockerfile /home/scenario1.py'
//sh 'docker logs -f rotten_apple_test'
//sh 'docker logs -f tester'
//sh 'docker stop rotten_apple_test || true'
//sh 'docker stop lapd || true'
}
}
}
//Generate binaries for other systems
//and copy files
stage('Application Builds') {
steps {
sh 'cp ./resources/Endpoint_List.md /OGrEE/buildService/filesForUpload/endpointList_v4.md'
//Linux Native
sh 'make linux'
sh 'mv OGrEE_API_Linux_x64 /OGrEE/bin/api'
//Windows x64
sh 'make windows'
sh 'mv OGrEE_API_Win_x64 /OGrEE/bin/api'
//OSX x64
sh 'make mac'
sh 'mv OGrEE_API_OSX_x64 /OGrEE/bin/api'
//Upload builds to Nextcloud
sh '/OGrEE/buildService/updateAPI.py'
//OSX arm64
//sh 'GOOS=darwin GOARCH=arm64 go build -o OGrEE_API_OSX_arm64 main.go'
//sh 'mv OGrEE_API_OSX_arm64 /home/ziad/bin/api'
}
}
stage('Update development section') {
steps {
echo 'Deploying Development containers....'
//Make backups of the DBs before stopping them
sh '(docker exec cDB sh -c \'exec mongodump -d ogree --archive\' > /ogree-development/backup/cicdTriggered/cDB/collection.archive) || true'
sh '(docker exec hDB sh -c \'exec mongodump -d ogree --archive\' > /ogree-development/backup/cicdTriggered/hDB/collection.archive) || true'
sh '(docker exec zDB sh -c \'exec mongodump -d ogree --archive\' > /ogree-development/backup/cicdTriggered/zDB/collection.archive) || true'
sh '(docker exec tDB sh -c \'exec mongodump -d ogree --archive\' > /ogree-development/backup/cicdTriggered/tDB/collection.archive) || true'
sh '(docker exec vDB sh -c \'exec mongodump -d ogree --archive\' > /ogree-development/backup/cicdTriggered/vDB/collection.archive) || true'
sh '(docker exec fDB sh -c \'exec mongodump -d ogree --archive\' > /ogree-development/backup/cicdTriggered/fDB/collection.archive) || true'
//Restart services
sh 'docker-compose -f /ogree-development/docker-compose.yml down || true'
sh 'docker-compose -f /ogree-development/docker-compose.yml up -d'
//Restore backups
sh '(docker exec -i cDB sh -c \'exec mongorestore --archive\' < /ogree-development/backup/cicdTriggered/cDB/collection.archive) || true'
sh '(docker exec -i hDB sh -c \'exec mongorestore --archive\' < /ogree-development/backup/cicdTriggered/hDB/collection.archive) || true'
sh '(docker exec -i zDB sh -c \'exec mongorestore --archive\' < /ogree-development/backup/cicdTriggered/zDB/collection.archive) || true'
sh '(docker exec -i tDB sh -c \'exec mongorestore --archive\' < /ogree-development/backup/cicdTriggered/tDB/collection.archive) || true'
sh '(docker exec -i vDB sh -c \'exec mongorestore --archive\' < /ogree-development/backup/cicdTriggered/vDB/collection.archive) || true'
sh '(docker exec -i fDB sh -c \'exec mongorestore --archive\' < /ogree-development/backup/cicdTriggered/fDB/collection.archive) || true'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
sh 'docker rmi $(docker images --filter "dangling=true" \
-q --no-trunc) || true'
sh 'DOCKER_BUILDKIT=1 docker build -t testingalpine:dockerfile .'
sh 'docker stop lapd || true'
sh 'fuser -k 27020/tcp || true'
sh 'sudo fuser -k 3001/tcp || true'
sh 'docker stop ogree_api || true'
sh 'docker rm ogree_api || true'
//sh 'rm ./env'
//sh 'mv ./.env.bak ./.env'
//Until we can figure out why the development section is
//polluting the disk with volumes
//juste delete them here in pipeline
sh 'docker volume prune -f'
//Leftover containers from Dockerfile building
sh 'docker container prune -f'
//Clear builder cache
sh 'docker builder prune'
//sh 'docker run -d --rm --network=host --name=ogree_api testingalpine:dockerfile /home/main'
sh 'docker-compose -f /OGrEE/docker-compose.yml up -d --no-recreate'
sh 'docker logs ogree_api'
}
}
}
}