From c31fd77db6d92d339382d5e02d3805a602ab8b08 Mon Sep 17 00:00:00 2001 From: Lukas Greve Date: Thu, 27 Nov 2025 19:49:04 +0100 Subject: [PATCH] feat: Add RPM build workflow and spec file for Gitea integration Co-authored-by: aider (ollama_chat/qwen3-coder-30b-c24k) --- build-publish-rpm.yaml | 84 ++++++++++++++++++++++++++++++++++++++++++ hello.spec | 29 +++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 build-publish-rpm.yaml create mode 100644 hello.spec diff --git a/build-publish-rpm.yaml b/build-publish-rpm.yaml new file mode 100644 index 0000000..8efeed1 --- /dev/null +++ b/build-publish-rpm.yaml @@ -0,0 +1,84 @@ +name: Build and Publish RPM + +on: + push: + branches: + - main + tags: + - 'v*' + +jobs: + build-and-publish: + runs-on: fedora + defaults: + run: + shell: bash + container: + image: git.phyllo.me/devops/fedora-runner-image:latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup RPM build environment + run: | + mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS,SRPMS} + echo "%_topdir %(echo $HOME)/rpmbuild" > ~/.rpmmacros + + - name: Create source archive + run: | + tar -czf hello-0.0.1.tar.gz hello.sh + + - name: Copy spec file and source + run: | + cp hello.spec ~/rpmbuild/SPECS/ + cp hello-0.0.1.tar.gz ~/rpmbuild/SOURCES/ + + - name: Build RPM + run: | + cd ~/rpmbuild + rpmbuild -ba SPECS/hello.spec + + - name: Publish RPM to Gitea + if: github.ref_type == 'tag' + run: | + # Extract version from spec file + VERSION=$(grep -E "^Version:" hello.spec | cut -d: -f2 | xargs) + echo "Version: $VERSION" + + # Find built RPM + RPM_FILE=$(find ~/rpmbuild -name "*.rpm" -type f | head -1) + echo "RPM file: $RPM_FILE" + + # Publish to Gitea + if [ -n "$GITEA_TOKEN" ] && [ -n "$GITEA_OWNER" ]; then + curl -u "$GITEA_OWNER:$GITEA_TOKEN" \ + --upload-file "$RPM_FILE" \ + "https://gitea.example.com/api/packages/$GITEA_OWNER/rpm/upload" + else + echo "Missing GITEA_TOKEN or GITEA_OWNER environment variables" + exit 1 + fi + + - name: Publish RPM with group + if: github.ref_type == 'tag' + run: | + # Extract version from spec file + VERSION=$(grep -E "^Version:" hello.spec | cut -d: -f2 | xargs) + echo "Version: $VERSION" + + # Find built RPM + RPM_FILE=$(find ~/rpmbuild -name "*.rpm" -type f | head -1) + echo "RPM file: $RPM_FILE" + + # Publish to Gitea with group (using tag name as group) + TAG_NAME=${GITHUB_REF#refs/tags/} + echo "Publishing to group: $TAG_NAME" + + if [ -n "$GITEA_TOKEN" ] && [ -n "$GITEA_OWNER" ]; then + curl -u "$GITEA_OWNER:$GITEA_TOKEN" \ + --upload-file "$RPM_FILE" \ + "https://gitea.example.com/api/packages/$GITEA_OWNER/rpm/$TAG_NAME/upload" + else + echo "Missing GITEA_TOKEN or GITEA_OWNER environment variables" + exit 1 + fi diff --git a/hello.spec b/hello.spec new file mode 100644 index 0000000..c568e69 --- /dev/null +++ b/hello.spec @@ -0,0 +1,29 @@ +Name: hello +Version: 0.0.1 +Release: 1%{?dist} +Summary: A simple hello world script +BuildArch: noarch + +License: GPLv3+ +URL: https://git.phyllo.me/ +Source0: %{name}-%{version}.tar.gz + +Requires: bash + +%description +A demo RPM build + +%prep +%setup -q + +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{_bindir} +cp hello.sh $RPM_BUILD_ROOT/%{_bindir} + +%files +%{_bindir}/hello.sh + +%changelog +* Wed Jul 09 2025 Lukas Greve - 0.0.1 +- First version being packaged