Blame view

kea_testing.groovy 3.23 KB
a7a0d7905   George Vlahavas   Add initial Jenki...
1
2
3
4
5
6
7
8
9
10
  /**
  * Jenkinsfile to deploy multiple Docker containers based on docker-compose into a DEV server and run any test.
  * This pipeline will run the Docker containers, execute the tests and then stop and remove the containers from the DEV  
  * server automatically.
  **/
  
  
  pipeline {
  
    agent any
097a24e19   George Vlahavas   Fix whitespace
11
      environment {
a7a0d7905   George Vlahavas   Add initial Jenki...
12
13
14
15
16
17
        // Keep as is the following two lines
        PRIVATE_REGISTRY = "https://registry.curex-project.eu:443/curex-local/"
        ARTIFACTORY_URL = "registry.curex-project.eu:443/curex-local/"
  
        DEPLOYMENT_HOST = "116.203.166.220:2376"
        DEPLOYMENT_HOST_CREDENTIALS = "vm2-creds"
fb793d4ad   George Vlahavas   Revert "Revert "A...
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
        
        // KEA specific
        APP_NAME=KEA
        APP_ENV=production
        APP_DEBUG=true
        APP_URL="http://kea.curex-project.eu"
        
        LOG_CHANNEL=stack
        
        DB_CONNECTION=pgsql
        DB_HOST=timescaledb
        DB_PORT=5432
        DB_DATABASE=kea
        DB_USERNAME=postgres
        DB_PASSWORD=postgres
        
        BROADCAST_DRIVER=log
        CACHE_DRIVER=file
        QUEUE_CONNECTION=sync
        SESSION_DRIVER=file
        SESSION_LIFETIME=120
        
        JWT_TTL=1440
        
        ELASTICSEARCH_HOST=elasticsearch
        ELASTICSEARCH_PORT=9200
        ELASTICSEARCH_SCHEME=http
        
        MQTT_HOST=mosquitto
        MQTT_PORT=1883
        MQTT_DEBUG=false
        MQTT_QOS=0
        MQTT_RETAIN=0
        
        MLTD_HOST=mltd
        MLTD_PORT=5000
        OD_HOST=od
        OD_PORT=9091
a7a0d7905   George Vlahavas   Add initial Jenki...
56
57
58
59
60
61
      }
  
    stages {
             
      stage('Checkout the source code') {
        steps {
e8339f7f1   George Vlahavas   Show external IP ...
62
          sh 'curl -s icanhazip.com'
a7a0d7905   George Vlahavas   Add initial Jenki...
63
64
65
66
67
68
69
70
71
72
          checkout scm
        }
      }
      
    
      stage('Deploy Docker containers in DEV server') {
        steps {
          script {
            docker.withServer("$DEPLOYMENT_HOST", "$DEPLOYMENT_HOST_CREDENTIALS") {
              docker.withRegistry("$PRIVATE_REGISTRY" , 'artifactory') {
e8339f7f1   George Vlahavas   Show external IP ...
73
                sh 'curl -s icanhazip.com'
cb9a1dd4e   George Vlahavas   Add more debug info
74
                sh 'hostname;pwd;ls -lR'
a7a0d7905   George Vlahavas   Add initial Jenki...
75
76
                echo 'Deploying the specified Docker containers in DEV server'
                sh 'sh deploy.sh'
a7a0d7905   George Vlahavas   Add initial Jenki...
77
78
79
80
81
              }
            }
          }
        }
      }
097a24e19   George Vlahavas   Fix whitespace
82
83
  
      stage('Run tests') {
a7a0d7905   George Vlahavas   Add initial Jenki...
84
        steps {
e8339f7f1   George Vlahavas   Show external IP ...
85
          sh 'curl -s icanhazip.com'
a7a0d7905   George Vlahavas   Add initial Jenki...
86
          script {
f7afd8ea9   George Vlahavas   Add a simple test
87
88
89
            echo '*************'
            echo '*** TESTS ***'
            echo '*************'
a7a0d7905   George Vlahavas   Add initial Jenki...
90
            /* Here do your tests */
f7afd8ea9   George Vlahavas   Add a simple test
91
92
93
94
95
96
97
98
99
100
101
102
            sleep 50
            try {
              String testName = "1. Check that app is running - 200 response code"
              String url = "http://kea.curex-project.eu/"
              String responseCode = sh(label: testName, script: "curl -m 10 -sLI -w '%{http_code}' $url -o /dev/null", returnStdout: true)
              if (responseCode != '200') {
                error("$testName: Returned status code = $responseCode when calling $url")
              }
            } catch (ignored) {
              currentBuild.result = 'FAILURE'
              echo "KEA Deployment Tests failed"
            }
a7a0d7905   George Vlahavas   Add initial Jenki...
103
104
105
          }
        }
      }
097a24e19   George Vlahavas   Fix whitespace
106
      stage('Stop and remove the Docker containers in DEV server') {
a7a0d7905   George Vlahavas   Add initial Jenki...
107
108
109
110
111
112
113
114
115
116
117
118
119
        steps {
          script {
            docker.withServer("$DEPLOYMENT_HOST", "$DEPLOYMENT_HOST_CREDENTIALS") {
              docker.withRegistry("$PRIVATE_REGISTRY" , 'artifactory') {
  
                echo 'Stop and remove the specified Docker containers from the DEV server'
                sh 'sh delete.sh'
              
              }
            }
          }
        }
      }
a7a0d7905   George Vlahavas   Add initial Jenki...
120
121
    }
  }
097a24e19   George Vlahavas   Fix whitespace
122