Skip to content

Commit 2a676f7

Browse files
committed
Release v1.0
1 parent 41bf774 commit 2a676f7

Some content is hidden

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

74 files changed

+13436
-406
lines changed

.github/workflows/release.yml

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
build:
13+
name: Build Binaries
14+
runs-on: ubuntu-latest
15+
strategy:
16+
matrix:
17+
goos: [linux, darwin, windows]
18+
goarch: [amd64, arm64]
19+
exclude:
20+
- goos: windows
21+
goarch: arm64
22+
23+
steps:
24+
- uses: actions/checkout@v4
25+
26+
- name: Set up Go
27+
uses: actions/setup-go@v5
28+
with:
29+
go-version: '1.25'
30+
31+
- name: Download dependencies
32+
working-directory: ./backend
33+
run: go mod download
34+
35+
- name: Build API
36+
working-directory: ./backend
37+
env:
38+
GOOS: ${{ matrix.goos }}
39+
GOARCH: ${{ matrix.goarch }}
40+
run: |
41+
mkdir -p ../dist
42+
go build -o ../dist/api-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goos == 'windows' && '.exe' || '' }} ./cmd/api
43+
44+
- name: Build Indexer
45+
working-directory: ./backend
46+
env:
47+
GOOS: ${{ matrix.goos }}
48+
GOARCH: ${{ matrix.goarch }}
49+
run: |
50+
go build -o ../dist/indexer-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goos == 'windows' && '.exe' || '' }} ./cmd/indexer
51+
52+
- name: Build Router
53+
working-directory: ./backend
54+
env:
55+
GOOS: ${{ matrix.goos }}
56+
GOARCH: ${{ matrix.goarch }}
57+
run: |
58+
go build -o ../dist/router-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goos == 'windows' && '.exe' || '' }} ./cmd/router
59+
60+
- name: Create checksums
61+
run: |
62+
cd dist
63+
sha256sum * > checksums.txt
64+
65+
- name: Upload binaries
66+
uses: actions/upload-artifact@v4
67+
with:
68+
name: binaries-${{ matrix.goos }}-${{ matrix.goarch }}
69+
path: dist/*
70+
71+
release:
72+
name: Create Release
73+
needs: build
74+
runs-on: ubuntu-latest
75+
76+
steps:
77+
- uses: actions/checkout@v4
78+
79+
- name: Download all artifacts
80+
uses: actions/download-artifact@v4
81+
with:
82+
path: dist-all
83+
84+
- name: Prepare release assets
85+
run: |
86+
mkdir -p release
87+
find dist-all -type f -exec cp {} release/ \;
88+
cd release && sha256sum * > checksums.txt
89+
90+
- name: Create Release
91+
uses: softprops/action-gh-release@v1
92+
with:
93+
files: release/*
94+
body: |
95+
## Lucendex ${{ github.ref_name }}
96+
97+
Non-custodial, deterministic routing engine for XRPL.
98+
99+
### Downloads
100+
101+
**Linux:**
102+
- `api-linux-amd64` - API server
103+
- `indexer-linux-amd64` - XRPL indexer
104+
- `router-linux-amd64` - Standalone router
105+
106+
**macOS:**
107+
- `api-darwin-amd64` - API server (Intel)
108+
- `api-darwin-arm64` - API server (Apple Silicon)
109+
- `indexer-darwin-amd64` - Indexer (Intel)
110+
- `indexer-darwin-arm64` - Indexer (Apple Silicon)
111+
112+
**Windows:**
113+
- `api-windows-amd64.exe` - API server
114+
- `indexer-windows-amd64.exe` - Indexer
115+
116+
### Verification
117+
118+
```bash
119+
sha256sum -c checksums.txt
120+
```
121+
122+
### Documentation
123+
124+
- [Architecture](https://github.com/lucendex/lucendex/blob/main/doc/architecture.md)
125+
- [Security](https://github.com/lucendex/lucendex/blob/main/doc/security.md)
126+
- [API Docs](https://github.com/lucendex/lucendex/blob/main/openapi.yaml)
127+
draft: false
128+
prerelease: false

.github/workflows/test.yml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
test:
11+
name: Test
12+
runs-on: ubuntu-latest
13+
14+
services:
15+
postgres:
16+
image: postgres:15
17+
env:
18+
POSTGRES_PASSWORD: postgres
19+
POSTGRES_DB: lucendex_test
20+
options: >-
21+
--health-cmd pg_isready
22+
--health-interval 10s
23+
--health-timeout 5s
24+
--health-retries 5
25+
ports:
26+
- 5432:5432
27+
28+
steps:
29+
- uses: actions/checkout@v4
30+
31+
- name: Set up Go
32+
uses: actions/setup-go@v5
33+
with:
34+
go-version: '1.25'
35+
36+
- name: Download dependencies
37+
working-directory: ./backend
38+
run: go mod download
39+
40+
- name: Run unit tests
41+
working-directory: ./backend
42+
run: go test ./... -v -coverprofile=coverage.out
43+
44+
- name: Run race detector tests
45+
working-directory: ./backend
46+
run: go test ./... -race
47+
48+
- name: Generate coverage report
49+
working-directory: ./backend
50+
run: go tool cover -func=coverage.out
51+
52+
- name: Upload coverage to Codecov
53+
uses: codecov/codecov-action@v4
54+
with:
55+
files: ./backend/coverage.out
56+
fail_ci_if_error: false
57+
58+
security:
59+
name: Security Tests
60+
runs-on: ubuntu-latest
61+
62+
steps:
63+
- uses: actions/checkout@v4
64+
65+
- name: Set up Go
66+
uses: actions/setup-go@v5
67+
with:
68+
go-version: '1.25'
69+
70+
- name: Download dependencies
71+
working-directory: ./backend
72+
run: go mod download
73+
74+
- name: Run security tests
75+
working-directory: ./backend
76+
run: |
77+
go test ./internal/api/... -v
78+
go test ./internal/kv/security_test.go -v
79+
go test ./internal/router/validator_test.go -v

.gitignore

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Binaries
2+
*.exe
3+
*.exe~
4+
*.dll
5+
*.so
6+
*.dylib
7+
bin/
8+
dist/
9+
10+
# Go
11+
*.test
12+
*.out
13+
vendor/
14+
go.work
15+
16+
# Test coverage
17+
coverage.out
18+
*.coverprofile
19+
20+
# IDE
21+
.vscode/
22+
.idea/
23+
*.swp
24+
*.swo
25+
*~
26+
27+
# OS
28+
.DS_Store
29+
Thumbs.db
30+
31+
# Logs
32+
*.log
33+
34+
# Environment files
35+
.env
36+
.env.local
37+
.env.*.local
38+
39+
# Secrets
40+
secrets/
41+
*.key
42+
*.pem
43+
*.crt
44+
45+
# Database
46+
*.db
47+
*.sqlite
48+
*.sqlite3
49+
50+
# Node (if React frontend)
51+
node_modules/
52+
npm-debug.log*
53+
yarn-debug.log*
54+
yarn-error.log*
55+
.pnpm-debug.log*
56+
57+
# Build outputs
58+
build/
59+
dist/
60+
out/
61+
62+
# Temporary files
63+
tmp/
64+
temp/
65+
*.tmp
66+
67+
# Infrastructure (Terraform & secrets)
68+
infra/*/terraform/.terraform/
69+
infra/*/terraform/.terraform.lock.hcl
70+
infra/*/terraform/*.tfstate
71+
infra/*/terraform/*.tfstate.backup
72+
infra/*/terraform/tfplan
73+
infra/*/terraform/.envrc
74+
infra/*/terraform/*_ssh_key
75+
infra/*/terraform/*_ssh_key.pub
76+
infra/*/backups/
77+
infra/*/.envrc.cloudflare
78+
infra/*/lucendex-validator-verification/
79+
80+
# Validator keys and tokens
81+
*.key
82+
*.token
83+
validator-keys.json
84+
backend/indexer
85+
backend/router
86+
backend/api
87+
backend/partner-admin
88+
89+
# Open source export (tooling only, not for git)
90+
open-source/

0 commit comments

Comments
 (0)