From 2a389676644f64d40f550410366ef3a37ee3811a Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Tue, 6 Feb 2024 17:48:44 +0100 Subject: [PATCH] add GitHub Actions testing with dzil workflower --- .github/workflows/multiperl-test.yml | 90 ++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/multiperl-test.yml diff --git a/.github/workflows/multiperl-test.yml b/.github/workflows/multiperl-test.yml new file mode 100644 index 00000000..3ad229fd --- /dev/null +++ b/.github/workflows/multiperl-test.yml @@ -0,0 +1,90 @@ +name: "multiperl test" +on: + push: + branches: "*" + tags-ignore: "*" + pull_request: ~ + +# FUTURE ENHANCEMENT(s): +# * install faster (see below) +# * use github.event.repository.name or ${GITHUB_REPOSITORY#*/} as the +# tarball/build name instead of Dist-To-Test + +jobs: + build-tarball: + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - name: Check out repo + uses: actions/checkout@v3 + - name: Install cpanminus + run: | + curl https://cpanmin.us/ > /tmp/cpanm + chmod u+x /tmp/cpanm + - name: Install Dist::Zilla + run: sudo apt-get install -y libdist-zilla-perl + - name: Install prereqs + # This could probably be made more efficient by looking at what it's + # installing via cpanm that could, instead, be installed from apt. I + # may do that later, but for now, it's fine! -- rjbs, 2023-01-07 + run: | + dzil authordeps --missing > /tmp/deps-phase-1.txt + /tmp/cpanm --notest -S < /tmp/deps-phase-1.txt + dzil listdeps --author --missing >> /tmp/deps-phase-2.txt + /tmp/cpanm --notest -S < /tmp/deps-phase-2.txt + - name: Build tarball + run: | + dzil build --in Dist-To-Test + tar zcvf Dist-To-Test.tar.gz Dist-To-Test + - name: Upload tarball + uses: actions/upload-artifact@v3 + with: + name: Dist-To-Test.tar.gz + path: Dist-To-Test.tar.gz + + multiperl-test: + needs: build-tarball + env: + # some plugins still needs this to run their tests... + PERL_USE_UNSAFE_INC: 0 + AUTHOR_TESTING: 1 + AUTOMATED_TESTING: 1 + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + perl-version: [ "devel", "5.36", "5.34", "5.32" ] + + container: + image: perldocker/perl-tester:${{ matrix.perl-version }} + + steps: + - name: Download tarball + uses: actions/download-artifact@v3 + with: + name: Dist-To-Test.tar.gz + - name: Extract tarball + run: tar zxvf Dist-To-Test.tar.gz + - name: Install dependencies + working-directory: ./Dist-To-Test + run: cpanm --installdeps --notest . + - name: Makefile.PL + working-directory: ./Dist-To-Test + run: perl Makefile.PL + - name: Install yath + run: cpanm --notest Test2::Harness + - name: Install testing libraries + run: cpanm --notest Test2::Harness::Renderer::JUnit + - name: Run the tests + working-directory: ./Dist-To-Test + run: | + JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 yath test --renderer=Formatter --renderer=JUnit -D + - name: Publish test report + uses: mikepenz/action-junit-report@v3 + if: always() # always run even if the previous step fails + with: + check_name: JUnit Report (${{ matrix.perl-version }}) + report_paths: /tmp/test-output.xml