Update build-deb.yaml #17
Workflow file for this run
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: | |
| create_release: | |
| if: startsWith(github.ref, 'refs/tags/') | |
| runs-on: ubuntu-latest | |
| outputs: | |
| upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - id: create_release | |
| uses: actions/create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| release_name: Release ${{ github.ref_name }} | |
| body: Automated release for tag ${{ github.ref_name }} | |
| draft: false | |
| prerelease: false | |
| build-deb: | |
| runs-on: ubuntu-latest | |
| env: | |
| DEB_BUILD_OPTIONS: nocheck | |
| strategy: | |
| matrix: | |
| distro: [debian-12, debian-11, ubuntu-24.04, ubuntu-22.04] | |
| include: | |
| - distro: debian-12 | |
| image: debian:12 | |
| os: debian | |
| version: bookworm | |
| - distro: debian-11 | |
| image: debian:11 | |
| 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: Install build 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: Checkout source | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Mark working directory as safe | |
| run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
| - name: update branch name and version | |
| run: | | |
| safe_branch=$(echo "${GITHUB_REF_NAME}" | tr '/' '-') | |
| VERSION=$(dpkg-parsechangelog | sed -n 's/^Version: //p') | |
| sed "s|PACKAGE_VERSION|$VERSION|" configure.ac.in > configure.ac | |
| env: | |
| GITHUB_REF_NAME: ${{ github.ref_name }} | |
| - name: Build .deb package | |
| shell: bash | |
| run: | | |
| # baue mit dpkg-buildpackage (ohne signieren) | |
| CODENAME=$(lsb_release -sc) | |
| DEBEMAIL="robert.burger@dlr.de" | |
| DEBFULLNAME="Robert Burger" | |
| if ! dpkg-parsechangelog | grep -q "~${CODENAME}"; then | |
| dch --local ~${CODENAME} --distribution ${CODENAME} "Build for ${CODENAME}"; | |
| fi | |
| dpkg-buildpackage -us -uc -S | |
| dpkg-buildpackage -us -uc -d | |
| - name: Debug artifact files 1 | |
| run: | | |
| ls -l ../ | |
| - name: Set sanitized image name | |
| id: sanitize | |
| run: | | |
| version=$(dpkg-parsechangelog | sed -n 's/^Version: //p') | |
| echo "sanitized_image=$(echo "${version}" | tr '/:' '--')" >> $GITHUB_OUTPUT | |
| - name: Upload to APT repository | |
| env: | |
| DEPLOY_TOKEN: ${{ secrets.BS_UPLOAD_KEY }} | |
| run: | | |
| FILENAME="../robotkernel-service-helper_${{ steps.sanitize.outputs.sanitized_image }}" | |
| curl -X POST https://deb.burger-system.de/upload \ | |
| -H "Authorization: Bearer $DEPLOY_TOKEN" \ | |
| -F "deb=@../robotkernel-service-helper_${{ steps.sanitize.outputs.sanitized_image }}"_amd64.deb" \ | |
| -F "deb=@../robotkernel-service-helper-dev_${{ steps.sanitize.outputs.sanitized_image }}"_amd64.deb" \ | |
| -F "changes=@../robotkernel-service-helper_${{ steps.sanitize.outputs.sanitized_image }}"_amd64.changes" \ | |
| -F "dsc=@../robotkernel-service-helper_${{ steps.sanitize.outputs.sanitized_image }}".dsc" | |
| - name: Collect .deb artifact | |
| run: | | |
| mkdir -p artifacts/${{ matrix.os }}/${{ matrix.version }} | |
| mv ../robotkernel-service-helper*.deb artifacts/${{ matrix.os }}/${{ matrix.version }} | |
| - name: Upload .deb package artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: robotkernel-service-helper-${{ steps.sanitize.outputs.sanitized_image }} | |
| path: artifacts/${{ matrix.os }}/${{ matrix.version }}/ | |
| - name: Debug artifact files | |
| run: | | |
| ls -l ./artifacts/${{ matrix.os }}/${{ matrix.version }}/ | |
| # Fetch the release upload URL dynamically on tag builds | |
| - name: Get Release Upload URL | |
| if: startsWith(github.ref, 'refs/tags/') | |
| id: get_release | |
| run: | | |
| release_json=$(curl -sSL \ | |
| -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| "https://api.github.com/repos/${{ github.repository }}/releases/tags/${GITHUB_REF_NAME}") | |
| upload_url=$(echo "$release_json" | jq -r '.upload_url' | sed -e "s/{?name,label}//") | |
| echo "upload_url=$upload_url" >> $GITHUB_OUTPUT | |
| env: | |
| GITHUB_REF_NAME: ${{ github.ref_name }} | |
| - name: Upload asset manually with curl | |
| if: startsWith(github.ref, 'refs/tags/') | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| UPLOAD_URL: ${{ steps.get_release.outputs.upload_url }} | |
| FILE_PATH: ./artifacts/${{ matrix.os }}/${{ matrix.version }}/robotkernel-service-helper_${{ steps.sanitize.outputs.sanitized_image }}.deb | |
| FILE_NAME: robotkernel_${{ steps.sanitize.outputs.sanitized_image }}.deb | |
| run: | | |
| echo "Uploading $FILE_PATH to $UPLOAD_URL?name=$FILE_NAME" | |
| curl --fail -X POST \ | |
| -H "Authorization: token $GITHUB_TOKEN" \ | |
| -H "Content-Type: application/vnd.debian.binary-package" \ | |
| --data-binary @"$FILE_PATH" \ | |
| "$UPLOAD_URL?name=$FILE_NAME" | |
| - name: Upload to Cloudsmith (${{ matrix.os }}/${{ matrix.version }}) | |
| if: startsWith(github.ref, 'refs/tags/') | |
| env: | |
| CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} | |
| shell: bash | |
| run: | | |
| FILENAME="artifacts/${{ matrix.os }}/${{ matrix.version }}/robotkernel-service-helper_${{ steps.sanitize.outputs.sanitized_image }}.deb" | |
| python3 -m venv cloudsmith | |
| cd cloudsmith | |
| source bin/activate | |
| python3 -m pip install --upgrade pip | |
| pip3 install cloudsmith-cli | |
| cloudsmith push deb robertburger/robotkernel/${{ matrix.os }}/${{ matrix.version }} ../${FILENAME} \ | |
| --republish \ | |
| --api-key "$CLOUDSMITH_API_KEY" |