@@ -4,14 +4,18 @@ A command-line tool for automating Redis OSS releases across multiple package re
44
55## Installation
66
7- ### From Source
7+ ### Using uv
88
99``` bash
1010git clone https://github.com/redis/redis-oss-release-automation.git
1111cd redis-oss-release-automation
12- pip install -e .
12+ uv sync
1313```
1414
15+ After ` uv sync ` , you can run the tool in two ways:
16+ - ** With ` uv run ` ** : ` uv run redis-release <command> `
17+ - ** Activate virtual environment** : ` . .venv/bin/activate ` then ` redis-release <command> `
18+
1519## Prerequisites
1620
17211 . ** GitHub Token** : Personal access token with workflow permissions
@@ -24,20 +28,38 @@ pip install -e .
2428export GITHUB_TOKEN=" ghp_xxxxxxxxxxxx"
2529export AWS_ACCESS_KEY_ID=" your-access-key-id"
2630export AWS_SECRET_ACCESS_KEY=" your-secret-access-key"
27- export AWS_SESSION_TOKEN=" your-session-token"
31+ export AWS_SESSION_TOKEN=" your-session-token"
2832export REDIS_RELEASE_STATE_BUCKET=" redis-release-state"
2933```
3034
35+ ### AWS SSO Login
36+
37+ In AWS, you can also use ` aws sso login ` prior to running the tool to authenticate.
38+
3139## Usage
3240
3341### Basic Release
3442
43+ By default, ` config.yaml ` is used. You can specify a different config file with ` --config ` :
44+
3545``` bash
36- # Start a new release
46+ # Start a new release (uses config.yaml by default)
3747redis-release release 8.2.0
3848
39- # Force rebuild packages
40- redis-release release 8.2.0 --force-rebuild
49+ # Use custom config file
50+ redis-release release 8.2.0 --config custom-config.yaml
51+
52+ # Force rebuild all packages (WARNING: This will delete all existing state!)
53+ redis-release release 8.2.0 --force-rebuild all
54+
55+ # Force rebuild specific package
56+ redis-release release 8.2.0 --force-rebuild package-name
57+
58+ # Release only specific packages (can be used multiple times)
59+ redis-release release 8.2.0 --only-packages package1 --only-packages package2
60+
61+ # Force release type (changes release-type even for existing state)
62+ redis-release release 8.2.0 --force-release-type rc
4163```
4264
4365### Check Status
@@ -47,9 +69,34 @@ redis-release release 8.2.0 --force-rebuild
4769redis-release status 8.2.0
4870```
4971
50- ### Advanced Options
72+ ## Troubleshooting
73+
74+ ### Dangling Release Locks
75+
76+ If you encounter a dangling lock file, you can delete it from the S3 bucket:
5177
5278``` bash
53- # Dry run mode (simulate without changes)
54- redis-release release 8.2.0 --dry-run
79+ aws s3 rm s3://redis-release-state/release-locks/TAG.lock
5580```
81+
82+ Replace ` TAG ` with the release tag (e.g., ` 8.2.0 ` ).
83+
84+ ## Diagrams
85+
86+ Generate release workflow diagrams using:
87+
88+ ``` bash
89+ # Generate full release diagram
90+ redis-release release-print
91+
92+ # Generate diagram with custom name (list available with --help)
93+ redis-release release-print --name NAME
94+ ```
95+
96+ ** Note** : Graphviz is required to generate diagrams.
97+
98+ ## Configuration
99+
100+ The tool uses a YAML configuration file to define release packages and their settings. By default, ` config.yaml ` is used.
101+
102+ See ` config.yaml ` for an example configuration file.
0 commit comments