Blame view

keycloak_test.groovy 4.94 KB
866567c3c   George Vlahavas   Add keycloak fail...
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
  /**
  * 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 {
        // 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/"
  
        HOST_IP = "116.203.166.220"
        DEPLOYMENT_HOST = "${HOST_IP}:2376"
        DEPLOYMENT_HOST_CREDENTIALS = "vm2-creds"
        
        // KEA specific
        APP_NAME = "KEA"
        APP_ENV = "production"
        APP_DEBUG = "true"
        APP_URL = "https://kea.curex-project.eu"
  
        KIBANA_PORT = "5601"
        GRAFANA_PORT = "3000"
        
        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"
        
        KEYCLOAK_REALM_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg9OruW+gRnBcm4S1da+TDj7LdDXTFykExlg2z5Fx/vv4ldJf1/vCAEdSP/HZXRMq5TRefnkzVyv66COmjyPjGNB2P240HOOzBPnU5ibsu7H2betZvR+uj/y9o5T3hUpPy+Gbb02i57xoKyECy+yRtPjmF63R0rFfFBV/LdScWdnltTY7YfmRe6dRcBZG5QZ8bKTWP40QUzwG2PnJpIEi3KdYp4qDx4LvXnSvIC0Z6E59R2oialMKQtPO5Xu9Ea6fYe4guqX9zdpoC+bcvxjJ275zj+RoFVaQHhGBZDPeK4VITmXiUWkBbTGQwEVY8ZY4b62kWFwjOg9yOv47s6N7cQIDAQAB"
        KEYCLOAK_LOAD_USER_FROM_DATABASE = "false"
        KEYCLOAK_USER_PROVIDER_CREDENTIAL = "name"
        KEYCLOAK_TOKEN_PRINCIPAL_ATTRIBUTE = "preferred_username"
        KEYCLOAK_APPEND_DECODED_TOKEN = "false"
        KEYCLOAK_ALLOWED_RESOURCES = "account"
  
        AUTH_ENABLED = "true"
      }
  
    stages {
             
      stage('Checkout the source code') {
        steps {
          checkout scm
        }
      }
      
    
      stage('Deploy Docker containers in DEV server') {
        steps {
          script {
            docker.withServer("$DEPLOYMENT_HOST", "$DEPLOYMENT_HOST_CREDENTIALS") {
              docker.withRegistry("$PRIVATE_REGISTRY" , 'artifactory') {
                echo 'Deploying the specified Docker containers in DEV server'
                sh 'sh deploy_hetzner.sh'
              }
            }
          }
        }
      }
  
      stage('Run tests') {
        steps {
          script {
            echo '*************'
            echo '*** TESTS ***'
            echo '*************'
            /* Here do your tests */
            sleep 90
            try {
              String testName = "KEA_keycloak_fail"
              String url = "$APP_URL/api/v1/od/status"
              String responseCode = sh(label: testName, script: "curl -m 10 -sLI -w '%{http_code}' -H 'Accept: application/json, text/plain, */*' $url -o /dev/null", returnStdout: true)
              if ( responseCode != '401' ) {
                error("$testName: Returned status code = $responseCode when calling $url")
              }
9dd323112   George Vlahavas   Add succesfull ke...
109
110
111
112
113
114
115
116
117
118
  
              testName = "KEA_keycloak_success"
              String keycloakURL = "https://keycloak-curex.gnubila.fr/auth/realms/Integration/protocol/openid-connect/token"
              String user = credentials('keycloak-test-user')
              String password = credentials('keycloak-test-password')
              String token = sh(label: "KEA_keycloak_token", script: "curl -s -X POST $keycloakURL -H 'Content-Type: application/x-www-form-urlencoded' -d 'username=$user' -d 'password=$password' -d 'grant_type=password'  -d 'client_id=KEA' | sed 's/.*access_token\":\"//g' | sed 's/\".*//g'", returnStdout: true)
              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)
              if ( responseCode != '401' ) {
                error("$testName: Returned status code = $responseCode when calling $url")
              }
971ec8495   George Vlahavas   Add catch statement
119
120
121
            } catch (ignored) {
              currentBuild.result = 'FAILURE'
              echo "KEA Keycloak Tests failed"
866567c3c   George Vlahavas   Add keycloak fail...
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
            }
          }
        }
      }
  
      stage('Stop and remove the Docker containers in DEV server') {
        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_hetzner.sh'
              }
            }
          }
        }
      }
    }
  }