Skip to content

Build o2-full-deps repositories #125

Build o2-full-deps repositories

Build o2-full-deps repositories #125

Workflow file for this run

---
# Create repositories with all O2 prerequisites plus aliBuild and push them
# upstream (e.g. to S3).
name: "Build o2-full-deps repositories"
# Controls when the action will run. This workflow is triggered manually.
"on":
workflow_dispatch:
permissions: {}
jobs:
rpm:
runs-on: ${{ matrix.runs_on || 'ubuntu-latest' }}
strategy:
# Keep running jobs for other CentOS/Alma/Fedora versions, even if one fails.
fail-fast: false
matrix:
# The include: key extends the matrix specified above with extra variables.
include:
- el_version: el8
container: almalinux:8
alibuild_tag: v1.17.33
- el_version: el9
container: almalinux:9
alibuild_tag: v1.17.33
- el_version: fedora
container: fedora:40
alibuild_tag: v1.17.33
# aarch64 build on native ARM runner
- el_version: el9
container: almalinux:9
alibuild_tag: v1.17.33
runs_on: ubuntu-24.04-arm
name: "RPM (${{ matrix.el_version }} ${{ matrix.runs_on || 'x86_64' }})"
container: ${{ matrix.container }}
env:
ALIBUILD_TAG: ${{ matrix.alibuild_tag }}
DISTRO: ${{ matrix.el_version }}
steps:
# For rpms/*.spec
- uses: actions/checkout@v4
- name: "Install prerequisites"
run: |
set -ex
yum clean all
yum update -y
yum install -y rpm-build scl-utils-build createrepo unzip git python3 python3-pip python3-setuptools
curl https://rclone.org/install.sh | bash
cat << EOF > /tmp/rclone.conf
${{ secrets.S3_RCLONE_CONFIG }}
EOF
- name: "Build the ${{ matrix.el_version }} RPM and create a yum repo"
run: |
set -ex
rpmbuild -ba "rpms/o2-prereq-$DISTRO.spec"
# Build the alibuild RPM
git clone -b "$ALIBUILD_TAG" https://github.com/alisw/alibuild
cd alibuild
case "$DISTRO" in
*) deps=python3,git,python3-pyyaml,python3-requests,python3-distro ;;
esac
python3 setup.py bdist_rpm --requires "$deps"
# Copy new alibuild RPM to preserve alongside existing versions
rclone --config /tmp/rclone.conf copy \
dist/ \
"rpms3:alibuild-repo/RPMS/o2-full-deps_$DISTRO.$(uname -m | tr _ -)/" \
--include "alibuild-*.noarch.rpm"
cp dist/alibuild-*.noarch.rpm ~/rpmbuild/RPMS/"$(uname -m)"/
cd ~/rpmbuild/RPMS/"$(uname -m)"/
createrepo .
ls -la
# Sync o2-full-deps RPMs and repodata, but exclude alibuild RPMs from deletion
rclone --config /tmp/rclone.conf --transfers=10 --progress --delete-before \
sync local:./ "rpms3:alibuild-repo/RPMS/o2-full-deps_$DISTRO.$(uname -m | tr _ -)/" \
--exclude "alibuild-*.rpm"
deb-ubuntu:
runs-on: ubuntu-latest
strategy:
# Keep running jobs for other Ubuntu versions, even if one fails.
fail-fast: false
matrix:
ubuntu_codename:
- focal # 20.04
- jammy # 22.04
- noble # 24.04
name: DEB (${{ matrix.ubuntu_codename }})
container: ubuntu:${{ matrix.ubuntu_codename }}
env:
ALIBUILD_TAG: v1.17.40
ALIBUILD_DISTRO: ${{ matrix.ubuntu_codename }}
DEBIAN_FRONTEND: noninteractive
steps:
- name: "Install prerequisites"
run: |
apt update
apt install -y vim git devscripts build-essential lintian debhelper dh-python python3-all python3-setuptools python3-setuptools-scm
mkdir -p ~/.gnupg
chmod 700 ~/.gnupg
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
echo -n "${{ secrets.LAUNCHPAD_PPA_GPG_KEY }}" | gpg --no-tty --batch --import
- name: "Build a DEB for Ubuntu and push it to the PPA"
run: |
set -x
git clone https://github.com/alisw/alibuild
cd alibuild
rm -rf .git
cat <<EOF > debian/changelog
python3-alibuild (${ALIBUILD_TAG#v}+$ALIBUILD_DISTRO) $ALIBUILD_DISTRO; urgency=medium
* Bump to $ALIBUILD_TAG
-- Giulio Eulisse <giulio.eulisse@cern.ch> $(date -R -u)
EOF
debuild --no-lintian -kA3A177D7C6BAD5C044ACAC10F56D273E83B84A47 -S -p'gpg --no-tty --passphrase ${{ secrets.LAUNCHPAD_PPA_GPG_PASS }}'
dput ppa:alisw/ppa "../python3-alibuild_${ALIBUILD_TAG#v}+${ALIBUILD_DISTRO}_source.changes"