openvidu/openvidu-test-e2e/jenkins/commonFunctions.groovy

198 lines
8.5 KiB
Groovy

#!groovy
def prepareTestingEnvironment() {
println('Cleaning environment')
parallel (
'Deleting folder /opt/openvidu and create permissions': {
sh 'sudo rm -rf /opt/openvidu/* || true'
sh 'sudo mkdir -p /opt/openvidu/recordings && sudo chmod 777 /opt/openvidu/recordings'
},
'Deleting repository openvidu': {
sh 'sudo rm -rf openvidu || true'
},
'Deleting repository openvidu-pro': {
sh 'sudo rm -rf openvidu-pro || true'
},
'Deleting repository replication-manager': {
sh 'sudo rm -rf replication-manager || true'
},
'Deleting repository kurento-java': {
sh 'sudo rm -rf kurento-java || true'
},
'Deleting openvidu .m2 dependencies': {
sh 'sudo rm -rf /opt/openvidu-cache/.m2/repository/io/openvidu || true'
},
'Deleting kurento .m2 dependencies': {
sh 'sudo rm -rf /opt/openvidu-cache/.m2/repository/org/kurento || true'
},
'Removing stranded containers': {
removeStrandedContainers(true)
},
)
println('Pulling containers and downloading files')
parallel (
'Pull openvidu/openvidu-test-e2e': {
if (env.DISTRO) {
docker.image("openvidu/openvidu-test-e2e:${DISTRO}").pull()
}
},
'Pull openvidu/openvidu-pro-test-e2e': {
if (env.DISTRO) {
docker.image("openvidu/openvidu-pro-test-e2e:${DISTRO}").pull()
}
},
'Pull selenium/standalone-chrome': {
if (env.CHROME_VERSION) {
docker.image("selenium/standalone-chrome:${CHROME_VERSION}").pull()
} else {
docker.image('selenium/standalone-chrome:latest').pull()
}
},
'Pull selenium/standalone-firefox': {
if (env.FIREFOX_VERSION) {
docker.image("selenium/standalone-firefox:${FIREFOX_VERSION}").pull()
} else {
docker.image('selenium/standalone-firefox:latest').pull()
}
},
'Pull selenium/standalone-opera': {
if (env.OPERA_VERSION) {
docker.image("selenium/standalone-opera:${OPERA_VERSION}").pull()
} else {
docker.image('selenium/standalone-opera:latest').pull()
}
},
'Pull selenium/standalone-edge': {
if (env.EDGE_VERSION) {
docker.image("selenium/standalone-edge:${EDGE_VERSION}").pull()
} else {
docker.image('selenium/standalone-edge:latest').pull()
}
},
'Pull budtmo/docker-android-x86-12.0': {
docker.image('budtmo/docker-android-x86-12.0:latest').pull()
},
'Pull openvidu/mediasoup-controller': {
if (env.MEDIASOUP_CONTROLLER_VERSION) {
docker.image("openvidu/mediasoup-controller:${MEDIASOUP_CONTROLLER_VERSION}").pull()
}
},
'Pull kurento/kurento-media-server': {
if (env.KURENTO_MEDIA_SERVER_IMAGE) {
docker.image("${KURENTO_MEDIA_SERVER_IMAGE}").pull()
}
},
'Download fake videos': {
sh(script: '''#!/bin/bash -xe
FAKE_VIDEO1=/opt/openvidu-cache/barcode.y4m
FAKE_VIDEO2=/opt/openvidu-cache/girl.mjpeg
if [ ! -f ${FAKE_VIDEO1} ]; then
sudo curl --location https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/barcode.y4m --create-dirs --output /opt/openvidu-cache/barcode.y4m
else
echo "File ${FAKE_VIDEO1} already exists"
fi
if [ ! -f ${FAKE_VIDEO2} ]; then
sudo curl --location https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/girl.mjpeg --create-dirs --output /opt/openvidu-cache/girl.mjpeg
else
echo "File ${FAKE_VIDEO2} already exists"
fi
sudo cp /opt/openvidu-cache/barcode.y4m /opt/openvidu/barcode.y4m
sudo cp /opt/openvidu-cache/girl.mjpeg /opt/openvidu/girl.mjpeg
'''.stripIndent())
},
'Download fake audio': {
sh(script: '''#!/bin/bash -xe
FAKE_AUDIO1=/opt/openvidu-cache/fakeaudio.wav
FAKE_AUDIO2=/opt/openvidu-cache/stt-test.wav
if [ ! -f ${FAKE_AUDIO1} ]; then
sudo curl --location https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/fakeaudio.wav --create-dirs --output /opt/openvidu-cache/fakeaudio.wav
else
echo "File ${FAKE_AUDIO1} already exists"
fi
if [ ! -f ${FAKE_AUDIO2} ]; then
sudo curl --location https://github.com/OpenVidu/openvidu/raw/master/openvidu-test-e2e/docker/stt-test.wav --create-dirs --output /opt/openvidu-cache/stt-test.wav
else
echo "File ${FAKE_AUDIO2} already exists"
fi
sudo cp /opt/openvidu-cache/fakeaudio.wav /opt/openvidu/fakeaudio.wav
sudo cp /opt/openvidu-cache/stt-test.wav /opt/openvidu/stt-test.wav
'''.stripIndent())
},
'Download custom layout': {
sh 'sudo curl --location https://raw.githubusercontent.com/OpenVidu/openvidu/master/openvidu-test-e2e/docker/my-custom-layout/index.html --create-dirs --output /opt/openvidu-cache/test-layouts/layout1/index.html'
}
)
}
def removeStrandedContainers(removeTestingContainers) {
println('Removing stranded containers')
script {
env.removeTestingContainers = removeTestingContainers
sh(script: '''#!/bin/bash -xe
declare -a arr=("selenium/standalone-chrome:"
"selenium/standalone-firefox:"
"selenium/standalone-opera:"
"selenium/standalone-edge:"
"budtmo/docker-android"
"openvidu/mediasoup-controller:"
"openvidu/openvidu-server-pro:"
"redis:"
"openvidu/openvidu-coturn:"
"openvidu/openvidu-proxy:"
"openvidu/replication-manager:"
"docker.elastic.co/elasticsearch/elasticsearch:"
"docker.elastic.co/kibana/kibana:"
"docker.elastic.co/beats/metricbeat-oss:"
"docker.elastic.co/beats/filebeat-oss:"
"openvidu/openvidu-pro-dind-media-node:"
"kurento/kurento-media-server"
"openvidu/media-node-controller:"
"openvidu/speech-to-text-service:")
if [ "${removeTestingContainers}" == "true" ]; then
arr+=("openvidu/openvidu-test-e2e:")
arr+=("openvidu/openvidu-pro-test-e2e:")
fi
for image in "${arr[@]}"
do
docker ps -a | awk '{ print $1,$2 }' | grep "${image}" | awk '{ print $1 }' | xargs -I {} docker rm -f {} || true
done
docker ps -a
'''.stripIndent())
}
}
def storeFolderInCache(folderToStore, cacheDestiny) {
script {
env.folderToStore = folderToStore
env.cacheDestiny = cacheDestiny
sh(script: '''#!/bin/bash -xe
if [[ (-d ${folderToStore}) && ("$(ls -A ${folderToStore})") ]]; then
echo "Storing in cache"
sudo mkdir -p ${cacheDestiny}
sudo mv ${folderToStore}/* ${cacheDestiny}
else
echo "Folder to store in cache does not exist or is empty"
fi
'''.stripIndent())
}
}
def loadFolderFromCache(cacheFolder, destinyFolder) {
script {
env.cacheFolder = cacheFolder
env.destinyFolder = destinyFolder
sh(script: '''#!/bin/bash -xe
if [[ (-d ${cacheFolder}) && ("$(ls -A ${cacheFolder})") ]]; then
echo "Loading from cache"
sudo mkdir -p ${destinyFolder}
sudo mv ${cacheFolder}/* ${destinyFolder}
sudo chown -R 1000:1000 ${destinyFolder} && sudo chmod 777 ${destinyFolder}
else
echo "Cache folder does not exist or is empty"
fi
'''.stripIndent())
}
}
return this