Add informational HTTP::XSHeaders compatibility CI job #330
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: dzil build and test | |
| on: | |
| push: | |
| branches: | |
| - "master" | |
| pull_request: | |
| branches: | |
| - "*" | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: Build distribution | |
| runs-on: ubuntu-latest | |
| strategy: | |
| max-parallel: 1 | |
| container: | |
| image: perldocker/perl-tester:5.42 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Allow for file ownership conflicts with Docker and GitHub Actions | |
| run: git config --global --add safe.directory '*' | |
| - name: Run Tests with coverage | |
| env: | |
| AUTHOR_TESTING: 1 | |
| CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}} | |
| RELEASE_TESTING: 1 | |
| run: auto-build-and-test-dist | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: build_dir | |
| path: build_dir | |
| test_linux: | |
| runs-on: ubuntu-latest | |
| name: Perl ${{ matrix.perl-version }} on ubuntu-latest | |
| needs: build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| perl-version: | |
| - "5.10" | |
| - "5.12" | |
| - "5.14" | |
| - "5.16" | |
| - "5.18" | |
| - "5.20" | |
| - "5.22" | |
| - "5.24" | |
| - "5.26" | |
| - "5.28" | |
| - "5.30" | |
| - "5.32" | |
| - "5.34" | |
| - "5.36" | |
| - "5.38" | |
| - "5.40" | |
| - "5.42" | |
| container: | |
| image: perldocker/perl-tester:${{ matrix.perl-version }} | |
| env: | |
| AUTHOR_TESTING: 1 | |
| steps: | |
| - name: Decide if we need to install recommended modules | |
| id: with-recommends | |
| if: matrix.perl-version >= 5.14 | |
| run: echo '::set-output name=flag::--with-recommends' | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: build_dir | |
| path: . | |
| - name: Install deps | |
| if: success() | |
| run: > | |
| cpm install -g | |
| --cpanfile cpanfile | |
| --with-develop | |
| ${{ steps.with-recommends.outputs.flag }} | |
| --with-suggests | |
| --show-build-log-on-failure | |
| - name: Run Tests | |
| if: success() | |
| run: prove -lr --jobs 2 t | |
| test_xsheaders: | |
| runs-on: ubuntu-latest | |
| name: HTTP::XSHeaders compat (Perl 5.42) | |
| needs: build | |
| # Informational only: surfaces HTTP::XSHeaders API incompatibilities | |
| # without blocking the build. See p5pclub/http-xsheaders#13. | |
| continue-on-error: true | |
| container: | |
| image: perldocker/perl-tester:5.42 | |
| env: | |
| AUTHOR_TESTING: 1 | |
| steps: | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: build_dir | |
| path: . | |
| - name: Install deps | |
| run: > | |
| cpm install -g | |
| --cpanfile cpanfile | |
| --with-develop | |
| --with-recommends | |
| --with-suggests | |
| --show-build-log-on-failure | |
| - name: Install HTTP::XSHeaders | |
| run: cpm install -g --show-build-log-on-failure HTTP::XSHeaders | |
| # Loading HTTP::XSHeaders transparently swaps in its C implementation of | |
| # HTTP::Headers, so the existing suite exercises the XS code path. | |
| - name: Run tests against HTTP::XSHeaders | |
| env: | |
| PERL5OPT: -MHTTP::XSHeaders | |
| run: prove -lr --jobs 2 t | |
| test_macos: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: ["macos-latest"] | |
| perl-version: | |
| - "5.24" | |
| - "5.26" | |
| - "5.28" | |
| - "5.30" | |
| - "5.32" | |
| - "5.34" | |
| - "5.36" | |
| - "5.38" | |
| - "5.40" | |
| - "5.42" | |
| name: Perl ${{ matrix.perl-version }} on ${{ matrix.os }} | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set Up Perl | |
| uses: shogo82148/actions-setup-perl@v1 | |
| with: | |
| perl-version: ${{ matrix.perl-version }} | |
| - name: Decide if we need to install recommended modules | |
| id: with-recommends | |
| if: matrix.perl-version >= 5.14 | |
| run: echo '::set-output name=flag::--with-recommends' | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: build_dir | |
| path: . | |
| - run: perl -V | |
| - name: install deps using cpanm | |
| uses: perl-actions/install-with-cpm@v2 | |
| with: | |
| cpanfile: "cpanfile" | |
| args: > | |
| --with-develop | |
| ${{ steps.with-recommends.outputs.flag }} | |
| --with-suggests | |
| --with-test | |
| --mirror https://cpan.metacpan.org | |
| # App::cpm v0.999.0+ requires Perl 5.24+; pin older Perls to the last compatible release. | |
| version: ${{ matrix.perl-version <= '5.22' && '0.998003' || 'main' }} | |
| - run: prove -lr t | |
| env: | |
| AUTHOR_TESTING: 1 | |
| test_windows: | |
| if: false # temporarily disabled | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: ["windows-latest"] | |
| perl-version: | |
| # https://github.com/shogo82148/actions-setup-perl/issues/223 | |
| # - "5.10" | |
| # - "5.12" | |
| - "5.24" | |
| - "5.26" | |
| - "5.28" | |
| - "5.30" | |
| - "5.32" | |
| # As of 2022-06-06 5.32 is the latest Strawberry Perl | |
| # - "5.34" | |
| # - "5.36" | |
| name: Perl ${{ matrix.perl-version }} on ${{ matrix.os }} | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set Up Perl | |
| uses: shogo82148/actions-setup-perl@v1 | |
| with: | |
| perl-version: ${{ matrix.perl-version }} | |
| distribution: strawberry | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: build_dir | |
| path: . | |
| - name: install deps using cpanm | |
| uses: perl-actions/install-with-cpm@v2 | |
| with: | |
| cpanfile: "cpanfile" | |
| args: "--mirror https://cpan.metacpan.org" | |
| # App::cpm v0.999.0+ requires Perl 5.24+; pin older Perls to the last compatible release. | |
| version: ${{ matrix.perl-version <= '5.22' && '0.998003' || 'main' }} | |
| - run: perl -V | |
| - run: prove -lr t | |
| env: | |
| AUTHOR_TESTING: 1 |