Jenkinsfile 5.12 KB
Newer Older
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
1
node('container') {
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
2 3
  docker.image('selenium/standalone-chrome:latest').pull()
  docker.image('selenium/standalone-firefox:latest').pull()
4
  docker.image('selenium/standalone-chrome:latest').withRun('-p 4444:4444 --shm-size=1g -v /opt/openvidu:/opt/openvidu') { c ->
5
    sh 'rm -rf /opt/openvidu/barcode.* && wget https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/barcode.y4m -P /opt/openvidu'
6
    sh 'rm -rf /opt/openvidu/fakeaudio.* && wget https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/fakeaudio.wav -P /opt/openvidu'
7
    docker.image('selenium/standalone-firefox:latest').withRun('-p 4445:4444 --shm-size=1g') { d ->
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
8
      def mycontainer = docker.image('openvidu/openvidu-test-e2e:$DISTRO')
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
9
      mycontainer.pull()
10
      mycontainer.inside("-p 4200:4200 -p 4443:4443 -u root -e MY_UID=0 -v /var/run/docker.sock:/var/run/docker.sock:rw -v /dev/shm:/dev/shm -v /opt/openvidu:/opt/openvidu") {
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
11
        stage('Preparation') {
12
          sh 'rm -rf ~/.m2 || true'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
13
          sh 'rm -rf openvidu || true'
14
          sh 'rm -rf kurento-java || true'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
15
          sh 'rm -rf /opt/openvidu/recordings/* || true'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
16
          sh 'git clone https://github.com/OpenVidu/openvidu.git'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
17
          sh 'cd openvidu && git checkout $OPENVIDU_COMMIT'
18
          sh(script: '''#!/bin/bash
19 20
            if $KURENTO_JAVA_SNAPSHOT ; then
            git clone https://github.com/Kurento/kurento-java.git
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
21
            cd kurento-java && MVN_VERSION=$(mvn --batch-mode -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
22
            cd ../openvidu && mvn --batch-mode versions:set-property -Dproperty=version.kurento -DnewVersion=$MVN_VERSION
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
23
            mvn dependency:get -DrepoUrl=https://maven.openvidu.io/repository/snapshots/ -Dartifact=org.kurento:kurento-client:$MVN_VERSION
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
24
            mvn dependency:get -DrepoUrl=https://maven.openvidu.io/repository/snapshots/ -Dartifact=org.kurento:kurento-jsonrpc-client-jetty:$MVN_VERSION
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
25
            mvn dependency:get -DrepoUrl=https://maven.openvidu.io/repository/snapshots/ -Dartifact=org.kurento:kurento-jsonrpc-server:$MVN_VERSION
26
            fi
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
27 28 29
        '''.stripIndent())
          sh(script: '''#!/bin/bash
            if $KURENTO_MEDIA_SERVER_DEV ; then
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
30
            DISTRO=`lsb_release --codename | cut -f2`
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
31 32
            sudo echo "deb [arch=amd64] http://ubuntu.openvidu.io/dev $DISTRO kms6" | sudo tee /etc/apt/sources.list.d/kurento.list
            sudo apt-get update && sudo apt-get upgrade -y kurento-media-server
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
33
            fi
34
        '''.stripIndent())
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
35 36
        }
        stage('OpenVidu parent build') {
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
37
          sh 'cd openvidu/openvidu-java-client && mvn --batch-mode versions:set -DnewVersion=1.0.0-TEST'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
38
          sh 'cd openvidu && mvn --batch-mode -DskipTests=true clean install'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
39 40 41 42 43 44 45 46
        }
        stage('OpenVidu Browser build') {
          sh 'cd openvidu/openvidu-browser && npm install --unsafe-perm && npm run build && npm link'
        }
        stage('OpenVidu Node Client build') {
          sh 'cd openvidu/openvidu-node-client && npm install --unsafe-perm && npm run build && npm link'
        }
        stage('OpenVidu TestApp build') {
47
          sh 'cd openvidu/openvidu-testapp && npm install --unsafe-perm && npm link openvidu-browser && npm link openvidu-node-client && ./node_modules/@angular/cli/bin/ng build --prod'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
48 49 50
        }
        stage ('Environment Launch') {
          sh 'openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -subj "/CN=www.mydom.com/O=My Company LTD./C=US" -keyout openvidu/openvidu-testapp/dist/key.pem -out openvidu/openvidu-testapp/dist/cert.pem'  
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
51 52
          sh 'cd openvidu/openvidu-testapp/dist && http-server -S -p 4200 &> /testapp.log &'
          sh '/usr/bin/kurento-media-server &> /kms.log &'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
53
          sh 'cd openvidu/openvidu-server && mvn --batch-mode clean compile package'
54
          sh(script: '''#!/bin/bash
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
55 56 57
            if [ "$DOCKER_RECORDING_VERSION" != "default" ]; then
              echo "Using custom openvidu-recording tag: $DOCKER_RECORDING_VERSION"
              cd openvidu/openvidu-server/target && java -jar -Dopenvidu.publicurl=https://172.17.0.1:4443/ -Dopenvidu.recording=true -Dopenvidu.recording.version=$DOCKER_RECORDING_VERSION openvidu-server-*.jar &> /openvidu-server.log &
58
            else
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
59
              echo "Using default openvidu-recording tag"
60 61 62
              cd openvidu/openvidu-server/target && java -jar -Dopenvidu.publicurl=https://172.17.0.1:4443/ -Dopenvidu.recording=true openvidu-server-*.jar &> /openvidu-server.log &
            fi
          '''.stripIndent())
63
          sh 'until $(curl --insecure --output /dev/null --silent --head --fail https://OPENVIDUAPP:MY_SECRET@localhost:4443/); do echo "Waiting for openvidu-server..."; sleep 2; done'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
64 65 66
        }
        stage ('E2E tests') {
          try {
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
67
            sh 'cd openvidu/openvidu-test-e2e && sudo mvn --batch-mode -DAPP_URL=https://172.17.0.1:4200/ -DOPENVIDU_URL=https://172.17.0.1:4443/ -DREMOTE_URL_CHROME=http://172.17.0.1:4444/wd/hub/ -DREMOTE_URL_FIREFOX=http://172.17.0.1:4445/wd/hub/ test'
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
68
          }
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
69 70 71
          finally {
            junit "openvidu/openvidu-test-e2e/**/target/surefire-reports/TEST-*.xml"
          }   
Pablo Fuente Pérez's avatar
Pablo Fuente Pérez committed
72 73
        }
      }
74 75 76
    }
  }
}