Skip to content

Commit d4aaaa3

Browse files
committed
feat: add remote and multi-repo release flow with CI, validation, and docs
Signed-off-by: Damian Skrzyński <polprog.tech@gmail.com>
1 parent 3fb91aa commit d4aaaa3

60 files changed

Lines changed: 10862 additions & 507 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,80 @@ on:
66
pull_request:
77
branches: [main]
88

9+
concurrency:
10+
group: ci-${{ github.ref }}
11+
cancel-in-progress: true
12+
913
jobs:
10-
quality:
11-
name: Lint & Test
14+
lint:
15+
name: Lint & Format
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- uses: actions/setup-python@v5
21+
with:
22+
python-version: "3.13"
23+
24+
- name: Install ruff
25+
run: python -m pip install --quiet "ruff>=0.4"
26+
27+
- name: Ruff check
28+
run: ruff check src/ tests/
29+
30+
- name: Ruff format check
31+
run: ruff format --check src/ tests/
32+
33+
test:
34+
name: Test (Python ${{ matrix.python-version }})
35+
needs: lint
1236
runs-on: ubuntu-latest
1337
strategy:
38+
fail-fast: false
1439
matrix:
1540
python-version: ["3.12", "3.13"]
1641

1742
steps:
1843
- uses: actions/checkout@v4
1944

20-
- name: Set up Python ${{ matrix.python-version }}
21-
uses: actions/setup-python@v5
45+
- uses: actions/setup-python@v5
2246
with:
2347
python-version: ${{ matrix.python-version }}
48+
cache: pip
2449

2550
- name: Install dependencies
26-
run: python -m pip install -e ".[all]"
51+
run: python -m pip install --quiet -e ".[all]"
52+
53+
- name: Run tests
54+
run: python -m pytest --tb=short -q --junitxml=results.xml
55+
56+
- name: Upload test results
57+
if: always()
58+
uses: actions/upload-artifact@v4
59+
with:
60+
name: test-results-py${{ matrix.python-version }}
61+
path: results.xml
62+
retention-days: 7
63+
64+
package:
65+
name: Package
66+
needs: test
67+
runs-on: ubuntu-latest
68+
steps:
69+
- uses: actions/checkout@v4
70+
71+
- uses: actions/setup-python@v5
72+
with:
73+
python-version: "3.13"
2774

28-
- name: Lint
29-
run: python -m ruff check src/ tests/
75+
- name: Install build tools
76+
run: python -m pip install --quiet build
3077

31-
- name: Test
32-
run: python -m pytest --tb=short -q
78+
- name: Build sdist and wheel
79+
run: python -m build --sdist --wheel
3380

