Skip to content

add: robotkernel::name() func #32

add: robotkernel::name() func

add: robotkernel::name() func #32

Workflow file for this run

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 pkg-config fakeroot sed git tar gzip python3-pip python3-venv curl jq libyaml-cpp-dev
curl -1sLf 'https://dl.cloudsmith.io/basic/robertburger/robotkernel/setup.deb.sh' | bash
apt-get update
apt-get install -y robotkernel-service-helper
- 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="[email protected]"
DEBFULLNAME="Robert Burger"
if ! dpkg-parsechangelog | grep -q "~${CODENAME}"; then
dch --local ~${CODENAME} "Build for ${CODENAME}";
fi
dpkg-buildpackage -us -uc -S
dpkg-buildpackage -us -uc -d
- name: Collect .deb artifact
run: |
mkdir -p artifacts/${{ matrix.os }}/${{ matrix.version }}
mv ../robotkernel*.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}_amd64" | tr '/:' '--')" >> $GITHUB_OUTPUT
- name: Upload .deb package artifact
uses: actions/upload-artifact@v4
with:
name: robotkernel-${{ 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_${{ steps.sanitize.outputs.sanitized_image }}.deb
FILE_PATH_DEV: ./artifacts/${{ matrix.os }}/${{ matrix.version }}/robotkernel-dev_${{ steps.sanitize.outputs.sanitized_image }}.deb
FILE_NAME: robotkernel_${{ steps.sanitize.outputs.sanitized_image }}.deb
FILE_NAME_DEV: robotkernel-dev_${{ 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"
echo "Uploading $FILE_PATH_DEV to $UPLOAD_URL?name=$FILE_NAME_DEV"
curl --fail -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/vnd.debian.binary-package" \
--data-binary @"$FILE_PATH_DEV" \
"$UPLOAD_URL?name=$FILE_NAME_DEV"
- 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_${{ steps.sanitize.outputs.sanitized_image }}.deb"
FILENAME_DEV="artifacts/${{ matrix.os }}/${{ matrix.version }}/robotkernel-dev_${{ 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"
cloudsmith push deb robertburger/robotkernel/${{ matrix.os }}/${{ matrix.version }} ../${FILENAME_DEV} \
--republish \
--api-key "$CLOUDSMITH_API_KEY"