Skip to content

Feat/fedora x86 build support #151

Feat/fedora x86 build support

Feat/fedora x86 build support #151

Workflow file for this run

name: CI
on:
push:
branches: [main, dev, feat/**, feature/**, fix/**, hotfix/**, chore/**]
pull_request:
branches: [main, dev]
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build & Test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
fedora: [41, 42]
container:
image: fedora:${{ matrix.fedora }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install dependencies
run: |
dnf install -y \
cmake \
extra-cmake-modules \
gcc-c++ \
ninja-build \
qt6-qtbase-devel \
qt6-qtdeclarative-devel \
qt6-qttools-devel \
qt6-qtwayland-devel \
kf6-qqc2-desktop-style \
polkit-devel \
clang-tools-extra \
qt6-qtbase-private-devel \
desktop-file-utils \
appstream
- name: Configure (CMake)
run: |
cmake -B build \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTS=ON \
-DREQUIRE_TRANSLATIONS=ON
- name: Build
run: cmake --build build --parallel
- name: Run tests
run: ctest --test-dir build --output-on-failure
- name: Validate desktop metadata
run: |
desktop-file-validate data/icons/io.github.projectroasd.rocontrol.desktop
appstreamcli validate --no-net data/icons/io.github.projectroasd.rocontrol.metainfo.xml
- name: Check formatting (clang-format)
run: |
find src \( -name "*.cpp" -o -name "*.h" \) -print0 | \
xargs -0 clang-format --dry-run --Werror
package-rpm:
name: RPM Build Check
runs-on: ubuntu-latest
container:
image: fedora:42
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install RPM tooling and dependencies
run: |
dnf install -y \
git \
rpm-build \
rpmlint \
cmake \
extra-cmake-modules \
gcc-c++ \
ninja-build \
qt6-qtbase-devel \
qt6-qtbase-private-devel \
qt6-qtdeclarative-devel \
qt6-qttools-devel \
qt6-qtwayland-devel \
kf6-qqc2-desktop-style \
polkit-devel
- name: Prepare source tarball
id: prep
run: |
VERSION="$(sed -n 's/^[[:space:]]*VERSION[[:space:]]\([0-9.][0-9.]*\)$/\1/p' CMakeLists.txt | head -n1)"
if [[ -z "${VERSION}" ]]; then
echo "Failed to read project version from CMakeLists.txt" >&2
exit 1
fi
echo "version=${VERSION}" >> "${GITHUB_OUTPUT}"
ARCHIVE_BASENAME="ro-control-${VERSION}"
mkdir -p ~/rpmbuild/SOURCES ~/rpmbuild/SPECS
STAGE_DIR="$(mktemp -d)"
cp -a . "${STAGE_DIR}/${ARCHIVE_BASENAME}"
rm -rf "${STAGE_DIR}/${ARCHIVE_BASENAME}/.git" \
"${STAGE_DIR}/${ARCHIVE_BASENAME}/build" \
"${STAGE_DIR}/${ARCHIVE_BASENAME}/build-"*
tar -C "${STAGE_DIR}" -czf "${HOME}/rpmbuild/SOURCES/${ARCHIVE_BASENAME}.tar.gz" "${ARCHIVE_BASENAME}"
rm -rf "${STAGE_DIR}"
cp packaging/rpm/ro-control.spec "${HOME}/rpmbuild/SPECS/ro-control.spec"
- name: Build RPM
run: |
rpmbuild -ba "${HOME}/rpmbuild/SPECS/ro-control.spec" \
--define "_topdir ${HOME}/rpmbuild" \
--define "upstream_version ${{ steps.prep.outputs.version }}"
- name: Lint built RPMs
run: |
rpmlint ~/rpmbuild/RPMS/*/*.rpm || true