Files
hello/.gitea/workflows/build-publish-rpm.yaml
Lukas Greve 3e3ae9181b
All checks were successful
Build and Publish RPM / build-and-publish (push) Successful in 5s
Fixed source archive creation: Instead of directly tarring hello.sh, I now create a proper directory structure hello-0.0.1/ with the file inside, which is what %setup expects.
Fixed the %install section: Changed cp hello.sh $RPM_BUILD_ROOT/%{_bindir}/hello to remove the .sh extension as it's a more conventional name for executable files.

Fixed the %files section: Updated to reference %{_bindir}/hello instead of %{_bindir}/hello.sh
2025-11-27 20:04:25 +01:00

95 lines
2.8 KiB
YAML

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: Check if hello.sh exists
run: |
if [ ! -f hello.sh ]; then
echo "ERROR: hello.sh file not found in repository"
exit 1
fi
- name: Create source archive with proper directory structure
run: |
# Create a proper directory structure for the tarball
mkdir -p hello-0.0.1
cp hello.sh hello-0.0.1/
tar -czf hello-0.0.1.tar.gz hello-0.0.1
- 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