pipeline { agent { dockerfile { label 'linux' dir 'ci' } } options { disableConcurrentBuilds() /* manage how many builds we keep */ buildDiscarder(logRotator( numToKeepStr: '20', daysToKeepStr: '30', )) } environment { SITE_DOMAIN = 'examples.waku.org' GIT_AUTHOR_NAME = 'status-im-auto' GIT_AUTHOR_EMAIL = 'auto@status.im' GIT_SSH_COMMAND = 'ssh -o StrictHostKeyChecking=no' 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('eth-pm') { steps { script { buildExample() } } } stage('relay-angular-chat') { steps { script { buildExample() } } } stage('relay-reactjs-chat') { steps { script { buildExample() } } } stage('store-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('HTML Examples') { parallel { stage('relay-js') { steps { script { copyExample() } } } stage('store-js') { steps { script { copyExample() } } } stage('light-js') { steps { script { copyExample() } } } stage('light-chat') { 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}" }