feat: knowledge-base memory, Dockerfile, docker-compose, CI/release workflows, PR template

This commit is contained in:
copilot-swe-agent[bot]
2026-07-25 12:29:21 +00:00
committed by GitHub
parent c74c8b0d8b
commit 867542dd49
11 changed files with 543 additions and 22 deletions
+21
View File
@@ -0,0 +1,21 @@
## What does this PR do?
<!-- A brief description of the change and why it's needed. -->
## Type of change
- [ ] `fix:` Bug fix (patch release)
- [ ] `feat:` New feature (minor release)
- [ ] `feat!:` / `BREAKING CHANGE:` Breaking change (major release)
- [ ] `docs:` Documentation only
- [ ] `chore:` / `refactor:` / `test:` No release
## Notes
<!-- Anything reviewers should pay special attention to, or context that doesn't fit above. -->
---
> **Commit message format** – this project uses [Conventional Commits](https://www.conventionalcommits.org/)
> to drive automatic semantic versioning via `release-please`.
> Use `fix:`, `feat:`, or `feat!:` as your commit prefix so the version bump is picked up correctly.
+62
View File
@@ -0,0 +1,62 @@
name: CI
on:
push:
branches-ignore:
- main
pull_request:
permissions:
contents: read
packages: write
jobs:
lint-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- run: pip install -e ".[dev]"
- run: python -m ruff check steward/ tests/
- run: python -m pytest tests/ -v
docker-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Log in to GHCR
# Only log in when pushing (not on PRs from forks)
if: github.event_name == 'push'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
# feature-branch push → ghcr.io/…/steward:my-feature-branch
type=ref,event=branch
# pull-request → ghcr.io/…/steward:pr-42
type=ref,event=pr
# always → ghcr.io/…/steward:sha-abc1234
type=sha,prefix=sha-
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
# Push on branch pushes; only validate (no push) on PRs
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
+62
View File
@@ -0,0 +1,62 @@
name: Release
# Runs on every push to main.
# release-please analyses conventional commits since the last release and either:
# • creates/updates a "Release PR" that bumps pyproject.toml + CHANGELOG.md, or
# • (when that PR is merged) tags the repo and creates a GitHub Release.
# Only when a GitHub Release is actually created does the publish job run.
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
packages: write
jobs:
release-please:
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
release-type: python
publish:
needs: release-please
if: needs.release-please.outputs.release_created == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
# semver tag → ghcr.io/…/steward:1.2.3
type=raw,value=${{ needs.release-please.outputs.tag_name }}
# always push latest on a real release
type=raw,value=latest
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}