Skip to content

Commit 16e6e0e

Browse files
committed
fix: update .gitignore to include builds and output files; enhance README for clarity and deployment options
1 parent 4d8b5ed commit 16e6e0e

3 files changed

Lines changed: 52 additions & 71 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
bin/
22
.env
3-
builds/
3+
builds/
4+
*.out

README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
# Pulse Bridge
22

3+
[![Build](https://github.com/wavezync/pulse-bridge/actions/workflows/build.yml/badge.svg)](https://github.com/wavezync/pulse-bridge/actions/workflows/build.yml) ![GitHub Release](https://img.shields.io/github/v/release/wavezync/pulse-bridge)
4+
[![Docker](https://ghcr-badge.egpl.dev/wavezync/pulse-bridge/tags?color=%2344cc11&ignore=latest&n=3&label=image+tags&trim=)](https://github.com/wavezync/pulse-bridge/pkgs/container/pulse-bridge)
5+
36
Pulse Bridge is a lightweight, powerful uptime monitoring tool for your internal infrastructure (APIs, databases, etc.) and external platforms.
47

58
## How it works
69

710
Simply create a configuration file to define multiple services and databases to be checked at custom intervals. Pulse Bridge records the health status of each service and database, and provides a simple HTTP API to query their status.
811

9-
#### Currently supports
12+
### Currently supports
13+
1014
- HTTP services
1115
- PostgreSQL
1216
- MySQL
@@ -16,12 +20,13 @@ Simply create a configuration file to define multiple services and databases to
1620

1721
## Deployment
1822

23+
Pulse Bridge can be deployed in various ways to suit your needs:
1924

20-
Deployment options:
21-
- [Dockerfile](https://github.com/wavezync/pulse-bridge/blob/main/Dockerfile) – Self-hosted container registry or Docker Hub image
25+
- Binary for your [platform](https://github.com/wavezync/pulse-bridge/releases)
26+
- Docker
2227
- Kubernetes
2328

24-
### 💻 Deploy locally (Build from source)
29+
### 💻 Run locally (Build from source)
2530

2631
```bash
2732
git clone https://github.com/wavezync/pulse-bridge.git
@@ -94,7 +99,6 @@ data:
9499
# Paste your Pulse Bridge YAML config here. See the guide below for configuration details.
95100
```
96101
97-
98102
### Environment Configuration
99103
100104
1. .env file:

scripts/build.sh

Lines changed: 41 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ show_help() {
160160
echo " -c, --clean Clean build directory before building"
161161
echo " --clean-only Clean build directory and exit (no building)"
162162
echo " -p, --platform OS/ARCH Build for specific platform (e.g., linux/amd64)"
163-
echo " -j, --jobs N Number of parallel build jobs (default: all platforms in parallel)"
163+
echo " -j, --jobs N Number of parallel build jobs (default: auto-detect CPU cores)"
164164
echo " -l, --list List supported platforms"
165165
echo " -v, --verbose Enable verbose output"
166166
echo ""
@@ -186,7 +186,8 @@ main() {
186186
local clean_only_flag=false
187187
local specific_platform=""
188188
local verbose_flag=false
189-
local max_jobs=0 # 0 means unlimited (all platforms in parallel)
189+
# Default max_jobs to number of CPU cores
190+
local max_jobs=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo "4")
190191

191192
# Parse command line arguments
192193
while [[ $# -gt 0 ]]; do
@@ -277,79 +278,54 @@ main() {
277278

278279
build_platform "$specific_platform"
279280
else
280-
# Build for all platforms in parallel
281-
if [ "$max_jobs" -eq 0 ]; then
282-
print_status "Starting parallel builds for all platforms..."
283-
local pids=()
284-
local failed_builds=0
285-
286-
# Start all builds in parallel (unlimited)
287-
for platform in "${PLATFORMS[@]}"; do
281+
# Build for all platforms in parallel with CPU core limit
282+
print_status "Starting parallel builds with maximum $max_jobs jobs (auto-detected CPU cores)..."
283+
local pids=()
284+
local platform_names=()
285+
local failed_builds=0
286+
local platform_index=0
287+
288+
# Build with job limit
289+
while [ $platform_index -lt ${#PLATFORMS[@]} ]; do
290+
# Start jobs up to the limit
291+
while [ ${#pids[@]} -lt $max_jobs ] && [ $platform_index -lt ${#PLATFORMS[@]} ]; do
292+
local platform=${PLATFORMS[$platform_index]}
288293
build_platform "$platform" &
289294
pids+=($!)
295+
platform_names+=("$platform")
296+
((platform_index++))
290297
done
291298

292-
# Wait for all builds to complete and check results
293-
for i in "${!pids[@]}"; do
294-
local pid=${pids[$i]}
295-
local platform=${PLATFORMS[$i]}
299+
# Wait for at least one job to complete
300+
if [ ${#pids[@]} -gt 0 ]; then
301+
local completed_pid=${pids[0]}
302+
local completed_platform=${platform_names[0]}
296303

297-
if wait "$pid"; then
298-
print_status "${platform} build completed successfully"
304+
if wait "$completed_pid"; then
305+
print_status "${completed_platform} build completed successfully"
299306
else
300-
print_error "${platform} build failed"
307+
print_error "${completed_platform} build failed"
301308
((failed_builds++))
302309
fi
303-
done
304-
else
305-
print_status "Starting parallel builds with maximum $max_jobs jobs..."
306-
local pids=()
307-
local platform_names=()
308-
local failed_builds=0
309-
local platform_index=0
310-
311-
# Build with job limit
312-
while [ $platform_index -lt ${#PLATFORMS[@]} ]; do
313-
# Start jobs up to the limit
314-
while [ ${#pids[@]} -lt $max_jobs ] && [ $platform_index -lt ${#PLATFORMS[@]} ]; do
315-
local platform=${PLATFORMS[$platform_index]}
316-
build_platform "$platform" &
317-
pids+=($!)
318-
platform_names+=("$platform")
319-
((platform_index++))
320-
done
321310

322-
# Wait for at least one job to complete
323-
if [ ${#pids[@]} -gt 0 ]; then
324-
local completed_pid=${pids[0]}
325-
local completed_platform=${platform_names[0]}
326-
327-
if wait "$completed_pid"; then
328-
print_status "${completed_platform} build completed successfully"
329-
else
330-
print_error "${completed_platform} build failed"
331-
((failed_builds++))
332-
fi
333-
334-
# Remove completed job from tracking
335-
pids=("${pids[@]:1}")
336-
platform_names=("${platform_names[@]:1}")
337-
fi
338-
done
311+
# Remove completed job from tracking
312+
pids=("${pids[@]:1}")
313+
platform_names=("${platform_names[@]:1}")
314+
fi
315+
done
316+
317+
# Wait for remaining jobs
318+
for i in "${!pids[@]}"; do
319+
local pid=${pids[$i]}
320+
local platform=${platform_names[$i]}
339321

340-
# Wait for remaining jobs
341-
for i in "${!pids[@]}"; do
342-
local pid=${pids[$i]}
343-
local platform=${platform_names[$i]}
344-
345-
if wait "$pid"; then
346-
print_status "${platform} build completed successfully"
347-
else
348-
print_error "${platform} build failed"
349-
((failed_builds++))
350-
fi
351-
done
352-
fi
322+
if wait "$pid"; then
323+
print_status "${platform} build completed successfully"
324+
else
325+
print_error "${platform} build failed"
326+
((failed_builds++))
327+
fi
328+
done
353329

354330
if [ $failed_builds -gt 0 ]; then
355331
print_warning "${failed_builds} builds failed"

0 commit comments

Comments
 (0)