summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrian d foy <briandfoy@pobox.com>2024-01-15 16:09:27 -0500
committerbrian d foy <briandfoy@pobox.com>2024-01-15 16:09:27 -0500
commit9d7a29a5be36833c5b697ebcb336b35558ac6856 (patch)
tree621dcd978e6ad3dc07843fb800b3fa7faf4f67c2
parent457246d556bf224713d25e0d5fe1d7cf0084de38 (diff)
Update workflows
-rw-r--r--.github/workflows/linux.yml23
-rw-r--r--.github/workflows/release.yml68
-rw-r--r--.github/workflows/windows.yml1
3 files changed, 65 insertions, 27 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 7b6b6d1..8502a11 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -1,5 +1,5 @@
# brian's standard GitHub Actions Ubuntu config for Perl 5 modules
-# version 20220902.001
+# version 20230718.001
# https://github.com/briandfoy/github_workflows
# https://github.com/features/actions
# This file is licensed under the Artistic License 2.0
@@ -55,6 +55,7 @@ jobs:
- '5.30'
- '5.32'
- '5.34'
+ - '5.36'
- 'latest'
container:
image: perl:${{ matrix.perl-version }}
@@ -79,14 +80,17 @@ jobs:
- name: Install cpanm and multiple modules
run: |
curl -L https://cpanmin.us | perl - App::cpanminus
- cpanm --notest IO::Socket::SSL App::Cpan HTTP::Tiny
- cpan -M https://www.cpan.org -T ExtUtils::MakeMaker Test::Manifest
+ cpanm --notest IO::Socket::SSL App::Cpan HTTP::Tiny ExtUtils::MakeMaker Test::Manifest Test::More
# 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 .
+ cpanm --notest --installdeps --with-suggests --with-recommends .
+ - name: Show cpanm failures
+ if: ${{ failure() }}
+ run: |
+ cat /home/runner/.cpanm/work/*/build.log
- name: Run tests
run: |
perl Makefile.PL
@@ -95,7 +99,7 @@ jobs:
- name: Author tests
if: hashFiles('xt') != ''
run: |
- cpan -M https://www.cpan.org -T Test::CPAN::Changes
+ cpanm --notest Test::CPAN::Changes
prove -r -b xt
# Running tests in parallel should be faster, but it's also more
# tricky in cases where different tests share a feature, such as a
@@ -116,13 +120,14 @@ jobs:
perl Makefile.PL
make disttest
make clean
-# And, coverage reports, but only under 5.10 and later since modern
-# Devel::Cover instances don't work with 5.8
+# And, coverage reports, but only under 5.12 and later since modern
+# Devel::Cover instances don't work with earlier versions as of
+# Devel::Cover 1.39
- name: Run coverage tests
- if: env.PERL_VERSION != 'v5.8'
+ if: env.PERL_VERSION != 'v5.8' && env.PERL_VERSION != 'v5.10'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
- cpan -M https://www.cpan.org -T Devel::Cover Devel::Cover::Report::Coveralls
+ cpanm --notest Devel::Cover Devel::Cover::Report::Coveralls
perl Makefile.PL
cover -test -report coveralls
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 39adacd..dfbc0b8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,16 +1,43 @@
# brian's standard GitHub Actions release config for Perl 5 modules
-# version 20220827.002
+# version 20230604.001
# https://github.com/briandfoy/github_workflows
# https://github.com/features/actions
# This file is licensed under the Artistic License 2.0
+#
+# This action builds a Perl distribution and adds it as a release
+# on GitHub. This does not upload to PAUSE, but that wouldn't be
+# that hard, but that doesn't fit with my workflow since this part
+# happens after everything else has succeeded.
+#
+# This requires that you configure a repository secret named
+# RELEASE_ACTION_TOKEN with a GitHub Personal Access Token
+# that has "read and write" permissions on Repository/Contents
name: release
+permissions:
+ contents: write
+
on:
push:
+# tag a release commit with "release-....". This workflow then runs
+# whenever it sees that tag, and doesn't run for other commits.
tags:
- 'release-*'
+# With workflow_dispatch, you can trigger this manually. This is
+# especially handy when you want to re-run a job that failed because
+# the token had expired. Update the GitHub secret and re-run on the
+# same commit.
+ workflow_dispatch:
+
jobs:
perl:
+# We need a GitHub secret, so create an Environment named "release"
+# * Go to Settings > Environment (repo settings, not account settings)
+# * Make an environment named "release"
+# * Add a secret named "RELEASE_ACTION_TOKEN" with a GitHub token with repo permissions
+# If you use a different token name, update "RELEASE_ACTION_TOKEN" in the last
+# step in this job.
+ environment: release
runs-on: ${{ matrix.os }}
strategy:
matrix:
@@ -31,39 +58,44 @@ jobs:
# 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.
+#
+# Need HTTP::Tiny 0.055 or later. Probably don't need it at all since I'm
+# not using cpan here.
+#
+# Test::Manifest is there because it's a thing I do. If you are writing
+# modules and don't know what it is, you don't need it.
- name: Install cpanm and multiple modules
run: |
curl -L https://cpanmin.us | perl - App::cpanminus
- cpanm --notest IO::Socket::SSL App::Cpan HTTP::Tiny
- cpan -M https://www.cpan.org -T ExtUtils::MakeMaker Test::Manifest
+ cpanm --notest IO::Socket::SSL HTTP::Tiny 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 .
+ cpanm --notest --installdeps --with-suggests --with-recommends .
+# This makes the distribution and tests it, but assumes by the time we
+# got here, everything else was already tested.
- name: Create distro
run: |
perl Makefile.PL
make disttest
make dist 2>/dev/null | grep Created | awk '{ print "ASSET_NAME=" $2 }' >> $GITHUB_ENV
- name: version
- run: echo "::set-output name=version::$(perl -le 'print $ARGV[0] =~ m/(.*?).tar.gz/' *.tar.gz)"
+ run: |
+ perl -le '($name) = $ARGV[0] =~ m/(.*?).tar.gz/; print qq(name=$name)' *.tar.gz >> $GITHUB_OUTPUT
id: version
- - name: release
- uses: actions/create-release@v1
- id: create_release
- env:
- GITHUB_TOKEN: ${{ github.token }}
- with:
- draft: false
- prerelease: false
- release_name: ${{ steps.version.outputs.version }}
- tag_name: ${{ github.ref }}
- body_path: Changes
+ - name: Changes extract
+ run: |
+ perl -00 -lne 'next unless /\A\d+\.\d+(_\d+)?/; print; last' Changes > Changes-latest
+ cat Changes-latest
+ id: extract
- name: upload
uses: softprops/action-gh-release@v1
- if: startsWith(github.ref, 'refs/tags/')
with:
+ body_path: Changes-latest
+ draft: false
+ prerelease: false
+ name: ${{ steps.version.outputs.name }}
files: "*.tar.gz"
+ token: ${{ secrets.RELEASE_ACTION_TOKEN }}
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index ca998a8..d048dc9 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -44,6 +44,7 @@ jobs:
- windows-2019
- windows-2022
steps:
+ - run: git config --global core.autocrlf false
- uses: actions/checkout@v3
- name: Set up Perl
run: |