perl-cpan-libraries #285
This file contains 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: perl-cpan-libraries | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- ".github/workflows/perl-cpan-libraries.yml" | |
push: | |
branches: | |
- develop | |
- dev-[2-9][0-9].[0-9][0-9].x | |
- master | |
- "[2-9][0-9].[0-9][0-9].x" | |
paths: | |
- ".github/workflows/perl-cpan-libraries.yml" | |
jobs: | |
get-environment: | |
uses: ./.github/workflows/get-environment.yml | |
package-deb: | |
needs: [get-environment] | |
if: ${{ needs.get-environment.outputs.stability != 'stable' }} | |
runs-on: ${{ matrix.runner_name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
image: [packaging-plugins-bullseye, packaging-plugins-bookworm, packaging-plugins-jammy, packaging-plugins-bullseye-arm64] | |
name: | |
[ | |
"JMX::Jmx4Perl", | |
] | |
include: | |
- runner_name: ubuntu-22.04 | |
- arch: amd64 | |
- build_distribs: "bullseye,bookworm,jammy" | |
- deb_dependencies: "" | |
- rpm_provides: "" | |
- version: "" | |
- use_dh_make_perl: "true" | |
- spec_file: "" | |
- distrib: bullseye | |
package_extension: deb | |
image: packaging-plugins-bullseye | |
- distrib: bookworm | |
package_extension: deb | |
image: packaging-plugins-bookworm | |
- distrib: jammy | |
package_extension: deb | |
image: packaging-plugins-jammy | |
- distrib: bullseye | |
package_extension: deb | |
image: packaging-plugins-bullseye-arm64 | |
arch: arm64 | |
runner_name: ["self-hosted", "collect-arm64"] | |
- name: "Paws" | |
use_dh_make_perl: "false" | |
deb_dependencies: "libmoose-perl libmoosex-classattribute-perl libjson-maybexs-perl liburl-encode-perl libargv-struct-perl libmoo-perl libtype-tiny-perl libdatastruct-flat-perl libmodule-find-perl libthrowable-perl liburi-template-perl libnet-amazon-signature-v4-perl" | |
no-auto-depends: true | |
- name: "Statistics::Regression" | |
build_distribs: "bullseye" | |
version: "0.53" | |
- name: "ZMQ::LibZMQ4" | |
use_dh_make_perl: "false" | |
version: "0.01" | |
deb_dependencies: "libzmq5" | |
name: package ${{ matrix.distrib }} ${{ matrix.arch }} ${{ matrix.name }} | |
container: | |
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest | |
credentials: | |
username: ${{ secrets.DOCKER_REGISTRY_ID }} | |
password: ${{ secrets.DOCKER_REGISTRY_PASSWD }} | |
steps: | |
- if: ${{ contains(matrix.build_distribs, matrix.distrib) }} | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- if: ${{ contains(matrix.build_distribs, matrix.distrib) }} | |
name: Get package version | |
id: package-version | |
run: | | |
apt-get update | |
apt-get install -y cpanminus | |
if [ -z "${{ matrix.version }}" ]; then | |
CPAN_PACKAGE_VERSION=$(cpanm --info ${{ matrix.name }} | sed 's/\.tar\.gz$//' | sed 's/.*\-//' | sed 's/v//') | |
if [[ ! $CPAN_PACKAGE_VERSION =~ ^[0-9]+\.[0-9]+ ]]; then | |
echo "::error::Invalid version number: ${CPAN_PACKAGE_VERSION}" | |
exit 1 | |
fi | |
PACKAGE_VERSION="${CPAN_PACKAGE_VERSION}" | |
else | |
PACKAGE_VERSION="${{ matrix.version }}" | |
fi | |
echo "package_version=$(echo $PACKAGE_VERSION)" >> $GITHUB_OUTPUT | |
shell: bash | |
- if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.use_dh_make_perl == 'false' }} | |
run: | | |
apt-get install -y ruby libcurl4-openssl-dev libssh-dev uuid-dev libczmq-dev | |
if [ -z "${{ matrix.deb_dependencies }}" ]; then | |
PACKAGE_DEPENDENCIES="" | |
else | |
for PACKAGE_DEPENDENCY in `echo ${{ matrix.deb_dependencies }}`; do | |
PACKAGE_DEPENDENCIES="$PACKAGE_DEPENDENCIES --depends $PACKAGE_DEPENDENCY" | |
done | |
fi | |
if [ ! -z "${{ matrix.no-auto-depends }}" ]; then | |
PACKAGE_DEPENDENCIES="$PACKAGE_DEPENDENCIES --no-auto-depends" | |
fi | |
cpanm Module::Build::Tiny | |
cpanm Module::Install | |
gem install fpm | |
# Patch to apply fpm fix for debian package generation while waiting for the official fix to be released. | |
patch -i .github/patch/fpm-deb.rb.diff $(find / -type f -name "deb.rb") | |
fpm -a native -s cpan -t ${{ matrix.package_extension }} --deb-dist ${{ matrix.distrib }} --iteration ${{ matrix.distrib }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES -v ${{ steps.package-version.outputs.package_version }} ${{ matrix.name }} | |
shell: bash | |
- if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.use_dh_make_perl == 'true' }} | |
run: | | |
apt-get install -y libcurl4-openssl-dev dh-make-perl libssh-dev uuid-dev libczmq-dev libmodule-install-perl libmodule-build-tiny-perl | |
# module-build-tiny is required for Mojo::IOLoop::Signal build. | |
DEB_BUILD_OPTIONS="nocheck nodocs notest" dh-make-perl make --dist ${{ matrix.distrib }} --build --version ${{ steps.package-version.outputs.package_version }}-${{ matrix.distrib }} --cpan ${{ matrix.name }} | |
shell: bash | |
- if: ${{ contains(matrix.build_distribs, matrix.distrib) }} | |
name: Replace '::' with - in the feature path | |
id: package-name | |
run: | | |
name="${{ matrix.name }}" | |
name_with_dash="${name//::/-}" | |
echo "Modified Name: $name_with_dash" | |
echo "name_with_dash=$name_with_dash" >> $GITHUB_OUTPUT | |
shell: bash | |
- if: ${{ contains(matrix.build_distribs, matrix.distrib) }} | |
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 | |
with: | |
name: packages-${{ matrix.package_extension }}-${{ matrix.distrib }}-${{ matrix.arch }}-${{ steps.package-name.outputs.name_with_dash}} | |
path: ./*.${{ matrix.package_extension }} | |
retention-days: 1 | |
merge-package-deb-artifacts: | |
needs: [package-deb] | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
distrib: [bullseye, bookworm, jammy] | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Merging Artifacts | |
uses: ./.github/actions/merge-artifacts | |
with: | |
target_name: packages-deb-${{ matrix.distrib }} | |
source_paths: packages-deb-${{ matrix.distrib }}/*.deb | |
source_name_pattern: packages-deb-${{ matrix.distrib }}- | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
download-and-cache-deb: | |
needs: [merge-package-deb-artifacts] | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
distrib: [bullseye, bookworm, jammy] | |
steps: | |
- uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 | |
with: | |
name: packages-deb-${{ matrix.distrib }} | |
path: ./ | |
- uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ./*.deb | |
key: ${{ github.sha }}-${{ github.run_id }}-deb-${{ matrix.distrib }} | |
deliver-deb: | |
needs: [get-environment, download-and-cache-deb] | |
if: ${{ contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) }} | |
runs-on: [self-hosted, common] | |
strategy: | |
matrix: | |
distrib: [bullseye, bookworm, jammy] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Delivery | |
uses: ./.github/actions/deb-delivery | |
with: | |
module_name: perl-cpan-libraries | |
distrib: ${{ matrix.distrib }} | |
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} | |
cache_key: ${{ github.sha }}-${{ github.run_id }}-deb-${{ matrix.distrib }} | |
stability: ${{ needs.get-environment.outputs.stability }} |