feat: Add RPM build workflow and spec file for Gitea integration
Some checks failed
Build and Publish RPM / build-and-publish (push) Failing after 4s
Some checks failed
Build and Publish RPM / build-and-publish (push) Failing after 4s
Co-authored-by: aider (ollama_chat/qwen3-coder-30b-c24k) <aider@aider.chat>
This commit is contained in:
84
build-publish-rpm.yaml
Normal file
84
build-publish-rpm.yaml
Normal file
@@ -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
|
||||
29
hello.spec
Normal file
29
hello.spec
Normal file
@@ -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 <please@refre.ch> - 0.0.1
|
||||
- First version being packaged
|
||||
Reference in New Issue
Block a user