-
Notifications
You must be signed in to change notification settings - Fork 0
release: prepare LogSight-AI v0.1.0 #23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,67 @@ | ||||||||||
| name: Release | ||||||||||
|
|
||||||||||
| on: | ||||||||||
| push: | ||||||||||
| tags: | ||||||||||
| - "v*.*.*" | ||||||||||
|
|
||||||||||
| permissions: | ||||||||||
| contents: write | ||||||||||
| packages: write | ||||||||||
|
|
||||||||||
| jobs: | ||||||||||
| release: | ||||||||||
| runs-on: ubuntu-latest | ||||||||||
| steps: | ||||||||||
| - uses: actions/checkout@v7 | ||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win Disable checkout credential persistence.
Set Proposed fix - uses: actions/checkout@v7
+ with:
+ persist-credentials: false📝 Committable suggestion
Suggested change
🧰 Tools🪛 zizmor (1.29.0)[warning] 16-16: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false (artipacked) 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||||||||||
|
|
||||||||||
| - uses: actions/setup-python@v7 | ||||||||||
| with: | ||||||||||
| python-version: "3.11" | ||||||||||
|
|
||||||||||
| - name: Build Python distributions | ||||||||||
| run: | | ||||||||||
| python -m pip install --upgrade pip build | ||||||||||
| python -m build | ||||||||||
|
|
||||||||||
| - name: Verify tag matches package version | ||||||||||
| run: | | ||||||||||
| python - <<'PY' | ||||||||||
| import pathlib, re, os | ||||||||||
| text = pathlib.Path("pyproject.toml").read_text() | ||||||||||
| version = re.search(r'^version = "([^"]+)"', text, re.M).group(1) | ||||||||||
| tag = os.environ["GITHUB_REF_NAME"] | ||||||||||
| assert tag == f"v{version}", f"tag {tag} does not match package version {version}" | ||||||||||
| PY | ||||||||||
|
|
||||||||||
| - name: Log in to GHCR | ||||||||||
| uses: docker/login-action@v3 | ||||||||||
| with: | ||||||||||
| registry: ghcr.io | ||||||||||
| username: ${{ github.actor }} | ||||||||||
| password: ${{ secrets.GITHUB_TOKEN }} | ||||||||||
|
|
||||||||||
| - name: Generate container metadata | ||||||||||
| id: meta | ||||||||||
| uses: docker/metadata-action@v5 | ||||||||||
| with: | ||||||||||
| images: ghcr.io/${{ github.repository_owner }}/logsight-ai | ||||||||||
| tags: | | ||||||||||
| type=semver,pattern={{version}} | ||||||||||
| type=semver,pattern={{major}}.{{minor}} | ||||||||||
| type=raw,value=latest | ||||||||||
|
|
||||||||||
| - name: Build and publish container | ||||||||||
| uses: docker/build-push-action@v6 | ||||||||||
| with: | ||||||||||
| context: . | ||||||||||
| push: true | ||||||||||
| tags: ${{ steps.meta.outputs.tags }} | ||||||||||
|
Comment on lines
+49
to
+59
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift Prevent Each tag run pushes 🤖 Prompt for AI Agents |
||||||||||
| labels: ${{ steps.meta.outputs.labels }} | ||||||||||
|
|
||||||||||
| - name: Create GitHub Release | ||||||||||
| uses: softprops/action-gh-release@v2 | ||||||||||
| with: | ||||||||||
| generate_release_notes: true | ||||||||||
| files: | | ||||||||||
| dist/* | ||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| # Changelog | ||
|
|
||
| All notable release-level changes to LogSight-AI are documented here. | ||
|
|
||
| ## [Unreleased] | ||
|
|
||
| ## [0.1.0] - 2026-08-21 | ||
|
|
||
| ### Added | ||
| - Installable `logsight-ai` Python package with the `logsight` console entry point. | ||
| - Automated quality checks covering formatting, linting, strict type checking, tests, and coverage. | ||
| - Package and Docker-image build verification in CI, including a container health command. | ||
| - Security checks including Bandit, dependency auditing, secret scanning, license inventory, and an SPDX SBOM artifact. | ||
| - Reproducible pytest-benchmark execution with JSON benchmark artifacts. | ||
| - Tagged release automation that builds Python distributions, publishes the LogSight-AI container to GHCR, and creates a GitHub Release. | ||
|
|
||
| ### Release scope | ||
| - Version `0.1.0` remains an alpha release, matching the package metadata. | ||
| - This changelog describes repository capabilities already represented by the package and CI/release configuration; it does not claim production readiness or measured real-world capacity. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| # LogSight-AI v0.1.0 | ||
|
|
||
| LogSight-AI v0.1.0 is the first versioned release prepared from the repository's existing installable Python package and verified CI surface. | ||
|
|
||
| ## Verified release surface | ||
|
|
||
| The repository declares package version `0.1.0`, Python `>=3.10`, and a `logsight` console entry point in `pyproject.toml`. | ||
|
|
||
| The existing CI verifies: | ||
|
|
||
| - formatting with Ruff; | ||
| - linting with Ruff; | ||
| - strict mypy checks for the `logsight` package; | ||
| - pytest with a 90% coverage floor; | ||
| - Python package builds; | ||
| - Docker image builds and the container `health` command; | ||
| - Bandit, pip-audit, Gitleaks, license inventory, and SPDX SBOM generation; | ||
| - a pytest-benchmark run with a JSON artifact. | ||
|
|
||
| ## Publishing contract | ||
|
|
||
| The release workflow added for v0.1.0 triggers only on semantic-version tags matching `v*.*.*`. It verifies that the pushed tag matches the package version before publishing. | ||
|
|
||
| For `v0.1.0`, a successful tagged workflow will: | ||
|
|
||
| 1. build the wheel and source distribution in `dist/`; | ||
| 2. publish a container to `ghcr.io/CoreyLeath-code/logsight-ai` with semantic-version and `latest` tags; | ||
| 3. create the GitHub Release with generated release notes; and | ||
| 4. attach the built Python distributions to the GitHub Release. | ||
|
|
||
| ## Scope | ||
|
|
||
| This is an alpha release. The release does not claim production readiness, horizontal scalability, or real-world capacity/performance beyond evidence explicitly stored and reproducible in the repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When a maintainer tags an unmerged or failing commit that still declares the matching package version, this workflow immediately publishes its distributions and container. The existing
.github/workflows/ci.ymlruns only for pushes and pull requests targetingmain, so a tag push neither executes those checks nor proves that they passed for the tagged SHA. Require a successful CI run for the exact SHA, or run the quality, test, and security gates in this job before either publishing step.Useful? React with 👍 / 👎.