OBS: move gerrit-binpkgs logic to separate script

As I'm preparing slides for a OsmoDevCon talk, I'm realizing that it is
quite cumbersome for users to build debian packages from Osmocom git
repositories (the same way gerrit does it, to reproduce errors locally).

Move the logic from the gerrit-binpkgs job to a separate script that can
be run from an Osmocom git repository, will figure out the repository
name from there and only needs the target distribution as argument.

Usage example:
  $ git clone https://gitea.osmocom.org/osmocom/osmo-ci
  $ cd libosmocore
  $ ../osmo-ci/scripts/obs/gerrit_binpkgs.sh debian:12  # or debian:11, debian:10, almalinux:8

Change-Id: I100d8dfc0c58bdafe7efb0fa4108031ce10398a5
This commit is contained in:
Oliver Smith 2024-04-25 13:42:15 +02:00
parent ec9efbf649
commit b2e128511d
3 changed files with 44 additions and 21 deletions

View File

@ -28,7 +28,7 @@
scm:
- git:
basedir: 'code-from-gerrit'
basedir: '$PROJECT_NAME'
url: '$GERRIT_REPO_URL'
credentials-id: d5eda5e9-b59d-44ba-88d2-43473cb6e42d
branches:
@ -60,27 +60,9 @@
osmo-ci
git -C osmo-ci log --oneline
# Move code from gerrit to build_srcpkg.py's git cache
cache_dir=osmo-ci/scripts/obs/_cache
mkdir -p $cache_dir
mv code-from-gerrit "$cache_dir/$PROJECT_NAME"
cd "$PROJECT_NAME"
../osmo-ci/scripts/obs/gerrit_binpkgs.sh "$DISTRO"
# Set a known branch name
git -C "$cache_dir/$PROJECT_NAME" checkout -B "origin/gerrit"
# Build source package
cd osmo-ci/scripts/obs/
./build_srcpkg.py \
--docker \
--feed master \
--git-branch gerrit \
--git-skip-fetch \
"$PROJECT_NAME"
# Build binary package
./build_binpkg.py \
--docker "$DISTRO" \
"$PROJECT_NAME"
wrappers:
- ansicolor:
colormap: xterm

View File

@ -4,6 +4,7 @@ This directory contains the following scripts, related to building Osmocom
projects in OBS (Open Build Service) and building binary packages. Here is an
overview of the scripts, run them with -h to get a more detailed description.
* gerrit_binpkgs.sh: build source + binary packages like CI for gerrit
* build_srcpkg.py: build one source package for an Osmocom project
* update_obs_project.py: generate source packages and upload them to OBS
* build_binpkg.py: build rpm/deb packages for one Osmocom project

40
scripts/obs/gerrit_binpkgs.sh Executable file
View File

@ -0,0 +1,40 @@
#!/bin/sh -e
SCRIPTS_OBS_DIR="$(realpath "$(dirname "$0")")"
DISTRO="$1"
if [ -z "$DISTRO" ]; then
echo "usage: gerrit-binpkgs.sh DISTRO"
echo "examples:"
echo " gerrit-binpkgs.sh debian:12"
echo " gerrit-binpkgs.sh almalinux:8"
exit 1
fi
GIT_REPO_DIR="$(git rev-parse --show-toplevel 2>/dev/null || true)"
if [ -z "$GIT_REPO_DIR" ]; then
echo "ERROR: run inside a git repository of an Osmocom project"
exit 1
fi
CACHE_DIR="$SCRIPTS_OBS_DIR/_cache"
PROJECT_NAME="$(basename "$GIT_REPO_DIR")"
# Copy the source dir into the cache dir. It will be mounted inside the docker
# containers for building source and binary packages (so using a symlink does
# not work). Use rsync so it is very fast.
echo ":: Copying the source to the cache dir"
mkdir -p "$CACHE_DIR"
rsync -a --delete "$GIT_REPO_DIR" "$CACHE_DIR"
echo ":: Building the source package"
"$SCRIPTS_OBS_DIR"/build_srcpkg.py \
--docker \
--feed master \
--git-skip-fetch \
--git-skip-checkout \
"$PROJECT_NAME"
echo ":: Building the binary packages"
"$SCRIPTS_OBS_DIR"/build_binpkg.py \
--docker "$DISTRO" \
"$PROJECT_NAME"