Skip to content

Commit

Permalink
Update GitHub Actions
Browse files Browse the repository at this point in the history
  • Loading branch information
briandfoy committed Jan 20, 2022
1 parent 74abd36 commit f1ed56f
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 20 deletions.
73 changes: 66 additions & 7 deletions .github/workflows/linux.yml
@@ -1,11 +1,30 @@
# brian's standard GitHub Actions Ubuntu config for Perl 5 modules
# version 20220118.001
# https://github.com/briandfoy/github_actions
# https://github.com/features/actions
# This file is licensed under the Artistic License 2.0
name: ubuntu

on:
push:
branches:
- '*'
- '**'
- '!**windows**'
- '!**macos**'
tags-ignore:
- '*'
# I tag release pushes but those should have already been tested
- 'release-*'
paths-ignore:
# list all the files which are irrelevant to the tests
# non-code, support files, docs, etc
- '.appveyor.yml'
- '.github/workflows/macos.yml'
- '.github/workflows/windows.yml'
- '.gitignore'
- '.releaserc'
- 'Changes'
- 'LICENSE'
- 'README.pod'
pull_request:

jobs:
Expand All @@ -14,7 +33,6 @@ jobs:
strategy:
matrix:
os:
- ubuntu-16.04
- ubuntu-18.04
- ubuntu-20.04
perl-version:
Expand All @@ -40,17 +58,58 @@ jobs:
- name: Platform check
run: uname -a
- name: Perl version check
run: perl -V
run: |
perl -V
perl -v | perl -0777 -ne 'm/(v5\.\d+)/ && print "PERL_VERSION=$1"' >> $GITHUB_ENV
# Some older versions of Perl have trouble with hostnames in certs. I
# haven't figured out why.
- name: Setup environment
run: |
echo "PERL_LWP_SSL_VERIFY_HOSTNAME=0" >> $GITHUB_ENV
# I had some problems with openssl on Ubuntu, so I punted by installing
# cpanm first, which is easy. I can install IO::Socket::SSL with that,
# then switch back to cpan. I didn't explore this further, but what you
# see here hasn't caused problems for me.
# Need HTTP::Tiny 0.055 or later.
- name: Install cpanm and multiple modules
run: |
curl -L https://cpanmin.us | perl - App::cpanminus
cpanm --notest IO::Socket::SSL
cpanm --notest App::Cpan
cpan -M https://www.cpan.org -T ExtUtils::MakeMaker
cpanm --notest IO::Socket::SSL App::Cpan HTTP::Tiny
cpan -M https://www.cpan.org -T ExtUtils::MakeMaker Test::Manifest
# Install the dependencies, again not testing them. This installs the
# module in the current directory, so we end up installing the module,
# but that's not a big deal.
- name: Install dependencies
run: |
cpan -M https://www.cpan.org -T .
- name: Run tests
run: |
perl Makefile.PL
make test
# Running tests in parallel should be faster, but it's also more
# tricky in cases where different tests share a feature, such as a
# file they want to write to. Parallel tests can stomp on each other.
# Test in parallel to catch that, because other people will test your
# stuff in parallel.
- name: Run tests in parallel
run: |
perl Makefile.PL
HARNESS_OPTIONS=j10 make test
# The disttest target creates the distribution, unwraps it, changes
# into the dist dir, then runs the tests there. That checks that
# everything that should be in the dist is in the dist. If you forget
# to update MANIFEST with new modules, data files, and so on, you
# should notice the error.
- name: Run distribution tests
run: |
perl Makefile.PL
make disttest
# And, coverage reports, but only under 5.10 and later since modern
# Devel::Cover instances don't work with 5.8
- name: Run coverage tests
if: env.PERL_VERSION != 'v5.8'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cpan -M https://www.cpan.org -T Devel::Cover Devel::Cover::Report::Coveralls
cover -test -report coveralls
71 changes: 66 additions & 5 deletions .github/workflows/macos.yml
@@ -1,33 +1,94 @@
# brian's standard GitHub Actions macOS config for Perl 5 modules
# version 20220118.001
# https://github.com/briandfoy/github_actions
# https://github.com/features/actions
# This file is licensed under the Artistic License 2.0
name: macos

on:
push:
branches:
- '*'
- '**'
- '!**windows**'
- '!**linux**'
tags-ignore:
- '*'
# I tag release pushes but those should have already been tested
- 'release-*'
paths-ignore:
# list all the files which are irrelevant to the tests
# non-code, support files, docs, etc
- '.appveyor.yml'
- '.github/workflows/ubuntu.yml'
- '.github/workflows/windows.yml'
- '.gitignore'
- '.releaserc'
- 'Changes'
- 'LICENSE'
- 'README.pod'
pull_request:

jobs:
perl:
runs-on: macOS-latest

