From c441395c0dd9aa1c7fdb2846a5442ee816e2de29 Mon Sep 17 00:00:00 2001 From: Dave Dykstra <2129743+DrDaveD@users.noreply.github.com> Date: Mon, 9 Sep 2024 11:19:46 -0500 Subject: [PATCH] add ci checks --- .github/workflows/build.yml | 41 +++++++++++++++++++++++++++++++++++++ ci/docker-run | 23 +++++++++++++++++++++ ci/make-and-test | 13 ++++++++++++ makedist | 6 +++++- 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml create mode 100755 ci/docker-run create mode 100755 ci/make-and-test diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..ab0d997 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,41 @@ +name: Make distributions and test + +on: + # run workflows on main master and release/** branches + push: + branches: + - main + - master + - release/** + # run workflows on pull requests against the same branches + pull_request: + branches: + - main + - master + - release/** + +# automatically cancel redundant builds +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + makeandtest: + name: EL ${{ matrix.version }} (${{ matrix.distro }}) + strategy: + fail-fast: false + matrix: + include: + - distro: eurolinux/centos-7 + version: latest + - distro: rockylinux + version: 8 + - distro: rockylinux + version: 9 + runs-on: ubuntu-24.04 + steps: + - name: Get source code + uses: actions/checkout@v3 + + - name: Run make-and-test under docker + run: ./ci/docker-run ${{ matrix.distro }}:${{ matrix.version }} diff --git a/ci/docker-run b/ci/docker-run new file mode 100755 index 0000000..a6bd347 --- /dev/null +++ b/ci/docker-run @@ -0,0 +1,23 @@ +#!/bin/bash -e +# Run docker as shown at +# https://djw8605.github.io/2016/05/03/building-centos-packages-on-travisci/ +# +# This more complicated setup is needed for github actions too because +# they do not provide a mechanism for reliably enabling user namespaces. +# Github actions does at least start a VM with docker already running. + +# Assumes running on Ubuntu 24+ + +DOCKER_HUB_URI="$1" +docker pull "$DOCKER_HUB_URI" + +DOCKER_CONTAINER_NAME="test_${OS_TYPE##*/}_${OS_VERSION//./_}" + +set -x +docker run --privileged --network=host -v "$(pwd):/source:rw" \ + --name "$DOCKER_CONTAINER_NAME" "$DOCKER_HUB_URI" /bin/bash -exc \ + "cd /source && ./ci/make-and-test" + +docker ps -a +docker stop "$DOCKER_CONTAINER_NAME" +docker rm -v "$DOCKER_CONTAINER_NAME" diff --git a/ci/make-and-test b/ci/make-and-test new file mode 100755 index 0000000..31b56ab --- /dev/null +++ b/ci/make-and-test @@ -0,0 +1,13 @@ +#!/bin/bash + +set -ex +yum -y install procps-ng cpio findutils + +# because host kernel is Ubuntu 24+, this enables user namespaces +sysctl kernel.apparmor_restrict_unprivileged_userns=0 + +for DIST in default osg egi; do + rm -rf dist + ./makedist $DIST + ./cvmfsexec atlas.cern.ch -- ls /cvmfs/atlas.cern.ch +done diff --git a/makedist b/makedist index 199829d..177c0eb 100755 --- a/makedist +++ b/makedist @@ -185,6 +185,10 @@ fi echo "Making $SINGMSG$DISTTYPE distribution for $MACHTYPE" getcoprurl() { + if [ ! -f /usr/bin/yumdownloader ]; then + echo "yumdownloader not found, skipping trying to get $1 from copr" >&2 + return + fi typeset TMPF=$(mktemp) typeset REPONAME=makedist-$1 cat >$TMPF <