node('docker') {
  stage('Checkout repo') {
    checkout(
      [
        $class: 'GitSCM',
        branches: scm.branches,
        doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
        extensions: scm.extensions,
        userRemoteConfigs: scm.userRemoteConfigs,
        extensions: [[
            $class: 'RelativeTargetDirectory',
            relativeTargetDir: 'doseme-util'
          ]] + [[$class: 'CleanCheckout']]
      ]
    )
  }

  stage('Pull perlbase image') {
    def perlbase_image = docker.image('doseme/perlbase:OTHER-821_update_perl_to_5.36')
    perlbase_image.pull()
  }

  def util_image

  stage('Setup util image') {
    util_image = docker.build("doseme-util", "-f doseme-util/Dockerfile doseme-util")
  }

  stage('Test util image') {
    try {
      util_image.inside("-e HOME=/home/jenkins") {
       sh '''
       /bin/bash -c "
           eval '\$(perl -I\$HOME/perl5/lib/perl5 -Mlocal::lib)' &&
           cpanm --mirror=https://darkpan.doseme.io --mirror=https://cpan.metacpan.org/ --mirror-only -v --installdeps ./doseme-util &&
           cd doseme-util &&
           dzil build --no-tgz &&
           cd DoseMe-Util-* &&
           (AUTHOR_TESTING=1 prove -blv -j8 --formatter=TAP::Formatter::JUnit > ../../junit.xml || true) &&
           (perl -Ilib t/test-coverage.t > ../../test-coverage-report.txt || true)
       "
       '''
      }
    } finally {
      junit 'junit.xml'
      archive 'test-coverage-report.txt'
    }
  }
}
