pipeline { agent { dockerfile { label 'linux' dir 'ci' args '-v /home/jenkins/.ssh/known_hosts:/home/jenkins/.ssh/known_hosts:ro' } } options { disableConcurrentBuilds() /* manage how many builds we keep */ buildDiscarder(logRotator( numToKeepStr: '20', daysToKeepStr: '30', )) } environment { SITE_DOMAIN = 'lab.waku.org' GIT_AUTHOR_NAME = 'status-im-auto' GIT_AUTHOR_EMAIL = 'auto@status.im' PUPPETEER_SKIP_DOWNLOAD = 'true' } stages { stage('Pre') { steps { sh 'npm install --silent' /* TODO: Build the main page. */ sh 'mkdir -p build/docs' sh 'cp index.html build/docs/' } } stage('Examples') { parallel { stage('relay-angular-chat') { steps { script { buildExample() } } } stage('relay-reactjs-chat') { steps { script { buildExample() } } } stage('web-chat') { steps { script { buildExample() } } } stage('noise-js') { steps { script { buildExample() } } } stage('noise-rtc') { steps { script { buildExample() } } } stage('relay-direct-rtc') { steps { script { buildExample() } } } stage('rln-js') { steps { script { buildExample() } } } stage('rln-identity') { steps { script { buildExample() } } } } } stage('HTML Examples') { parallel { stage('relay-js') { steps { script { copyExample() } } } stage('light-js') { steps { script { copyExample() } } } } } stage('Publish') { steps { script { sh "echo ${SITE_DOMAIN} > build/docs/CNAME" sshagent(credentials: ['status-im-auto-ssh']) { sh 'node ci/deploy.js' } } } } } // post { // always { cleanWs() } // } } def buildExample(example=STAGE_NAME) { def dest = "${WORKSPACE}/build/docs/${example}" dir("examples/${example}") { sh 'npm install --silent' sh 'npm run build' sh "mkdir -p ${dest}" sh "cp -r build/. ${dest}" } } def copyExample(example=STAGE_NAME) { def source = "examples/${example}" def dest = "build/docs/${example}" sh "mkdir -p ${dest}" sh "cp -r ${source}/. ${dest}" }