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 Dec 18, 2024
1 parent 8eae2c6 commit ce7734e
Show file tree
Hide file tree
Showing 3 changed files with 128 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"
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,12 @@ If you wish to help maintain this PPA, please contact
1. Download the desired tarball:
* Releases can be found on the [releases
page](https://github.com/rvaiya/keyd/releases).
* The current revision of the `master` branch (work-in-progress
development version) can be found at
<https://nightly.link/rvaiya/keyd/workflows/ci/master/distribution-tarball>.
Note that the distribution tarball is inside a zip file [due to an
unfortunate GitHub
limitation](https://github.com/actions/upload-artifact/issues/426).

2. Extract the tarball and `cd` to the source code directory:

Expand Down

0 comments on commit ce7734e

Please sign in to comment.