pipeline { agent { label 'msspec_agent_amd64' } environment { DEB_REPOSITORY_URI = credentials('jenkins-eza-build-repository-uri') EMAIL_TO = credentials('jenkins-eza-build-email-to') } stages { stage('Test if a new build is required…') { steps { sh './test/check.eza.update.sh' } } stage('Building the .deb package if required with Docker…') { steps { sh """ if test -f ./test/.github.eza.upgrade; then ./build-deb-package-in-container.sh elif ! test -f ./test/.github.eza.upgrade; then echo ".deb file is uptodate" fi """ } } stage('Testing the package if available with Docker…') { steps { sh """ if test -f ./target/eza_*_amd64.deb; then ./test/test-deb-package-in-container.sh elif ! test -f ./target/eza_*_amd64.deb; then echo "No .deb file to test" fi """ } } stage('Send package if available to Debian repository…') { steps { echo 'Send amd64 package to Debian repository through SSH' sh """ if test -f ./target/eza_*_amd64.deb; then scp target/eza_*_amd64.deb "${USER}"@"${DEB_REPOSITORY_URI}":/tmp/ elif ! test -f ./target/eza_*_amd64.deb; then echo "No .deb file to send to remote APT repository." fi """ } } stage('Cleaning up…') { steps { echo 'Clean old and unused Docker images…' sh 'docker image prune --all --force' echo 'Clean generated files…' sh 'git clean -d -x --force --' } } } post { failure { emailext( to: "${EMAIL_TO}", subject: "Failed job: ${env.JOB_NAME}:${env.BUILD_NUMBER}", body: """ EXECUTED: Job \'${env.JOB_NAME}:${env.BUILD_NUMBER}\' Status: Failed View console output at ${env.BUILD_URL} - ${env.JOB_NAME}:${env.BUILD_NUMBER} """ ) } } }