Skip to content

essentialkaos/rpmbuilder

GitHub Actions CI Status

Usage demoInstallationTipsUsageBuild StatusContributingLicense


rpmbuilder is RPM package build helper.

Usage demo

rpmbuilder.mp4

Installation

sudo dnf install -y https://pkgs.kaos.st/kaos-repo-latest.el$(grep 'CPE_NAME' /etc/os-release | tr -d '"' | cut -d':' -f5).noarch.rpm
sudo dnf install rpmbuilder

Build node:

sudo dnf install -y https://pkgs.kaos.st/kaos-repo-latest.el$(grep 'CPE_NAME' /etc/os-release | tr -d '"' | cut -d':' -f5).noarch.rpm
sudo dnf install rpmbuilder-node

Using Makefile and Git

git clone https://kaos.sh/rpmbuilder.git
cd rpmbuilder
sudo make install

Using Docker

We provide a big variety of Docker images available on GitHub Container Registry and Docker Hub.

Official images

Basic images:

  • ghcr.io/essentialkaos/rpmbuilder:ol8 (OracleLinux 8)
  • ghcr.io/essentialkaos/rpmbuilder:ol9 (OracleLinux 9)
  • essentialkaos/rpmbuilder:ol8 (OracleLinux 8)
  • essentialkaos/rpmbuilder:ol9 (OracleLinux 9)

Build node images:

  • ghcr.io/essentialkaos/rpmbuilder:node-ol8 (OracleLinux 8 | Port: 2038)
  • ghcr.io/essentialkaos/rpmbuilder:node-ol9 (OracleLinux 9 | Port: 2039)
  • essentialkaos/rpmbuilder:node-ol8 (OracleLinux 8 | Port: 2038)
  • essentialkaos/rpmbuilder:node-ol9 (OracleLinux 9 | Port: 2039)

Package build using base image:

# Download and install rpmbuilder-docker script
curl -fL# -o rpmbuilder-docker https://kaos.sh/rpmbuilder/rpmbuilder-docker
chmod +x rpmbuilder-docker
sudo mv rpmbuilder-docker /usr/bin/

# Pull rpmbuilder image based on OracleLinux 8
docker pull ghcr.io/essentialkaos/rpmbuilder:ol8
export IMAGE=ghcr.io/essentialkaos/rpmbuilder:ol8

# Build package locally
cd my-package-dir
rpmbuilder-docker my-package.spec

# Build package using build nodes
rpmbuilder-docker my-package.spec -r buildnode-ol7.acme.corp:2022 -r buildnode-ol8.acme.corp:2022 -k $(base64 -w0 ~/.ssh/buildnode)

Package build using build node image:

docker pull ghcr.io/essentialkaos/rpmbuilder:node-ol8
docker run -e PUB_KEY="$(cat ~/.ssh/buildnode.pub)" -p 2038:2038 -d ghcr.io/essentialkaos/rpmbuilder:node-ol8

cd my-package-dir

# Using local version of rpmbuilder (if you are use RHEL, Alma, Rocky, CentOS…)
rpmbuilder my-package.spec -r builder@localhost:2038 -k ~/.ssh/buildnode

# With docker helper script (any Linux distro or macOS)
rpmbuilder-docker my-package.spec -r builder@localhost:2038 -k $(base64 -w0 ~/.ssh/buildnode)

You can bootstrap your own build farm using Docker and rpmbuilder-farm script:

curl -fL# -o rpmbuilder-farm https://kaos.sh/rpmbuilder/rpmbuilder-farm
chmod +x rpmbuilder-farm
sudo mv rpmbuilder-farm /usr/bin/

# Install farm script
sudo rpmbuilder-farm install

# Create user bob and add public key
sudo farm add-user bob

# Start all containers for user bob
sudo farm start bob

rpmbuilder-farm preview

Tips

  • You could define rpmbuilder options inside your specs (example). It very helpful for determining information about external sources.
  • If you have a big bunch of default options, you can define them in the preferences file. More info.
  • Since version 2.5.0 rpmbuilder provides automatic checksum generation feature. More info.

Usage

rpmbuilder

rpmbuilder-farm

Build Status

Branch Status
master CI
develop CI

Contributing

Before contributing to this project please read our Contributing Guidelines.

License

Apache License, Version 2.0

About

RPM package build helper

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •