name: perl-filesys-smbclient

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

on:
  workflow_dispatch:
  pull_request:
    paths:
      - "dependencies/perl-filesys-smbclient/**"
  push:
    branches:
      - develop
      - dev-[2-9][0-9].[0-9][0-9].x
      - master
      - "[2-9][0-9].[0-9][0-9].x"
    paths:
      - "dependencies/perl-filesys-smbclient/**"

jobs:
  get-environment:
    uses: ./.github/workflows/get-environment.yml

  package-rpm:
    needs: [get-environment]
    if: ${{ needs.get-environment.outputs.stability != 'stable' }}

    runs-on: ubuntu-22.04
    strategy:
      matrix:
        include:
          - image: packaging-plugins-alma8
            distrib: el8
          - image: packaging-plugins-alma9
            distrib: el9
    name: package ${{ matrix.distrib }}
    container:
      image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest
      credentials:
        username: ${{ secrets.DOCKER_REGISTRY_ID }}
        password: ${{ secrets.DOCKER_REGISTRY_PASSWD }}

    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - run: |
          yum install -y yum-utils
          yum config-manager --set-enabled crb || true # alma 9
          yum config-manager --set-enabled powertools || true # alma 8

          yum install -y libsmbclient-devel make gcc perl perl-devel perl-ExtUtils-MakeMaker

          mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

          cp -rp dependencies/perl-filesys-smbclient/src perl-Filesys-SmbClient/
          tar czf ~/rpmbuild/SOURCES/perl-Filesys-SmbClient.tar.gz perl-Filesys-SmbClient

          rpmbuild -ba dependencies/perl-filesys-smbclient/packaging/rpm/perl-Filesys-SmbClient.spec

          cp -r ~/rpmbuild/RPMS/x86_64/*.rpm .
        shell: bash

      - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
        with:
          path: ./*.rpm
          key: unsigned-${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }}

  sign-rpm:
    needs: [package-rpm]
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        include:
          - image: packaging-alma8
            distrib: el8
          - image: packaging-alma9
            distrib: el9
    name: sign rpm ${{ matrix.distrib }}
    container:
      image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/rpm-signing:ubuntu
      options: -t
      credentials:
        username: ${{ secrets.DOCKER_REGISTRY_ID }}
        password: ${{ secrets.DOCKER_REGISTRY_PASSWD }}

    steps:
      - run: |
            apt-get update
            apt-get install -y zstd
        shell: bash

      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
        with:
          path: ./*.rpm
          key: unsigned-${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }}

      - run: echo "HOME=/root" >> $GITHUB_ENV
        shell: bash

      - run: rpmsign --addsign ./*.rpm
        shell: bash

      - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
        with:
          path: ./*.rpm
          key: ${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }}

  package-deb:
    needs: [get-environment]
    if: ${{ needs.get-environment.outputs.stability != 'stable' }}

    runs-on: ubuntu-22.04
    strategy:
      matrix:
        include:
          - image: packaging-plugins-bullseye
            distrib: bullseye
          - image: packaging-plugins-bookworm
            distrib: bookworm
          - image: packaging-plugins-jammy
            distrib: jammy
    name: package ${{ matrix.distrib }}
    container:
      image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest
      credentials:
        username: ${{ secrets.DOCKER_REGISTRY_ID }}
        password: ${{ secrets.DOCKER_REGISTRY_PASSWD }}

    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Parse distrib name
        id: parse-distrib
        uses: ./.github/actions/parse-distrib
        with:
          distrib: ${{ matrix.distrib }}

      - run: |
          apt update
          apt install -y dh-make-perl perl libsmbclient-dev

          mv dependencies/perl-filesys-smbclient/src/ perl-filesys-smbclient
          tar czf perl-filesys-smbclient.tar.gz perl-filesys-smbclient

          DEB_BUILD_OPTIONS="nocheck nodocs notest noautodbgsym" dh-make-perl make --dist ${{ matrix.distrib }} --verbose --build --version 4.0${{ steps.parse-distrib.outputs.package_distrib_separator }}${{ steps.parse-distrib.outputs.package_distrib_name }} perl-filesys-smbclient/
        shell: bash

      - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
        with:
          path: ./*.deb
          key: ${{ github.sha }}-${{ github.run_id }}-deb-${{ matrix.distrib }}

  deliver-rpm:
    needs: [get-environment, sign-rpm]
    if: ${{ contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) }}
    runs-on: [self-hosted, common]

    strategy:
      matrix:
        distrib: [el8, el9]

    steps:
      - name: Checkout sources
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Delivery
        uses: ./.github/actions/rpm-delivery
        with:
          module_name: perl-filesys-smbclient
          distrib: ${{ matrix.distrib }}
          artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
          cache_key: ${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }}
          stability: ${{ needs.get-environment.outputs.stability }}

  deliver-deb:
    needs: [get-environment, package-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-filesys-smbclient
          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 }}

  promote:
    needs: [get-environment]
    if: ${{ contains(fromJson('["stable"]'), needs.get-environment.outputs.stability) }}
    runs-on: [self-hosted, common]
    strategy:
      matrix:
        distrib: [el8, el9, bullseye, bookworm]

    steps:
      - name: Checkout sources
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Promote ${{ matrix.distrib }} to stable
        uses: ./.github/actions/promote-to-stable
        with:
          artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
          module: perl-filesys-smbclient
          distrib: ${{ matrix.distrib }}
          stability: ${{ needs.get-environment.outputs.stability }}