diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..169bf5d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,41 @@ +name: Release Build and Publish Artifacts + +on: + push: + tags: + - 'v*' + workflow_dispatch: + +jobs: + release: + name: Build and Publish Release Artifacts + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + pip install build + + - name: Build package distribution artifacts + run: python -m build + + - name: Create Release and Upload Artifacts + uses: softprops/action-gh-release@v2 + with: + files: | + dist/*.whl + dist/*.tar.gz + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Makefile b/Makefile index c8c582d..0c16799 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # Makefile for Architecture Governance Toolkit -.PHONY: help build-analysis-image run-analysis adr-new artifacts-dir +.PHONY: help build build-analysis-image run-analysis adr-new artifacts-dir sbom hotspots ownership drift risk full-analysis clean ANALYSIS_IMAGE=analysis:local ARTIFACTS_DIR=artifacts @@ -8,6 +8,7 @@ ARTIFACTS_DIR=artifacts help: @echo "Architecture Governance Toolkit - Available Commands:" @echo "" + @echo " make build - Build Python wheel and sdist package artifacts" @echo " make artifacts-dir - Create artifacts directory" @echo " make build-analysis-image - Build Docker analysis image" @echo " make run-analysis - Run analysis in Docker" @@ -15,6 +16,9 @@ help: @echo " make clean - Remove artifacts directory" @echo "" +build: + python3 -m build + artifacts-dir: mkdir -p $(ARTIFACTS_DIR)/sbom $(ARTIFACTS_DIR)/timeseries diff --git a/README.md b/README.md index f60c16b..02cf596 100644 --- a/README.md +++ b/README.md @@ -356,6 +356,14 @@ Optional for extended features: - Trivy and/or Semgrep for security scanning - Syft for SBOM generation +### One-Command Validation + +To validate the repository, execute the unit test suite and run the full governance analysis pipeline in a single command: + +```bash +python3 -m pytest && make full-analysis +``` + ### Option 1: Run Directly ```bash diff --git a/seed.yaml b/seed.yaml index e7ff98b..049ac8d 100644 --- a/seed.yaml +++ b/seed.yaml @@ -12,20 +12,30 @@ metadata: implementation_status: ACTIVE tier: standard promotion_status: CANDIDATE - last_validated: "2026-02-12" + last_validated: "2026-04-14" generated: "2026-02-17" sprint: "SENSORIA" language: python + validation_command: "python3 -m pytest && make full-analysis" + publication_target: "github_release" + release_url: "https://github.com/organvm-iv-taxis/reverse-engine-recursive-run/releases" + build_artifact: "dist/reverse_engine_recursive_run-0.1.0-py3-none-any.whl" agents: - name: ci trigger: on_push - workflow: .github/workflows/ci-python.yml + workflow: .github/workflows/ci.yml description: "Continuous integration pipeline" + - name: release + trigger: on_tag + workflow: .github/workflows/release.yml + description: "Release build and artifact publication pipeline" produces: - type: theory description: "Epistemological frameworks, recursive engines, ontological systems" + - type: release_artifact + description: "Python wheel and sdist package distributions attached to GitHub releases" consumes: []