Blame view

kea_integration.groovy 2.72 KB
7f2cc895f   George Vlahavas   Add KEA-TIE integ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  /**
  * 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
  
      environment {
        
        APP_URL = "https://kea.curex-project.eu"
c2213cdf9   George Vlahavas   Use Master realm ...
15
        KEYCLOAK_URL = "https://keycloak.curex-project.eu/auth/realms/Master/protocol/openid-connect/token"
7f2cc895f   George Vlahavas   Add KEA-TIE integ...
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
        USER = credentials('keycloak-test-user')
        PASSWORD = credentials('keycloak-test-password')
        CLIENT_ID = "KEA"
  
      }
  
    stages {
      
      stage('Run tests') {
        steps {
          script {
            echo '*************'
            echo '*** TESTS ***'
            echo '*************'
            /* Here do your tests */
            try {
              // Get Keycloak auth token
              String token = sh(label: "get_keycloak_token", script: "curl -s -X POST $KEYCLOAK_URL -H 'Content-Type: application/x-www-form-urlencoded' -d 'username=$USER' -d 'password=$PASSWORD' -d 'grant_type=password'  -d 'client_id=$CLIENT_ID' | sed 's/.*access_token\":\"//g' | sed 's/\".*//g'", returnStdout: true)
  
              String testName = "KEA_TIE_I001"
              String url = "$APP_URL/api/v1/od/start"
              String responseCode = sh(label: testName, script: "curl -m 10 -sL -w '%{http_code}' -H 'Authorization: Bearer $token' -H 'Accept: application/json, text/plain, */*' $url", returnStdout: true)
              echo responseCode
              if (!responseCode.endsWith('200')) {
                error("$testName: Returned status code = $responseCode when calling $url")
              }
              String processId = responseCode.split(",")[1].split(":")[1].split('"')[1];
              url = "$APP_URL/api/v1/od/analyze/$processId"
9e372b60c   George Vlahavas   Remove -I switch ...
44
              responseCode = sh(label: testName, script: "curl -m 10 -sL -w '%{http_code}' -H 'Authorization: Bearer $token' -F file=@pcap-data/big.pcap $url -o /dev/null", returnStdout: true)
7f2cc895f   George Vlahavas   Add KEA-TIE integ...
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
              echo responseCode
              if (responseCode != '200') {
                error("$testName: Returned status code = $responseCode when calling $url")
              }
              url = "$APP_URL/api/v1/od/stop/$processId"
              responseCode = sh(label: testName, script: "curl -m 10 -sLI -w '%{http_code}' -H 'Authorization: Bearer $token' -H 'Accept: application/json, text/plain, */*' $url -o /dev/null", returnStdout: true)
              echo responseCode
              if (responseCode != '200') {
                error("$testName: Returned status code = $responseCode when calling $url")
              }
              
            } catch (ignored) {
              currentBuild.result = 'FAILURE'
              echo "KEA Deployment Tests failed"
            }
          }
        }
      }
  
    }
  }