Skip to content

Commit

Permalink
GitHub workflow to build and test on push or pull request
Browse files Browse the repository at this point in the history
Only some Debian flavors are tested for now; other distros can be
easily added later.
  • Loading branch information
rhansen committed Sep 10, 2024
1 parent e0c462f commit 20252be
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 0 deletions.
61 changes: 61 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: CI
on:
push:
pull_request:

jobs:
test-debian-like:
strategy:
fail-fast: false
matrix:
image:
- ubuntu:latest
- ubuntu:20.04
- ubuntu:22.04
- debian:testing
- debian:stable
- debian:oldstable
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
steps:
- name: install dependencies
run: |
apt-get update &&
{
# /usr/share/pkgconfig/systemd.pc was moved from the systemd
# package to a new systemd-dev package in systemd 253-2 (Debian 13
# (trixie) and later, Ubuntu 23.10 (mantic) and later).
apt-get install -y --no-install-recommends systemd-dev ||
apt-get install -y --no-install-recommends systemd
} &&
apt-get install -y --no-install-recommends \
automake \
build-essential \
ca-certificates \
git \
pkg-config \
python3 \
scdoc \
;
env:
DEBIAN_FRONTEND: noninteractive
- uses: actions/checkout@v4
# https://github.com/actions/checkout/issues/1169
- name: fix git permissions
run: git config --system --add safe.directory $(pwd)
- name: autogen
run: ./autogen
- name: configure
run: ./configure
- name: check
run: make VERBOSE=1 AM_COLOR_TESTS=always check
- name: distcheck
run: make VERBOSE=1 AM_COLOR_TESTS=always distcheck
- name: distribution tarball is complete
run: ./.github/workflows/scripts/dist-tarball-check
- if: ${{ matrix.image == 'debian:testing' }}
uses: actions/upload-artifact@v4
with:
name: distribution-tarball
path: keyd-*.tar.gz
59 changes: 59 additions & 0 deletions .github/workflows/scripts/dist-tarball-check
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/bin/sh

pecho() { printf %s\\n "$*"; }
log() { pecho "$@"; }
warning() { log "::warning::$@"; }
error() { log "::error::$@"; }
fatal() { error "$@"; exit 1; }
try() { "$@" || fatal "'$@' failed"; }

dist_tarball=$(ls keyd-*.tar.gz) \
|| fatal "'make dist' must be run before this test"

tmpdir=$(try mktemp -d) || exit 1

log "Copying contents of Git repository..."
try git archive --format=tar --prefix=git-repo/ HEAD \
| try tar -C "${tmpdir}" -xv || exit 1
(
try cd "${tmpdir}"/git-repo
# Delete files checked into Git that shouldn't be in the distribution
# tarball.
try rm -rf \
.gitattributes \
.github \
.gitignore \
;
) || exit 1

log "Extracting distribution tarball..."
try tar -C "${tmpdir}" -xvzf "${dist_tarball}"
try mv "${tmpdir}/${dist_tarball%.tar.gz}" "${tmpdir}"/dist-tarball
(
try cd "${tmpdir}"/dist-tarball
# Delete generated files
try rm -rf \
.dist-version \
Makefile.in \
aclocal.m4 \
autoconfig.h.in \
build-aux/compile \
build-aux/depcomp \
build-aux/install-sh \
build-aux/missing \
build-aux/test-driver \
configure \
;
) || exit 1

log "Comparing Git repository with distribution tarball..."
cd "${tmpdir}"
diff -qNr git-repo dist-tarball >/dev/null || {
error "Unexpected diff between the repo and the distribution tarball."
error "You may need to add a file to EXTRA_DIST in Makefile.am."
error "Diff output:"
diff -uNr git-repo dist-tarball \
| while IFS= read -r line; do error "${line}"; done
exit 1
}
log "No difference"

0 comments on commit 20252be

Please sign in to comment.