name: Build PPA source packages
on:
  push:
    branches:
      - master
jobs:
  build:
    if: github.repository == 'canonical/dqlite'
    strategy:
      fail-fast: false
      matrix:
        target:
          - focal
          - jammy
          - noble
          - oracular
    runs-on: ubuntu-20.04
    environment:
      name: ppa
    steps:
    - name: Clone the repositories
      run: |
          git clone https://github.com/canonical/dqlite
          git clone https://github.com/canonical/dqlite-ppa -b dqlite --depth 1

    - name: Setup dependencies
      run: |
          sudo apt-get update -qq
          sudo apt-get install -qq debhelper devscripts gnupg

      # Note for future maintainers: the secret key should be stored
      # in the GHA secret in ASCII-armored form, and must not be
      # password-protected.
    - name: Setup GPG signing key
      env:
          PPA_SECRET_KEY: ${{ secrets.PPA_SECRET_KEY }}
      run: |
          echo "$PPA_SECRET_KEY" > private-key.asc
          gpg --import --batch private-key.asc

    - name: Delete GPG signing key file
      if: always()
      run: |
          rm -f private-key.asc

    - name: Build source package
      env:
        DEBFULLNAME: "Github Actions"
        DEBEMAIL: "dqlitebot@lists.canonical.com"
        TARGET: ${{ matrix.target }}
      run: |
          cp -R dqlite-ppa/debian dqlite/
          cd dqlite/
          VERSION="$(git describe --tags | sed -e "s/^v//" -e "s/-/+git/")"
          dch --create \
            --distribution ${TARGET} \
            --package dqlite \
            --newversion ${VERSION}~${TARGET}1 \
            "Automatic build from Github"
          debuild -S -sa -d -k${{ vars.PPA_PUBLIC_KEY }}

    - name: Upload to Launchpad
      run: |
          dput -U -u ppa:dqlite/dev *.changes
