Skip to content

Commit 54fc3f3

Browse files
docs(README): cache bust for GitHub CDN (#83)
1 parent cdceda3 commit 54fc3f3

File tree

1 file changed

+103
-86
lines changed

1 file changed

+103
-86
lines changed

README.md

Lines changed: 103 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -3,92 +3,69 @@
33
A lean, production-ready **GitHub Actions starter** that ships **reusable CI workflows** for **Python (3.11/3.12)** and **TypeScript/Node 20**.
44
Designed for **always-green CI** with strict local gates mirroring CI, **CodeQL** out of the box, optional **SBOM** generation, and guard-rails for safe merges.
55

6-
<!-- BADGES:CENTERED:BEGIN -->
7-
8-
<!-- 1) Core status (fila corta arriba) -->
9-
<p align="center"><sub><strong>Core status</strong></sub></p>
10-
<p align="center">
11-
<a href="https://securityscorecards.dev/viewer/?uri=github.com/CoderDeltaLAN/ci-matrix-starter">
12-
<img alt="OpenSSF Scorecard" src="https://api.securityscorecards.dev/projects/github.com/CoderDeltaLAN/ci-matrix-starter/badge" />
13-
</a>
14-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/supply-chain.yml">
15-
<img alt="supply-chain" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/supply-chain.yml/badge.svg?branch=main&label=supply-chain" />
16-
</a>
17-
<a href="https://pypi.org/project/ci-matrix-starter/">
18-
<img alt="PyPI" src="https://img.shields.io/pypi/v/ci-matrix-starter?logo=pypi&label=PyPI" />
19-
</a>
20-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/py-ci-badge.yml">
21-
<img alt="Python CI (reusable)" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/py-ci-badge.yml/badge.svg?branch=main&label=Python%20CI%20(reusable)" />
22-
</a>
23-
</p>
24-
25-
<!-- 2) CI & automation -->
26-
<p align="center"><sub><strong>CI & automation</strong></sub></p>
6+
<!-- BADGES:FOOT:BEGIN -->
277
<p align="center">
8+
<sub><strong>Core status</strong></sub><br/>
289
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/build.yml">
29-
<img alt="CI / build" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/build.yml/badge.svg?branch=main&label=CI" />
30-
</a>
31-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ts-ci.yml">
32-
<img alt="TS CI (reusable)" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ts-ci.yml/badge.svg?branch=main&label=TS%20CI%20(reusable)" />
33-
</a>
34-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/auto-assign.yml">
35-
<img alt="auto-assign" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/auto-assign.yml/badge.svg?branch=main&label=auto-assign" />
36-
</a>
37-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/labeler.yml">
38-
<img alt="pr-labeler" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/labeler.yml/badge.svg?branch=main&label=pr-labeler" />
10+
<img alt="CI" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/build.yml/badge.svg?branch=main&amp;label=CI" />
3911
</a>
40-
</p>
41-
42-
<!-- 3) Security & supply-chain -->
43-
<p align="center"><sub><strong>Security &amp; supply-chain</strong></sub></p>
44-
<p align="center">
4512
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/codeql.yml">
46-
<img alt="CodeQL Analyze" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/codeql.yml/badge.svg?branch=main&label=CodeQL%20Analyze" />
47-
</a>
48-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/release-sbom.yml">
49-
<img alt="SBOM" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/release-sbom.yml/badge.svg?branch=main&label=SBOM" />
50-
</a>
51-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/dependabot-automerge.yml">
52-
<img alt="Dependabot auto-merge" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/dependabot-automerge.yml/badge.svg?branch=main&label=Dependabot%20auto-merge" />
13+
<img alt="CodeQL Analyze" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/codeql.yml/badge.svg?branch=main&amp;label=CodeQL%20Analyze" />
5314
</a>
54-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ghcr-publish.yml">
55-
<img alt="GHCR publish" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ghcr-publish.yml/badge.svg?branch=main&label=GHCR" />
56-
</a>
57-
</p>
58-
59-
<!-- 4) Releases & packaging -->
60-
<p align="center"><sub><strong>Releases &amp; packaging</strong></sub></p>
61-
<p align="center">
6215
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/releases">
63-
<img alt="release" src="https://img.shields.io/github/v/release/CoderDeltaLAN/ci-matrix-starter?display_name=tag" />
64-
</a>
65-
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/publish-pypi.yml">
66-
<img alt="Publish PyPI" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/publish-pypi.yml/badge.svg?branch=main&label=Publish%20PyPI" />
16+
<img alt="Release" src="https://img.shields.io/github/v/release/CoderDeltaLAN/ci-matrix-starter?display_name=tag&amp;label=release" />
6717
</a>
68-
<a href="https://pypi.org/project/ci-matrix-starter/">
69-
<img alt="PyPI - Python versions" src="https://img.shields.io/pypi/pyversions/ci-matrix-starter?label=PyPI%20pyversions" />
70-
</a>
71-
<a href="https://pypi.org/project/ci-matrix-starter/">
72-
<img alt="PyPI - Wheel" src="https://img.shields.io/pypi/wheel/ci-matrix-starter?label=Wheel" />
73-
</a>
74-
</p>
75-
76-
<!-- 5) Meta -->
77-
<p align="center"><sub><strong>Meta</strong></sub></p>
78-
<p align="center">
7918
<img alt="Python 3.11 | 3.12" src="https://img.shields.io/badge/Python-3.11%20%7C%203.12-3776AB?logo=python" />
8019
<a href="LICENSE">
8120
<img alt="License MIT" src="https://img.shields.io/badge/License-MIT-blue.svg" />
8221
</a>
8322
<a href="https://www.paypal.com/donate/?hosted_button_id=YVENCBNCZWVPW">
84-
<img alt="Donate" src="https://img.shields.io/badge/Donate-PayPal-0070ba?logo=paypal&logoColor=white" />
85-
</a>
86-
<a href="https://www.conventionalcommits.org/en/v1.0.0/">
87-
<img alt="Conventional Commits" src="https://img.shields.io/badge/Conventional%20Commits-1.0.0-ffa500" />
23+
<img alt="Donate" src="https://img.shields.io/badge/Donate-PayPal-0070ba?logo=paypal&amp;logoColor=white" />
8824
</a>
89-
</p>
25+
<br/><br/>
26+
27+
<sub><strong>CI &amp; automation</strong></sub><br/>
28+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/py-ci-badge.yml">
29+
<img alt="Python CI (reusable)" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/py-ci-badge.yml/badge.svg?branch=main&amp;label=Python%20CI%20(reusable)" />
30+
</a>
31+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ts-ci-badge.yml">
32+
<img alt="TS CI (reusable)" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ts-ci-badge.yml/badge.svg?branch=main&amp;label=TS%20CI" />
33+
</a>
34+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/auto-assign-badge.yml">
35+
<img alt="auto-assign" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/auto-assign-badge.yml/badge.svg?branch=main&amp;label=auto-assign" />
36+
</a>
37+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/pr-labeler-badge.yml">
38+
<img alt="pr-labeler" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/pr-labeler-badge.yml/badge.svg?branch=main&amp;label=pr-labeler" />
39+
</a>
40+
<br/><br/>
41+
42+
<sub><strong>Security &amp; supply-chain</strong></sub><br/>
43+
<a href="https://securityscorecards.dev/viewer/?uri=github.com/CoderDeltaLAN/ci-matrix-starter">
44+
<img alt="OpenSSF Scorecard" src="https://api.securityscorecards.dev/projects/github.com/CoderDeltaLAN/ci-matrix-starter/badge" />
45+
</a>
46+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/supply-chain.yml">
47+
<img alt="Supply chain" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/supply-chain.yml/badge.svg?branch=main&amp;label=Supply%20chain" />
48+
</a>
49+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/dependabot-automerge-badge.yml">
50+
<img alt="Dependabot auto-merge" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/dependabot-automerge-badge.yml/badge.svg?branch=main&amp;label=Dependabot%20auto-merge" />
51+
</a>
52+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ghcr-publish-badge.yml">
53+
<img alt="Publish container to GHCR" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/ghcr-publish-badge.yml/badge.svg?branch=main&amp;label=Publish%20container%20to%20GHCR" />
54+
</a>
55+
<br/><br/>
56+
57+
<sub><strong>Releases &amp; packaging</strong></sub><br/>
58+
<a href="https://pypi.org/project/ci-matrix-starter/">
59+
<img alt="PyPI" src="https://img.shields.io/pypi/v/ci-matrix-starter?logo=pypi&amp;label=PyPI" />
60+
</a>
61+
<a href="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/release-sbom-badge.yml">
62+
<img alt="release-sbom" src="https://github.com/CoderDeltaLAN/ci-matrix-starter/actions/workflows/release-sbom-badge.yml/badge.svg?branch=main&amp;label=release-sbom" />
63+
</a>
64+
<img alt="PyPI pyversions" src="https://img.shields.io/pypi/pyversions/ci-matrix-starter?logo=python&amp;label=PyPI%20pyversions" />
65+
<img alt="Wheel" src="https://img.shields.io/pypi/wheel/ci-matrix-starter?label=Wheel" />
9066

91-
<!-- BADGES:CENTERED:END -->
67+
</p>
68+
<!-- BADGES:FOOT:END -->
9269

9370
---
9471

@@ -97,20 +74,47 @@ Designed for **always-green CI** with strict local gates mirroring CI, **CodeQL*
9774
```text
9875
.
9976
├── .github/workflows/
100-
│ ├── build.yml # Aggregator: calls reusable jobs (TS & Py)
101-
│ ├── ts-ci.yml # Reusable TypeScript/Node CI
102-
│ └── py-ci.yml # Reusable Python CI
77+
│ ├── build.yml # aggregator (example)
78+
│ ├── codeql.yml # CodeQL analysis
79+
│ ├── supply-chain.yml # SBOM + weekly gates
80+
│ ├── release-sbom.yml # release SBOM publish
81+
│ ├── ghcr-publish.yml # container to GHCR (example)
82+
│ ├── release-drafter.yml # release notes draft
83+
│ ├── auto-assign.yml # auto-assign reviewers
84+
│ ├── labeler.yml # PR labeler
85+
│ ├── dependabot-automerge.yml # auto-merge Dependabot
86+
│ ├── ts-ci.yml # reusable TypeScript/Node CI
87+
│ ├── py-ci.yml # reusable Python CI
88+
│ └── py-ci-badge.yml # wrapper for README badge
89+
├── docs/
90+
│ └── screens/
91+
│ └── local-sanity.png # terminal screenshot (example)
10392
├── src/
104-
│ ├── index.ts # minimal TS sanity (example)
105-
│ └── ci_matrix_starter/ # minimal Py package (example)
106-
├── tests/ # Python tests (example)
107-
├── package.json # Node project (example scripts)
108-
├── pyproject.toml # Python tooling (ruff/black/pytest/mypy)
93+
│ ├── index.ts # minimal TS example
94+
│ └── ci_matrix_starter/ # minimal Py package
95+
├── tests/ # Python tests (example)
96+
├── package.json # Node scripts
97+
├── pyproject.toml # Python tooling
10998
└── README.md
11099
```
111100

