--- name: Build and publish Debian package on: [create] jobs: build: runs-on: docker container: image: docker.io/brenard/nfpm:latest steps: - name: Check out repository code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Build Debian package run: | echo "${{ secrets.GPG_KEY }}" | base64 -d > key.gpg export VERSION="$( git describe --tags | sed 's/^[^0-9]*//' )" || \ export VERSION="0.0-$( git log | grep -cE ^'commit ' )-$( git describe --tags --always )" yq -y -i '.deb.signature.key_file = "key.gpg"' nfpm.yaml yq -y -i '.maintainer = "${{ vars.MAINTAINER_NAME }} <${{ vars.MAINTAINER_EMAIL }}>"' nfpm.yaml yq -y -i '.deb.distribution = "${{ vars.DEBIAN_CODENAME }}"' .chglog.yml chglog init mkdir dist chglog format --template release -o dist/release_notes.md nfpm -f nfpm.yaml package --packager deb --target dist cp aptly-publish dist - name: Upload Debian package files uses: actions/upload-artifact@v3 with: name: dist path: | dist publish-forgejo: runs-on: docker container: image: docker.io/brenard/debian-python-deb:latest needs: - build steps: - name: Download Debian package files uses: actions/download-artifact@v3 with: name: dist - name: Create the release id: create-release shell: bash run: | mkdir release mv *.deb release/ mv aptly-publish release/ md5sum release/* > md5sum.txt sha512sum release/* > sha512sum.txt mv md5sum.txt sha512sum.txt release/ { echo 'release_note<<EOF' cat release_notes.md | sed 's/"/\\"/g' echo 'EOF' } >> "$GITHUB_OUTPUT" - name: Publish release on Forgejo uses: actions/forgejo-release@v2 with: direction: upload url: https://gitea.zionetrix.net token: ${{ secrets.forgejo_token }} release-dir: release release-notes: ${{ steps.create-release.outputs.release_note }} publish-aptly: runs-on: docker container: image: docker.io/brenard/aptly-publish:latest needs: - build steps: - name: "Download Debian package files" uses: actions/download-artifact@v3 with: name: dist - name: "Publish Debian package on Aptly repository" uses: https://gitea.zionetrix.net/bn8/aptly-publish@2025.2.2 with: api_url: ${{ vars.apt_api_url }} api_username: ${{ vars.apt_api_username }} api_password: ${{ secrets.apt_api_password }} repo_name: ${{ vars.apt_repo_name }} path: "./" source_name: ${{ vars.apt_source_name }}