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 3306722 commit c9235e7
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 0 deletions.
63 changes: 63 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: CI
on:
push:
pull_request:

jobs:
test-debian-like:
strategy:
fail-fast: false
matrix:
image:
- ubuntu:latest
- ubuntu:22.04
- debian:testing
- debian:stable
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
steps:
- name: install dependencies
run: |
apt-get update &&
apt-get install -y --no-install-recommends \
automake \
build-essential \
ca-certificates \
git \
pkg-config \
python3 \
scdoc \
&&
{
# /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
}
env:
DEBIAN_FRONTEND: noninteractive
- uses: actions/checkout@v4
with:
# Fetch all commits and tags so that build-aux/git-version-gen can
# discover the version number.
fetch-depth: 0
# 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 c9235e7

Please sign in to comment.