112101
---
113102

103+
## 🖥️ Operating System Compatibility ✅
104+
105+
```text
106+
| OS | Status |
107+
|------------------|:------:|
108+
| Linux | ✅ |
109+
| macOS | ✅ |
110+
| Windows (WSL2) | ✅ |
111+
| FreeBSD | ✅ |
112+
| Android (Termux) | ✅ |
113+
| Containers (CI) | ✅ |
114+
```
115+
116+
---
117+
114118
## 🚀 Quick Start (consumers)
115119

116120
### Use the reusable workflows in _your_ repo
@@ -129,8 +133,8 @@ jobs:
129133
py:
130134
uses: CoderDeltaLAN/ci-matrix-starter/.github/workflows/[email protected]
131135
with:
132-
py-versions: '["3.11","3.12"]'
133-
cov-min: 100
136+
python_versions: '["3.11","3.12"]'
137+
run_tests: true
134138

135139
# TypeScript / Node 20
136140
ts:
@@ -177,7 +181,7 @@ poetry run mypy src
177181

178182
- `pyproject.toml` with dev tools (**ruff**, **black**, **pytest**, **mypy**, **poetry**).
179183
- Tests under `tests/`; coverage threshold via `cov-min`.
180-
- Matrix **3.11/3.12** (customizable with `py-versions`).
184+
Matrix **3.11/3.12** (customizable with `python_versions`).
181185

182186
**Optional SBOM & signing**
183187

@@ -212,6 +216,19 @@ poetry run mypy src
212216

213217
---
214218

219+
<!-- SCREENSHOT:BEGIN -->
220+
221+
### Local sanity (screenshot)
222+
223+
<p align="center">
224+
<img src="docs/screens/local-sanity.png"
225+
alt="Local sanity (pre-commit, linters and smoke tests passing)"
226+
width="100%" style="max-width:900px" />
227+
</p>
228+
<!-- SCREENSHOT:END -->
229+
230+
---
231+
215232
## 🔧 CI (GitHub Actions)
216233

217234
- Reusable jobs for **Python** and **TypeScript**; call them via `uses:` with a tag (e.g., `@v0.1.7`).
@@ -254,8 +271,8 @@ TypeScript snippet:
254271
## 🧩 Customization
255272

256273
- Pin a release tag, e.g., `@v0.1.7`.
257-
- Adjust Python matrix: `with.py-versions`.
258-
- Tune coverage: `with.cov-min`.
274+
- Adjust Python matrix: `with.python_versions`.
275+
- Toggle tests in the wrapper: `with.run_tests` (true/false).
259276
- Provide secrets to enable optional **cosign** signing.
260277
- Extend jobs by adding steps after `uses:`.
261278

@@ -279,7 +296,7 @@ TypeScript snippet:
279296

280297
## 💚 Donations & Sponsorship
281298

282-
If this project saves you time, consider supporting ongoing maintenance. Thank you!
299+
Support open-source: your donations keep projects clean, secure, and evolving for the global community.
283300
[![Donate](https://img.shields.io/badge/Donate-PayPal-0070ba?logo=paypal&logoColor=white)](https://www.paypal.com/donate/?hosted_button_id=YVENCBNCZWVPW)
284301

285302
---

0 commit comments

Comments
 (0)