Skip to content

Add GitHub Actions CI/CD pipeline (closes #8)#9

Merged
stedrew merged 7 commits intomainfrom
add-cicd
Mar 4, 2026
Merged

Add GitHub Actions CI/CD pipeline (closes #8)#9
stedrew merged 7 commits intomainfrom
add-cicd

Conversation

@stedrew
Copy link
Contributor

@stedrew stedrew commented Mar 4, 2026

Summary

  • ci.yml: Runs two parallel jobs on every PR and push to main:
    • Backend & Analysis Testspytest tests/backend/ tests/analysis/ -v -p no:django on python:3.9.12 with pip cache
    • Frontend (Django) Testspytest tests/frontend/ -v with DJANGO_SETTINGS_MODULE set
  • docker.yml: On merge to main, builds and pushes edsim-backend and edsim-frontend images to GHCR using the auto-provided GITHUB_TOKEN (no extra secrets needed)
  • release.yml: On push of a v* tag, creates a GitHub Release with auto-generated notes from merged PRs
  • CLAUDE.md: Adds CI status badge and CI/CD reference table

Test plan

  • Open this PR → CI workflow appears under "Checks" and both jobs pass
  • Merge to main → Docker workflow builds and pushes images to https://github.com/orgs/denoslab/packages
  • git tag v0.1.0 && git push origin v0.1.0 → Release created at https://github.com/denoslab/EDSim/releases

🤖 Generated with Claude Code

Steve Drew and others added 5 commits March 3, 2026 21:48
- Add ci.yml: runs backend+analysis tests and Django frontend tests on
  every PR and push to main using python:3.9.12 with pip cache
- Add docker.yml: builds and pushes backend+frontend images to GHCR
  on merge to main using GITHUB_TOKEN (no extra secrets required)
- Add release.yml: creates a GitHub Release with auto-generated notes
  on push of a v* tag
- Update CLAUDE.md with CI badge and CI/CD reference table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ping-extensions conflict

The root requirements.txt pulls in openai which depends on anyio>=3.5,
which in turn requires typing_extensions>=4.4. The frontend requirements.txt
pins typing-extensions==4.0.0, causing an ImportError at pytest startup.

Frontend tests only use django.test so they only need the frontend
requirements plus pytest/pytest-django.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
views.py imports psutil but it was only in the root requirements.txt,
not in environment/frontend_server/requirements.txt. This caused the
frontend CI job to fail with ModuleNotFoundError.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ons from CI

pytest and pytest-django belong in environment/frontend_server/requirements.txt
as proper project dependencies, not hardcoded in the workflow YAML. The CI
workflow now just installs the requirements file — version updates only need
to happen in one place.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… from CI

Replace hardcoded python-version: "3.9.12" in both CI jobs with
python-version-file: .python-version. The .python-version file is the
single source of truth for the Python version, recognised by pyenv,
actions/setup-python, and other tooling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Steve Drew and others added 2 commits March 3, 2026 22:08
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@stedrew stedrew merged commit 7b8023a into main Mar 4, 2026
2 checks passed
@stedrew stedrew deleted the add-cicd branch March 4, 2026 05:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants