add: github action for debian build #9
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: Build and Publish Debian Package | |
| on: | |
| push: | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| DEB_BUILD_OPTIONS: nocheck # or whatever options you need | |
| strategy: | |
| matrix: | |
| distro: [debian-bookworm, debian-bullseye, ubuntu-24.04, ubuntu-22.04] | |
| include: | |
| - distro: debian-bookworm | |
| image: debian:bookworm | |
| os: debian | |
| version: bookworm | |
| - distro: debian-bullseye | |
| image: debian:bullseye | |
| os: debian | |
| version: bullseye | |
| - distro: ubuntu-24.04 | |
| image: ubuntu:24.04 | |
| os: ubuntu | |
| version: noble | |
| - distro: ubuntu-22.04 | |
| image: ubuntu:22.04 | |
| os: ubuntu | |
| version: jammy | |
| container: | |
| image: ${{ matrix.image }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup dependencies | |
| run: | | |
| apt-get update | |
| apt-get install -y build-essential devscripts debhelper autotools-dev autoconf-archive fakeroot sed git tar gzip python3-pip python3-venv curl jq | |
| - name: Build deb package | |
| run: | | |
| # Assuming you have debian/ directory with control files | |
| debuild -us -uc | |
| - name: Ensure package is present | |
| run: | | |
| echo "Files in workspace:" | |
| find * | |
| - name: Collect .deb artifact | |
| run: | | |
| mkdir -p artifacts/${{ matrix.os }}/${{ matrix.version }} | |
| mv ../robotkernel-service-helper*.deb artifacts/${{ matrix.os }}/${{ matrix.version }} | |
| - name: Set sanitized image name | |
| id: sanitize | |
| run: | | |
| version=$(dpkg-parsechangelog | sed -n 's/^Version: //p') | |
| echo "sanitized_image=$(echo "$version-$IMAGE" | tr '/:' '--')" >> $GITHUB_OUTPUT | |
| env: | |
| IMAGE: ${{ matrix.image }} | |
| - name: Upload .deb package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: robotkernel-service-helper-${{ steps.sanitize.outputs.sanitized_image }}.deb | |
| path: artifacts/${{ matrix.os }}/${{ matrix.version }}/*.deb | |
| - name: Upload to Cloudsmith (${{ matrix.os }}/${{ matrix.version }}) | |
| env: | |
| CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} | |
| shell: bash | |
| run: | | |
| VERSION=$(dpkg-parsechangelog | sed -n 's/^Version: //p') | |
| FILENAME="artifacts/${{ matrix.os }}/${{ matrix.version }}/robotkernel-service-helper_${VERSION}_amd64.deb" | |
| python3 -m venv cloudsmith | |
| cd cloudsmith | |
| source bin/activate | |
| python3 -m pip install --upgrade pip | |
| pip3 install cloudsmith-cli | |
| cloudsmith push deb robert-burger-AdLL/robotkernel/${{ matrix.os }}/${{ matrix.version }} ../${FILENAME} \ | |
| --republish \ | |
| --api-key "$CLOUDSMITH_API_KEY" |