node('docker') {
  stage('Checkout repo') {

    checkout(
      [
        $class: 'GitSCM',
        branches: scm.branches,
        doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
        extensions: scm.extensions,
        userRemoteConfigs: scm.userRemoteConfigs,
        extensions: [[
            $class: 'RelativeTargetDirectory',
            relativeTargetDir: 'data-structure-validate'
          ]] + [[$class: 'CleanCheckout']]
      ]
    )

  }

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

  def dsv_image

  stage('Setup DSV image') {
    dsv_image = docker.build("data-structure-validate", "-f data-structure-validate/Dockerfile data-structure-validate")
  }

  stage('Test DSV image') {
    dsv_image.inside {
      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 ./data-structure-validate &&
            cd data-structure-validate &&
            dzil build --no-tgz &&
            cd Data-Structure-Validate-* &&
            AUTHOR_TESTING=1 prove -bv -j8 --failures -Ilib --archive ../../test-output.tgz &&
            cd .. &&
            dzil clean &&
            cd .. &&
            rm -rf test-output &&
            mkdir -p test-output &&
            tar xzf test-output.tgz -C test-output
        "
      '''
    }
    step([$class: 'TapPublisher', testResults: 'test-output/*/*.t'])
  }
}
