GitHub action to install Perl Modules App::cpanminus
This action installs 'cpanminus' then use it if needed to install some Perl Modules.
- name: install cpanm and multiple modules
uses: step-security/install-with-cpanm@v2
with:
install: |
Simple::Accessor
Test::Parallel
# or you can use a cpanfile
# cpanfile: 'your-cpanfile'
# default values you can customize
# sudo: true
# where to install cpanm
# path: "$Config{installsitescript}/cpanm"
# which perl binary to use
# perl: 'perl'
# Use a local library
# local-lib: ~/perl5Here is a sample integration using install-with-cpanm action
to test your Perl Modules using multiple Perl versions via the
perl-tester images and the action perl-actions/perl-versions to rely on a dynamic list of available Perl versions.
# .github/workflows/testsuite.yml
jobs:
perl-versions:
runs-on: ubuntu-latest
name: List Perl versions
outputs:
perl-versions: ${{ steps.action.outputs.perl-versions }}
steps:
- id: action
uses: perl-actions/perl-versions@v2
with:
since-perl: v5.10
with-devel: true
perl_tester:
runs-on: ubuntu-latest
name: "Perl ${{ matrix.perl-version }}"
needs: [perl-versions]
strategy:
fail-fast: false
matrix:
perl-version: ${{ fromJson (needs.perl-versions.outputs.perl-versions) }}
container: perldocker/perl-tester:${{ matrix.perl-version }}
steps:
- uses: actions/checkout@v7
- name: uses install-with-cpanm
uses: step-security/install-with-cpanm@v2
with:
cpanfile: "cpanfile"
sudo: false
- run: perl Makefile.PL
- run: make testList of one or more modules, separated by a newline \n character.
Install modules from a cpanfile.
Boolean variable used to disable unit tests during installation Possible values: true | false [default: false]
Boolean variable used to control the -v flag
Possible values: true | false [default: false]
Note: this was previously set to true by default, this is now disabled to speedup installations.
Extra arguments to pass to the cpanm command line used by install or cpanfile.
example:
args: "-L vendor"You can also use this option to run your own flavor
without the need of setting install or cpanfile.
args: "--installdeps ."Run commands as sudo: true | false [default: true]
Which perl path to use. Default to use perl from the current PATH.
By setting PATH correctly you probably do not need to use it.
Where to install cpanm. Default value is $Config{installsitescript}/cpanm.
You can use any $Config variable in your string.
Local (user space) library where cpanm will install the distributions. Use
this for caching, for instance.
none
uses: step-security/install-with-cpanm@v2
# you can then use it later
run: sudo cpanm Module::To::Installbut you should prefer let the action install your modules
- name: install cpanm and one module
uses: step-security/install-with-cpanm@v2
with:
install: "Simple::Accessor"- name: install cpanm and one module
uses: step-security/install-with-cpanm@v2
with:
install: |
Simple::Accessor
Test::Parallel- name: install cpanm and files from cpanfile
uses: step-security/install-with-cpanm@v2
with:
cpanfile: "your-cpanfile"Install modules with tests.
- name: install cpanm and files from cpanfile
uses: step-security/install-with-cpanm@v2
with:
install: "Simple::Accessor"
tests: trueHere is a sample job using cpanm to install modules on windows.
windows:
runs-on: windows-latest
name: "windows"
steps:
- name: Set up Perl
run: |
choco install strawberryperl
echo "##[add-path]C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin"
- name: perl -V
run: perl -V
- uses: actions/checkout@v7
- name: "install-with-cpanm"
uses: step-security/install-with-cpanm@v2
with:
install: |
abbreviation
ACH
# checking that both modules are installed
- run: perl -Mabbreviation -e1
- run: perl -MACH -e1 local_lib:
runs-on: ubuntu-latest
name: 'local-lib'
steps:
- uses: actions/checkout@v7
- name: 'install-with-cpanm'
uses: ./
with:
install: 'Simple::Accessor'
local-lib: '~/perl5'
sudo: false
verbose: true