steps:
- uses: actions/checkout@v2
- name: Platform check
run: uname -a
- name: Set up Perl
run: brew install perl
run: |
brew install perl
ls -d /usr/local/Cellar/perl/*/bin | head -1 >> $GITHUB_PATH
perl -v | perl -0777 -ne 'm/(v5\.\d+)/ && print "PERL_VERSION=$1"' >> $GITHUB_ENV
- name: Perl version check
run: perl -V
# cpan can operate with https, but we need IO::SSL::Socket, which
# does not come with Perl.
#
# When using cpan, use -M to specify the CDN-backed www.cpan.org
# mirror. I've noticed that letting CPAN.pm auto-choose mirrors
# sometimes selects things that the action can't reach.
#
# Also, use the -T option to not test the dependencies. Assume these
# mainline modules are good and save lots of CI minutes.
- name: Prepare cpan
run: |
openssl version
cpan -M https://www.cpan.org -T Net::SSLeay IO::Socket::SSL ExtUtils::MakeMaker
cpan -M http://www.cpan.org -T IO::Socket::SSL HTTP::Tiny
cpan -M https://www.cpan.org -T ExtUtils::MakeMaker Test::Manifest
# Install the dependencies, again not testing them. This installs the
# module in the current directory, so we end up installing the module,
# but that's not a big deal.
- name: Install dependencies
run: |
cpan -M https://www.cpan.org -T .
- name: Run tests
run: |
perl Makefile.PL
make test
# Running tests in parallel should be faster, but it's also more
# tricky in cases where different tests share a feature, such as a
# file they want to write to. Parallel tests can stomp on each other.
# Test in parallel to catch that, because other people will test your
# stuff in parallel.
- name: Run tests in parallel
run: |
perl Makefile.PL
HARNESS_OPTIONS=j10 make test
# The disttest target creates the distribution, unwraps it, changes
# into the dist dir, then runs the tests there. That checks that
# everything that should be in the dist is in the dist. If you forget
# to update MANIFEST with new modules, data files, and so on, you
# should notice the error.
- name: Run distribution tests
run: |
perl Makefile.PL
make disttest
# And, coverage reports, but only under 5.10 and later since modern
# Devel::Cover instances don't work with 5.8
- name: Run coverage tests
if: env.PERL_VERSION != 'v5.8'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cpan -M https://www.cpan.org -T Devel::Cover Devel::Cover::Report::Coveralls
cover -test -report coveralls
67 changes: 59 additions & 8 deletions .github/workflows/windows.yml
@@ -1,35 +1,86 @@
# brian's standard GitHub Actions Windows config for Perl 5 modules
# version 20220118.001
# https://github.com/briandfoy/github_actions
# https://github.com/features/actions
# This file is licensed under the Artistic License 2.0
name: windows

on:
push:
branches:
- '*'
- '**'
- '!**linux**'
- '!**macos**'
tags-ignore:
- '*'
# I tag release pushes but those should have already been tested
- 'release-*'
paths-ignore:
# list all the files which are irrelevant to the tests
# non-code, support files, docs, etc
- '.appveyor.yml'
- '.github/workflows/macos.yml'
- '.github/workflows/ubuntu.yml'
- '.gitignore'
- '.releaserc'
- 'Changes'
- 'LICENSE'
- 'README.pod'
pull_request:

jobs:
perl:
runs-on: ${{ matrix.os }}
# store any secrets in an environment named "testing"
strategy:
matrix:
os:
- windows-2019
- windows-2016

- windows-2022
steps:
- uses: actions/checkout@v2
- name: Set up Perl
run: |
choco install strawberryperl
echo "C:\strawberry\c\bin" >> $GITHUB_PATH
echo "C:\strawberry\perl\site\bin" >> $GITHUB_PATH
echo "C:\strawberry\perl\bin" >> $GITHUB_PATH
echo "C:\strawberry\c\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
echo "C:\strawberry\perl\site\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
echo "C:\strawberry\perl\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Perl version
run: perl -V
# Install the dependencies, again not testing them. This installs the
# module in the current directory, so we end up installing the module,
# but that's not a big deal.
- name: Install dependencies
run: cpan -M https://www.cpan.org -T .
run: |
cpan -M https://www.cpan.org -T .
cpan -M https://www.cpan.org -T Test::Manifest
- name: Run tests
run: |
perl Makefile.PL
make test
# Running tests in parallel should be faster, but it's also more
# tricky in cases where different tests share a feature, such as a
# file they want to write to. Parallel tests can stomp on each other.
# Test in parallel to catch that, because other people will test your
# stuff in parallel.
- name: Run tests in parallel
env:
HARNESS_OPTIONS: j10
run: |
perl Makefile.PL
make test
# The disttest target creates the distribution, unwraps it, changes
# into the dist dir, then runs the tests there. That checks that
# everything that should be in the dist is in the dist. If you forget
# to update MANIFEST with new modules, data files, and so on, you
# should notice the error.
- name: Run distribution tests
run: |
perl Makefile.PL
make disttest
# And, coverage reports
- name: Run coverage tests
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cpan -M https://www.cpan.org -T Devel::Cover Devel::Cover::Report::Coveralls
cover -test -report coveralls

0 comments on commit f1ed56f

Please sign in to comment.