#!/usr/bin/env groovy
/*
 * SPDX-License-Identifier: LGPL-2.1+
 *
 * Copyright © 2017-2018 Collabora Ltd
 *
 * This package is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This package is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this package.  If not, see
 * <http://www.gnu.org/licenses/>.
 */
@Library('steamos-ci') _

pipeline {
  agent none

  options {
    timestamps()
    skipDefaultCheckout()
  }

  stages {
    stage ("libcapsule") {
      agent {
        label 'docker-slave'
      }
      environment {
        HOME="${env.WORKSPACE}"
        TMPDIR="${env.WORKSPACE}"
        PYTHONUNBUFFERED="1"
      }
      steps {
        sh '''
        git config --global user.name Jenkins
        git config --global user.email nobody@example.com
        '''
        checkout changelog: true, poll: true, scm: [
          $class: 'GitSCM',
          branches: [[name: "origin/master"]],
          extensions: [[$class: 'PruneStaleBranch'], [$class: 'RelativeTargetDirectory', relativeTargetDir: 'libcapsule']],
          userRemoteConfigs: [[name: 'origin', url: 'https://gitlab.collabora.com/vivek/libcapsule.git', credentialsId: null]]
        ]
        script {
          if (env.CI_DOCKER_REGISTRY_CRED == '') {
            dockerRegistryCred = null;
          }
          else {
            dockerRegistryCred = env.CI_DOCKER_REGISTRY_CRED;
          }

          docker.withRegistry("https://${env.CI_DOCKER_REGISTRY}", dockerRegistryCred) {
            docker.image("${env.CI_DOCKER_REGISTRY}/steamos/package-builder:stretch").inside('') {
              sh '''
              set -e
              mkdir -p debs
              echo "jenkins::$(id -u):$(id -g):Jenkins:$(pwd):/bin/sh" > passwd
              export NSS_WRAPPER_PASSWD=$(pwd)/passwd
              export NSS_WRAPPER_GROUP=/dev/null
              export LD_PRELOAD=libnss_wrapper.so
              ( cd libcapsule; deb-build-snapshot -d ../debs --no-check -s -u localhost )
              '''
            }
          }
        }

        stash name: 'debs', includes: 'debs/**'
      }
      post {
        always {
          deleteDir()
        }
      }
    }

    stage ("pressure-vessel") {
      agent {
        label 'docker-slave'
      }
      environment {
        HOME="${env.WORKSPACE}"
        TMPDIR="${env.WORKSPACE}"
        PYTHONUNBUFFERED="1"
      }
      steps {
        sh '''
        git config --global user.name Jenkins
        git config --global user.email nobody@example.com
        '''
        checkoutCollaboraGitlab('steam/pressure-vessel', 'master', 'src')
        unstash 'debs'

        script {
          if (env.CI_DOCKER_REGISTRY_CRED == '') {
            dockerRegistryCred = null;
          }
          else {
            dockerRegistryCred = env.CI_DOCKER_REGISTRY_CRED;
          }

          docker.withRegistry("https://${env.CI_DOCKER_REGISTRY}", dockerRegistryCred) {
            docker.image("${env.CI_DOCKER_REGISTRY}/steamos/package-builder:jessie").inside('') {
              sh '''
              set -e
              echo "jenkins::$(id -u):$(id -g):Jenkins:$(pwd):/bin/sh" > passwd
              export NSS_WRAPPER_PASSWD=$(pwd)/passwd
              export NSS_WRAPPER_GROUP=/dev/null
              export LD_PRELOAD=libnss_wrapper.so
              mv debs/*.dsc debs/*.tar.* src/
              ( cd src; make sysroot=/ )
              '''
            }
          }
        }

        archiveArtifacts 'src/pressure-vessel-*-bin.tar.gz'
        archiveArtifacts 'src/pressure-vessel-*-bin+src.tar.gz'
      }
      post {
        always {
          deleteDir()
        }
      }
    }
  }
}
/* vim:set sw=2 sts=2 et: */