mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-14 10:13:05 +02:00
ec9622cde8
The release notes are generally a direct reflection of the git log. So, ease the burden of maintaining the release notes by using the git log to determine what needs to be added. Currently only non-dev items are required to be matched to a git commit but the goal is to account for all commits. The git history cache is generated from the git log but can be modified to correct typos and match the release notes as they evolve. The commit hash is used to identify commits that have already been added to the cache. There's plenty more to do here. For instance, links to the commits for each release item should be added to the release notes.
187 lines
6.5 KiB
Perl
Executable File
187 lines
6.5 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
####################################################################################################################################
|
|
# Travis CI Test Wrapper
|
|
####################################################################################################################################
|
|
|
|
####################################################################################################################################
|
|
# Perl includes
|
|
####################################################################################################################################
|
|
use strict;
|
|
use warnings FATAL => qw(all);
|
|
use Carp qw(confess longmess);
|
|
use English '-no_match_vars';
|
|
|
|
# Convert die to confess to capture the stack trace
|
|
$SIG{__DIE__} = sub { Carp::confess @_ };
|
|
|
|
use File::Basename qw(dirname);
|
|
use Getopt::Long qw(GetOptions);
|
|
use Cwd qw(abs_path);
|
|
|
|
use lib dirname($0) . '/lib';
|
|
use lib dirname(dirname($0)) . '/lib';
|
|
|
|
use pgBackRest::Common::Exception;
|
|
use pgBackRest::Common::Log;
|
|
|
|
use pgBackRestTest::Common::ExecuteTest;
|
|
use pgBackRestTest::Common::VmTest;
|
|
|
|
####################################################################################################################################
|
|
# Usage
|
|
####################################################################################################################################
|
|
|
|
=head1 NAME
|
|
|
|
travis.pl - Travis CI Test Wrapper
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
test.pl [options] doc|test
|
|
|
|
VM Options:
|
|
--vm docker container to build/test
|
|
|
|
General Options:
|
|
--help display usage and exit
|
|
=cut
|
|
|
|
####################################################################################################################################
|
|
# Command line parameters
|
|
####################################################################################################################################
|
|
my $strVm;
|
|
my $bHelp;
|
|
|
|
GetOptions ('help' => \$bHelp,
|
|
'vm=s' => \$strVm)
|
|
or pod2usage(2);
|
|
|
|
####################################################################################################################################
|
|
# Begin/end functions to track timing
|
|
####################################################################################################################################
|
|
my $lProcessBegin;
|
|
my $strProcessTitle;
|
|
|
|
sub processBegin
|
|
{
|
|
$strProcessTitle = shift;
|
|
|
|
&log(INFO, "Begin ${strProcessTitle}");
|
|
$lProcessBegin = time();
|
|
}
|
|
|
|
sub processEnd
|
|
{
|
|
&log(INFO, "End ${strProcessTitle} (" . (time() - $lProcessBegin) . 's)');
|
|
}
|
|
|
|
####################################################################################################################################
|
|
# Run in eval block to catch errors
|
|
####################################################################################################################################
|
|
eval
|
|
{
|
|
# Display version and exit if requested
|
|
if ($bHelp)
|
|
{
|
|
syswrite(*STDOUT, "Travis CI Test Wrapper\n");
|
|
|
|
syswrite(*STDOUT, "\n");
|
|
pod2usage();
|
|
|
|
exit 0;
|
|
}
|
|
|
|
if (@ARGV != 1)
|
|
{
|
|
syswrite(*STDOUT, "test|doc required\n\n");
|
|
pod2usage();
|
|
}
|
|
|
|
################################################################################################################################
|
|
# Paths
|
|
################################################################################################################################
|
|
my $strBackRestBase = dirname(dirname(abs_path($0)));
|
|
my $strReleaseExe = "${strBackRestBase}/doc/release.pl";
|
|
my $strTestExe = "${strBackRestBase}/test/test.pl";
|
|
|
|
logLevelSet(INFO, INFO, OFF);
|
|
|
|
################################################################################################################################
|
|
# Build documentation
|
|
################################################################################################################################
|
|
if ($ARGV[0] eq 'doc')
|
|
{
|
|
processBegin('LaTeX install');
|
|
executeTest(
|
|
'sudo apt-get install -y --no-install-recommends texlive-latex-base texlive-latex-extra texlive-fonts-recommended',
|
|
{bSuppressStdErr => true});
|
|
executeTest('sudo apt-get install -y texlive-font-utils latex-xcolor', {bSuppressStdErr => true});
|
|
processEnd();
|
|
|
|
processBegin('release documentation doc');
|
|
executeTest("${strReleaseExe} --build --no-gen", {bShowOutputAsync => true});
|
|
processEnd();
|
|
}
|
|
|
|
################################################################################################################################
|
|
# Run test
|
|
################################################################################################################################
|
|
elsif ($ARGV[0] eq 'test')
|
|
{
|
|
# VM must be defined
|
|
if (!defined($strVm))
|
|
{
|
|
confess &log(ERROR, '--vm is required');
|
|
}
|
|
|
|
# Only lint on U18
|
|
my $strParam = undef;
|
|
|
|
if ($strVm ne VM_U18)
|
|
{
|
|
$strParam .= '--no-lint';
|
|
}
|
|
|
|
processBegin("${strVm} build");
|
|
executeTest("${strTestExe} --vm-build --vm=${strVm}", {bShowOutputAsync => true});
|
|
processEnd();
|
|
|
|
processBegin("${strVm} test" . (defined($strParam) ? ": ${strParam}" : ''));
|
|
executeTest(
|
|
"${strTestExe} --no-gen --no-ci-config --vm-host=" . VM_U14 . " --vm-max=2 --vm=${strVm}" .
|
|
(defined($strParam) ? " ${strParam}" : ''),
|
|
{bShowOutputAsync => true});
|
|
processEnd();
|
|
}
|
|
|
|
################################################################################################################################
|
|
# Catch error
|
|
################################################################################################################################
|
|
else
|
|
{
|
|
confess &log(ERROR, 'invalid command ' . $ARGV[0]);
|
|
}
|
|
|
|
&log(INFO, "CI Complete");
|
|
|
|
# Exit with success
|
|
exit 0;
|
|
}
|
|
|
|
####################################################################################################################################
|
|
# Check for errors
|
|
####################################################################################################################################
|
|
or do
|
|
{
|
|
# If a backrest exception then return the code
|
|
exit $EVAL_ERROR->code() if (isException(\$EVAL_ERROR));
|
|
|
|
# Else output the unhandled error
|
|
print $EVAL_ERROR;
|
|
exit ERROR_UNHANDLED;
|
|
};
|
|
|
|
# It shouldn't be possible to get here
|
|
&log(ASSERT, 'execution reached invalid location in ' . __FILE__ . ', line ' . __LINE__);
|
|
exit ERROR_ASSERT;
|