ci: Add GitHub Actions (test, lint, release) and issue templates
This commit is contained in:
25
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
25
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Bug Report
|
||||||
|
|
||||||
|
about: Report something that is not working as expected.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear description of what went wrong.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Run '...'
|
||||||
|
3. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
What you expected to happen.
|
||||||
|
|
||||||
|
**Environment:**
|
||||||
|
- OS: [e.g. Debian 12, macOS 14]
|
||||||
|
- SBCL version: [e.g. 2.4.0]
|
||||||
|
- OpenCortex version: [e.g. v0.1.0]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Any other relevant information (logs, stack traces, etc.)
|
||||||
22
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
22
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
name: Feature Request
|
||||||
|
|
||||||
|
about: Suggest a new feature or enhancement.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the problem**
|
||||||
|
What problem does this feature solve?
|
||||||
|
|
||||||
|
**Describe the ideal solution**
|
||||||
|
A clear description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives considered**
|
||||||
|
Any alternative solutions you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Any other relevant context (mockups, related issues, etc.)
|
||||||
|
|
||||||
|
**Implementation suggestion**
|
||||||
|
(Optional) If you have thoughts on how to implement this in pure Common Lisp + Org-mode:
|
||||||
|
- Which skill should own this?
|
||||||
|
- Should it be a =def-cognitive-tool=, a new skill, or an enhancement to an existing one?
|
||||||
45
.github/workflows/lint.yml
vendored
Normal file
45
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ubuntu:latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
git emacs-nox
|
||||||
|
|
||||||
|
- name: Check for forbidden patterns
|
||||||
|
run: |
|
||||||
|
grep -r "json\." --include="*.lisp" . && \
|
||||||
|
echo "ERROR: Found JSON usage in Lisp files" && exit 1 || \
|
||||||
|
echo "OK: No JSON in Lisp files"
|
||||||
|
|
||||||
|
- name: Check literate granularity
|
||||||
|
run: |
|
||||||
|
find . -name "*.org" -path "./skills/*" -exec grep -L "#+begin_src lisp" {} \; | \
|
||||||
|
grep -v "CLA\|CONTRIBUTING\|CHANGELOG" && \
|
||||||
|
echo "WARNING: Some skills lack lisp blocks" || \
|
||||||
|
echo "OK: All skills have lisp blocks"
|
||||||
|
|
||||||
|
- name: Verify .lisp files are generated
|
||||||
|
run: |
|
||||||
|
for f in library/gen/*.lisp; do
|
||||||
|
org="${f%.lisp}.org"
|
||||||
|
if [ -f "$org" ]; then
|
||||||
|
: # generated, OK
|
||||||
|
else
|
||||||
|
echo "WARNING: $f has no corresponding .org source"
|
||||||
|
fi
|
||||||
|
done
|
||||||
31
.github/workflows/release.yml
vendored
Normal file
31
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Create tarball
|
||||||
|
run: |
|
||||||
|
git archive --format=tar.gz --prefix=opencortex-$(git describe --tags) HEAD -o opencortex.tar.gz
|
||||||
|
|
||||||
|
- name: Create zipball
|
||||||
|
run: |
|
||||||
|
git archive --format=zip --prefix=opencortex-$(git describe --tags) HEAD -o opencortex.zip
|
||||||
|
|
||||||
|
- name: Upload to GitHub Release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: |
|
||||||
|
opencortex.tar.gz
|
||||||
|
opencortex.zip
|
||||||
|
generate_release_notes: true
|
||||||
44
.github/workflows/test.yml
vendored
Normal file
44
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: statusoftech/sbcl:2.4.0
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
git curl openssl make automake autoconf gcc clisp python3 python3-pip
|
||||||
|
|
||||||
|
- name: Install Quicklisp
|
||||||
|
run: |
|
||||||
|
curl -L https://beta.quicklisp.org/quicklisp.lisp -o /tmp/quicklisp.lisp
|
||||||
|
sbcl --non-interactive \
|
||||||
|
--load /tmp/quicklisp.lisp \
|
||||||
|
--eval '(quicklisp-quickstart:install :path "~/quicklisp/")' \
|
||||||
|
--eval '(ql:add-to-init-file)'
|
||||||
|
|
||||||
|
- name: Install ASDF systems
|
||||||
|
run: |
|
||||||
|
sbcl --non-interactive \
|
||||||
|
--eval '(ql:quickload :opencortex)'
|
||||||
|
env:
|
||||||
|
HOME: /root
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
sbcl --non-interactive \
|
||||||
|
--eval '(ql:quickload :opencortex/tests)' \
|
||||||
|
--eval '(uiop:quit 0)'
|
||||||
|
env:
|
||||||
|
HOME: /root
|
||||||
Reference in New Issue
Block a user