aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-31 07:45:09 -0500
committerCraig Jennings <c@cjennings.net>2026-05-31 07:45:09 -0500
commita2515431213793656f9907e81fba2f73f535fd70 (patch)
treea59777469cf5e498ff077b5c36313da5535b7b16
parentb2710e21202a2f2f7542d11d19f0cd5d20b5ebf2 (diff)
downloadpearl-a2515431213793656f9907e81fba2f73f535fd70.tar.gz
pearl-a2515431213793656f9907e81fba2f73f535fd70.zip
ci: add GitHub Actions workflow
There was no CI: the suite, byte-compile, and lint only ran when I ran them locally, so a regression could land on main unnoticed until the next manual run. This adds a workflow that runs make compile, make lint, and make test on every push to main and every PR, across Emacs 27.2 through 30.1 (27.1 is the package floor). An advisory snapshot job surfaces upcoming-Emacs breakage without blocking a merge. The README carries a status badge.
-rw-r--r--.github/workflows/ci.yml61
1 files changed, 61 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..517c6c9
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,61 @@
+name: CI
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ # 27.1 is the package floor (see Eask / Package-Requires); the rest
+ # track the supported releases. snapshot is advisory.
+ emacs-version:
+ - "27.2"
+ - "28.2"
+ - "29.4"
+ - "30.1"
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: purcell/setup-emacs@master
+ with:
+ version: ${{ matrix.emacs-version }}
+
+ - uses: emacs-eask/setup-eask@master
+ with:
+ version: "snapshot"
+
+ - name: Install dependencies
+ run: make setup
+
+ - name: Byte-compile (warnings are errors)
+ run: make compile
+
+ - name: Lint (elisp-lint + checkdoc)
+ run: make lint
+
+ - name: Run tests
+ run: make test
+
+ # Advisory run against Emacs snapshot: surfaces upcoming breakage without
+ # blocking a merge when the dev build churns.
+ snapshot:
+ runs-on: ubuntu-latest
+ continue-on-error: true
+ steps:
+ - uses: actions/checkout@v4
+ - uses: purcell/setup-emacs@master
+ with:
+ version: "snapshot"
+ - uses: emacs-eask/setup-eask@master
+ with:
+ version: "snapshot"
+ - run: make setup
+ - run: make compile
+ - run: make lint
+ - run: make test