#!/usr/bin/perl -w ########################################### # smoke-me -- Smoke-test a distro tarball # in a number of Docker containers. # Mike Schilli, 2014 (m@perlmeister.com) ########################################### use strict; use Sysadm::Install qw(:all); use Log::Log4perl qw( :easy ); use File::Basename; use Getopt::Std; use File::Temp qw( tempdir ); getopts( "v", \my %opts ); my( $tarball_path ) = @ARGV; die "usage: $0 tarball" if !defined $tarball_path; my $tempdir = tempdir( CLEANUP => 1 ); cp $tarball_path, $tempdir; my $tarball = basename $tarball_path; my $log_level = ( $opts{ v } ? $DEBUG : $INFO ); Log::Log4perl->easy_init( $log_level ); for my $container_path ( ) { cd $container_path; my $container = basename $container_path; my @verbose = ( $opts{ v } ? ("-v") : () ); my $rc = sysrun "docker", "run", "-i", "-v", "$tempdir:/mnt/tmp", "$container-perltest", "cpanm", @verbose, "/mnt/tmp/$tarball"; INFO "Test in container '$container' ", ( $rc ? "failed" : "OK" ); cdback; }