Skip to content

Commit 308e694

Browse files
committed
docs: update CONTRIBUTING.md with detailed dev container and Codespaces setup instructions
Signed-off-by: Vladislav Polyakov <[email protected]>
1 parent 5f9db37 commit 308e694

File tree

1 file changed

+109
-1
lines changed

1 file changed

+109
-1
lines changed

CONTRIBUTING.md

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,114 @@
44

55
YDB is a free and open project and we appreciate to receive contributions from our community.
66

7+
## Development Environment Setup
8+
9+
### Using Dev Containers (Recommended)
10+
11+
This repository includes a complete development environment using Docker containers that provides everything you need to start contributing immediately. The devcontainer setup includes:
12+
13+
- **Python 3.9** development environment with all necessary dependencies
14+
- **YDB server** running locally in a container
15+
- **Pre-configured tools**: Git, GitHub CLI, YDB CLI, and essential Python packages
16+
- **VS Code extensions**: Python development tools, linting, formatting, and debugging support
17+
18+
#### Prerequisites
19+
20+
- [Docker](https://www.docker.com/get-started) installed and running
21+
- [VS Code](https://code.visualstudio.com/) with the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
22+
23+
#### Quick Start with Dev Containers
24+
25+
1. Clone the repository:
26+
```bash
27+
git clone https://github.com/ydb-platform/ydb-python-sdk.git
28+
cd ydb-python-sdk
29+
```
30+
31+
2. Open in VS Code:
32+
```bash
33+
code .
34+
```
35+
36+
3. When prompted, click "Reopen in Container" or use the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`) and select "Dev Containers: Reopen in Container"
37+
38+
4. Wait for the container to build and start (first time may take a few minutes)
39+
40+
5. The development environment is ready! You can now run tests, debug code, and develop new features.
41+
42+
### Using GitHub Codespaces
43+
44+
GitHub Codespaces provides a cloud-based development environment that works directly in your browser or VS Code. It's perfect for quick contributions without setting up a local environment.
45+
46+
#### Quick Start with Codespaces
47+
48+
1. Navigate to the [repository on GitHub](https://github.com/ydb-platform/ydb-python-sdk)
49+
2. Click the green "Code" button
50+
3. Select the "Codespaces" tab
51+
4. Click "Create codespace on main" (or your desired branch)
52+
5. Wait for the environment to initialize (usually 2-3 minutes)
53+
6. Start coding directly in the browser or connect with your local VS Code
54+
55+
#### What's Included in the Development Environment
56+
57+
When you use either dev containers or Codespaces, the following environment is automatically set up:
58+
59+
**Container Services:**
60+
- **SDK Container (`sdk`)**: Your main development environment running Python 3.9 on Debian Bookworm
61+
- **YDB Container (`ydb`)**: Local YDB server (version 25.1) for testing and development
62+
63+
**Development Tools:**
64+
- **YDB CLI**: Pre-installed and configured to connect to the local YDB instance
65+
- **Python Environment**: All project dependencies installed via `pip install -e .`
66+
- **Git Configuration**: Automatic setup for signed commits (if configured)
67+
- **VS Code Extensions**: Python development stack including linting, formatting, and debugging
68+
69+
**Network Configuration:**
70+
- **Port 2135**: YDB gRPC with TLS
71+
- **Port 2136**: YDB gRPC without TLS
72+
- **Port 8765**: YDB Monitoring interface
73+
- These ports are automatically forwarded and accessible from your local machine
74+
75+
**Environment Variables:**
76+
The following environment variables are pre-configured for immediate use:
77+
- `YDB_CONNECTION_STRING=grpc://ydb:2136/local` - Standard connection
78+
- `YDB_CONNECTION_STRING_SECURE=grpcs://ydb:2135/local` - Secure connection
79+
- `YDB_SSL_ROOT_CERTIFICATES_FILE=/ydb_certs/ca.pem` - SSL certificates
80+
- `YDB_STATIC_CREDENTIALS_USER=root` and `YDB_STATIC_CREDENTIALS_PASSWORD=1234` - Test credentials
81+
82+
**Automatic Setup Process:**
83+
1. **Initialize**: Git configuration for signed commits and user settings
84+
2. **Post-Create**: YDB CLI profile setup and GPG configuration for SSH signing
85+
3. **Post-Start**: Installation of Python dependencies, SDK package, and testing tools (tox)
86+
87+
#### Running Tests in the Development Environment
88+
89+
Once your environment is ready, you can run the test suite:
90+
91+
```bash
92+
# Run all tests
93+
tox
94+
95+
# Run specific test categories
96+
python -m pytest tests/
97+
98+
# Run with specific Python version
99+
tox -e py39
100+
```
101+
102+
#### Connecting to the Local YDB Instance
103+
104+
The YDB CLI is pre-configured to connect to the local instance:
105+
106+
```bash
107+
# Run a simple query
108+
echo "SELECT 1;" | ydb
109+
110+
# Access the web interface
111+
# Open http://localhost:8765 in your browser (when using local dev containers)
112+
# In codespaces you can access it via the provided URL in the terminal output.
113+
```
114+
7115
## Contributing code changes
8116

9117
If you would like to contribute a new feature or a bug fix, please discuss your idea first on the GitHub issue.
@@ -19,4 +127,4 @@ if any changes are needed, we would love to work with you to get your pull reque
19127

20128
## Other questions
21129

22-
If you have any questions, please mail us at [email protected].
130+
If you have any questions, please mail us at [email protected].

0 commit comments

Comments
 (0)