#!/usr/bin/env groovy library 'status-jenkins-lib@v1.8.7' /* Options section can't access functions in objects. */ def isPRBuild = utils.isPRBuild() pipeline { agent { label 'linux && x86_64 && nix-2.19' } options { timestamps() /* Prevent Jenkins jobs from running forever */ timeout(time: 20, unit: 'MINUTES') /* Limit builds retained */ buildDiscarder(logRotator( numToKeepStr: '10', daysToKeepStr: '20', artifactNumToKeepStr: '10', )) /* Abort old PR builds. */ disableConcurrentBuilds( abortPrevious: isPRBuild ) } parameters { string( name: 'BUILD_TYPE', description: 'Specify build type. Values: pr / e2e / nightly / release', defaultValue: 'pr', ) } environment { LANG = "en_US.UTF-8" LC_ALL = "en_US.UTF-8" LANGUAGE = "en_US.UTF-8" TARGET = 'tests' BUILD_ENV = 'prod' NIX_CONF_DIR = "${env.WORKSPACE}/nix" LOG_FILE = utils.pkgFilename(ext: 'log', arch: 'tests') } stages { stage('Checks') { parallel { stage('Lint') { steps { sh """#!/bin/bash set -eo pipefail make lint CLJ_LINTER_PRINT_WARNINGS=true 2>&1 | tee ${LOG_FILE} """ } } stage('Unit Tests') { steps { sh """#!/bin/bash set -eo pipefail make test-unit 2>&1 | tee -a ${LOG_FILE} """ } } } } stage('Contract Tests') { steps { sh """#!/bin/bash set -eo pipefail make test-contract 2>&1 | tee -a ${LOG_FILE} """ } } stage('Integration Tests') { steps { sh """#!/bin/bash set -eo pipefail make test-integration 2>&1 | tee -a ${LOG_FILE} """ } } stage('Component Tests') { steps { sh """#!/bin/bash set -eo pipefail make component-test 2>&1 | tee -a ${LOG_FILE} """ } } stage('Upload') { steps { script { env.PKG_URL = s3.uploadArtifact(LOG_FILE) } } } } post { success { script { github.notifyPR(true) } } failure { script { github.notifyPR(false) } } always { sh 'make purge' } } }