34-
- name: Packaging sanity check
81+
- name: Verify distributions
3582
run: |
36-
python -m pip install build
37-
python -m build --sdist --wheel
3883
ls -la dist/
84+
python -m pip install --quiet twine
85+
twine check dist/*

LICENSE

Lines changed: 677 additions & 18 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<p align="center">
66
<a href="https://github.com/polprog-tech/ReleasePilot/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/polprog-tech/ReleasePilot/ci.yml?branch=main&style=flat-square&label=CI&logo=github" alt="CI"></a>
7-
<a href="https://github.com/polprog-tech/ReleasePilot/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License: MIT"></a>
7+
<a href="https://github.com/polprog-tech/ReleasePilot/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue?style=flat-square" alt="License: AGPL-3.0"></a>
88
<img src="https://img.shields.io/badge/python-3.12%2B-3776ab?style=flat-square&logo=python&logoColor=white" alt="Python 3.12+">
99
<img src="https://img.shields.io/badge/languages-10-6366f1?style=flat-square" alt="10 Languages">
1010
<img src="https://img.shields.io/badge/formats-PDF%20·%20DOCX%20·%20MD%20·%20JSON-334155?style=flat-square" alt="Formats">
@@ -48,7 +48,7 @@ The Guide tab explains how ReleasePilot works — the pipeline stages, all 8 aud
4848

4949
### Source Configuration Wizard
5050

51-
The wizard guides you through selecting the source range, audience, and output format step by step. Choose between date-based or git-reference-based ranges with quick presets.
51+
The wizard guides you through a multi-step flow: source selection (local or remote), repository configuration (single or multi-repo), release scope, audience, and format — with built-in validation at every step. Supports GitHub and GitLab repositories via URL. Access tokens are context-aware: optional for public GitHub repositories, required for private repos and GitLab. See [Web Wizard Documentation](docs/web-wizard.md) for full details.
5252

5353
<p align="center">
5454
<img src="docs/assets/screenshots/wizard-source-config.png" alt="ReleasePilot — source configuration wizard with date range presets" width="800">
@@ -70,6 +70,7 @@ After the pipeline processes your commits, you see a summary of changes and outp
7070
- [Screenshots](#screenshots)
7171
- [Quick Start](#quick-start)
7272
- [Web Server Mode](#web-server-mode)
73+
- [Web Wizard](docs/web-wizard.md)
7374
- [CLI Mode](#cli-mode)
7475
- [Features](#features)
7576
- [Configuration](#configuration)
@@ -479,4 +480,4 @@ For detailed solutions to common issues, see [docs/troubleshooting.md](docs/trou
479480

480481
## License
481482

482-
MIT — see [LICENSE](LICENSE).
483+
AGPL-3.0 — see [LICENSE](LICENSE).

docs/ci-cd.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,12 @@ Release notes are generated automatically.
106106

107107
| File | Description |
108108
|------|-------------|
109-
| [`examples/github-workflow.yml`](../examples/github-workflow.yml) | Minimal 30-line GitHub workflow |
110-
| [`examples/gitlab-pipeline.yml`](../examples/gitlab-pipeline.yml) | Minimal 25-line GitLab job |
109+
| [`examples/github-release-notes.yml`](../examples/github-release-notes.yml) | GitHub Actions workflow for release notes |
110+
| [`examples/gitlab-release-notes.yml`](../examples/gitlab-release-notes.yml) | GitLab CI job for release notes |
111111
| [`examples/.releasepilot.json`](../examples/.releasepilot.json) | Example config with CI settings |
112+
| [`examples/multi-repo-config.json`](../examples/multi-repo-config.json) | Multi-repository config example |
113+
| [`examples/cli-usage.sh`](../examples/cli-usage.sh) | CLI usage examples |
114+
| [`examples/remote-repos.md`](../examples/remote-repos.md) | Remote/multi-repo dashboard guide |
112115

113116
## Configuration
114117

docs/github-integration.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ This guide explains how to use ReleasePilot in GitHub Actions to automatically g
3838

3939
### Option A: Copy a minimal workflow
4040

41-
Copy [`examples/github-workflow.yml`](../examples/github-workflow.yml) to `.github/workflows/release-notes.yml` in your repository:
41+
Copy [`examples/github-release-notes.yml`](../examples/github-release-notes.yml) to `.github/workflows/release-notes.yml` in your repository:
4242

4343
```yaml
4444
name: Release Notes
@@ -261,7 +261,7 @@ No additional secrets are needed. ReleasePilot reads git history directly from t
261261
### Install a specific ReleasePilot version
262262

263263
```yaml
264-
- run: pip install "releasepilot[export] @ git+https://github.com/polprog-tech/ReleasePilot.git@v1.0.0"
264+
- run: pip install "releasepilot[export] @ git+https://github.com/polprog-tech/ReleasePilot.git@v1.1.0"
265265
```
266266

267267
### Add translation support

docs/gitlab-integration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ variables:
278278

279279
```yaml
280280
variables:
281-
RP_INSTALL_SPEC: "releasepilot[export] @ git+https://github.com/polprog-tech/ReleasePilot.git@v1.0.0"
281+
RP_INSTALL_SPEC: "releasepilot[export] @ git+https://github.com/polprog-tech/ReleasePilot.git@v1.1.0"
282282
```
283283

284284
### Use structured input (no git)

0 commit comments

Comments
 (0)