Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
1548aec
fix: scope scorecards push to develop
seonghobae Apr 8, 2026
c3708b6
test: add enforced quality gate
seonghobae Apr 8, 2026
a80311d
test: cover synthetic helper branches
seonghobae Apr 8, 2026
778e7bc
chore: add automated dependency updates
seonghobae Apr 8, 2026
f8ed113
docs: add security reporting policy
seonghobae Apr 8, 2026
989aaee
Merge branch 'feature/quality-gate' into fix/scorecards-default-branch
seonghobae Apr 8, 2026
dcbad15
Merge branch 'feature/quality-gate' into chore/dependabot-updates
seonghobae Apr 8, 2026
50d7a04
Merge branch 'feature/quality-gate' into docs/security-policy
seonghobae Apr 8, 2026
a27862f
ci: pin workflow dependencies
seonghobae Apr 8, 2026
cd1f368
ci: pin workflow actions and broaden PR checks
seonghobae Apr 8, 2026
60bc903
ci: lock uv installs and PR workflow coverage
seonghobae Apr 8, 2026
2cb5f61
ci: add release provenance workflow
seonghobae Apr 8, 2026
58689b1
ci: force github actions to node24
seonghobae Apr 8, 2026
3143f2c
docs: record OpenSSF badge decision
seonghobae Apr 8, 2026
21b02c3
docs: add changelog baseline
seonghobae Apr 8, 2026
8b94be8
ci: pin workflow dependencies (#5)
seonghobae Apr 9, 2026
76487c6
Merge remote-tracking branch 'origin/develop' into feature/quality-gate
seonghobae Apr 9, 2026
f58d525
Merge remote-tracking branch 'origin/fix/scorecards-default-branch' i…
seonghobae Apr 9, 2026
5565e84
Merge remote-tracking branch 'origin/chore/dependabot-updates' into f…
seonghobae Apr 9, 2026
d51d414
Merge remote-tracking branch 'origin/docs/security-policy' into featu…
seonghobae Apr 9, 2026
da3d297
Merge remote-tracking branch 'origin/chore/changelog-baseline' into f…
seonghobae Apr 9, 2026
dda6bee
ci: align gh-pages workflow with repo policies
seonghobae Apr 9, 2026
fd05d58
Merge remote-tracking branch 'origin/feature/quality-gate' into featu…
seonghobae Apr 9, 2026
df0a3f8
test: tighten review-driven regressions
seonghobae Apr 9, 2026
efed71d
docs: tighten manual examples
seonghobae Apr 9, 2026
555a53e
test: strengthen review follow-up assertions
seonghobae Apr 9, 2026
2bb5f77
docs: align installation guidance with recommendation
seonghobae Apr 9, 2026
4c16713
ci: add CircleCI quality gate
seonghobae Apr 9, 2026
74ab00f
ci: harden CircleCI uv install
seonghobae Apr 9, 2026
be18d06
test: tighten remaining reviewer regressions
seonghobae Apr 9, 2026
566e704
docs: clarify supported Python range without implying 3.10-only use
seonghobae Apr 9, 2026
65b2b19
ci: harden docs deploy path for reproducible Pages builds
seonghobae Apr 9, 2026
ab11cce
ci: close remaining automation review gaps
seonghobae Apr 9, 2026
bf9aac9
docs: keep dev install examples shell-safe and in sync
seonghobae Apr 9, 2026
cd9f18a
ci: enable repo-local CodeRabbit approval workflow
seonghobae Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
version: 2.1

jobs:
quality-gate:
docker:
- image: cimg/python:3.10
steps:
- checkout
- run:
name: Install uv
command: |
export UV_UNMANAGED_INSTALL=1
export UV_NO_MODIFY_PATH=1
curl -LsSf -o /tmp/uv-install.sh https://astral.sh/uv/0.11.3/install.sh
sh /tmp/uv-install.sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$BASH_ENV"
- run:
name: Install project dependencies
command: |
source "$BASH_ENV"
uv sync --locked --extra dev
- run:
name: Run warnings-as-errors tests
command: |
source "$BASH_ENV"
PYTHONWARNINGS=error uv run pytest
- run:
name: Run coverage quality gate
command: |
source "$BASH_ENV"
uv run pytest --cov=src/newsdom_api --cov-branch --cov-report=term-missing --cov-fail-under=100

workflows:
quality-gate:
jobs:
- quality-gate
8 changes: 8 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
language: ko

reviews:
profile: chill
request_changes_workflow: true
auto_review:
enabled: true
auto_incremental_review: true
21 changes: 21 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: "/"
target-branch: develop
schedule:
interval: weekly
groups:
github-actions:
patterns:
- "*"

- package-ecosystem: "pip"
directory: "/"
target-branch: develop
schedule:
interval: weekly
groups:
python:
patterns:
- "*"
12 changes: 7 additions & 5 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
name: codeql

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
schedule:
- cron: '43 5 * * 1'

Expand All @@ -19,15 +21,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@5c8a8a642e79153f5d047b10ec1cba1d1cc65699
with:
languages: python

- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@5c8a8a642e79153f5d047b10ec1cba1d1cc65699

- name: Analyze
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@5c8a8a642e79153f5d047b10ec1cba1d1cc65699
8 changes: 5 additions & 3 deletions .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
name: dependency-review

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
pull_request:
branches: [main, develop]

permissions:
contents: read
Expand All @@ -14,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5

- name: Dependency review
uses: actions/dependency-review-action@v4
uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48
51 changes: 42 additions & 9 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: Deploy Web Manual to GitHub Pages

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
push:
branches:
Expand All @@ -13,26 +16,56 @@ on:
workflow_dispatch:

permissions:
contents: write
contents: read

concurrency:
group: github-pages
cancel-in-progress: true

jobs:
deploy:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
fetch-depth: 0
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: '3.10'

- name: Install MkDocs and Material Theme
run: |
python -m pip install --upgrade pip
pip install mkdocs-material
- name: Set up uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e
with:
version: '0.9.29'
enable-cache: true

- name: Install locked docs dependencies
run: uv sync --frozen --extra docs

- name: Build documentation site
run: uv run mkdocs build --strict

- name: Upload GitHub Pages artifact
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa
with:
path: site

deploy:
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
run: mkdocs gh-deploy --force
id: deployment
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e
38 changes: 38 additions & 0 deletions .github/workflows/quality-gate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: quality-gate

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
push:
branches: [main, develop]
pull_request:

permissions:
contents: read

jobs:
quality-gate:
name: quality-gate
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5

- name: Setup Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: '3.10'

- name: Setup uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e
with:
version: '0.11.3'

Comment thread
coderabbitai[bot] marked this conversation as resolved.
- name: Install package
run: uv sync --locked --extra dev

- name: Run quality gate
env:
PYTHONWARNINGS: error
run: uv run pytest --cov=src/newsdom_api --cov-branch --cov-report=term-missing --cov-fail-under=100
63 changes: 63 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: release

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
push:
tags:
- 'v*'
workflow_dispatch:

permissions:
contents: write
attestations: write
id-token: write

jobs:
release:
name: release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5

- name: Setup Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: '3.10'

- name: Setup uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e
with:
version: '0.11.3'

- name: Build artifacts
run: uv build

- name: Generate checksums and manifest
run: |
sha256sum dist/* > dist/SHA256SUMS.txt
python scripts/release/build_release_manifest.py dist dist/release-manifest.json

- name: Upload release artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: release-artifacts
path: dist/*

- name: Attest build provenance
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be
with:
subject-path: 'dist/*'

- name: Publish GitHub release
if: startsWith(github.ref, 'refs/tags/')
env:
GH_TOKEN: ${{ github.token }}
run: |
if gh release view "${GITHUB_REF_NAME}" >/dev/null 2>&1; then
gh release upload "${GITHUB_REF_NAME}" dist/* --clobber
else
gh release create "${GITHUB_REF_NAME}" dist/* --generate-notes
fi
12 changes: 7 additions & 5 deletions .github/workflows/scorecards.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
name: scorecards

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
push:
branches: [main, develop]
branches: [develop]
pull_request:
branches: [main, develop]
schedule:
- cron: '31 5 * * 1'

Expand All @@ -21,19 +23,19 @@ jobs:
actions: read
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false

- name: Run analysis
uses: ossf/scorecard-action@v2.4.0
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46
with:
results_file: results.sarif
results_format: sarif
publish_results: ${{ github.event_name != 'pull_request' }}

- name: Upload SARIF results
if: github.event_name != 'pull_request'
uses: github/codeql-action/upload-sarif@v3
uses: github/codeql-action/upload-sarif@5c8a8a642e79153f5d047b10ec1cba1d1cc65699
with:
sarif_file: results.sarif
17 changes: 10 additions & 7 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
name: tests

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]

permissions:
contents: read
Expand All @@ -14,19 +16,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: '3.10'

- name: Setup uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e

- name: Install package
run: |
python -m pip install --upgrade pip
pip install -e .[dev]
run: uv sync --locked --extra dev

- name: Run tests with warnings as errors
env:
PYTHONWARNINGS: error
run: pytest
run: uv run pytest
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
__pycache__/
*.egg-info/
.pytest_cache/
.coverage
.venv/
dist/
build/
Expand Down
Loading
Loading