Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c41c438
feat: implement python sdk
Mar 3, 2026
ef4e27d
ci: use github actions to automate sdk build and publish
Mar 5, 2026
ad067d8
netanyahooo
Mar 5, 2026
0601f41
fix: remove windows build step for python sdk
Mar 5, 2026
252fd20
docs: update website with python sdk documentation
Mar 5, 2026
f1d0290
fix: remove manual approval from publish step
Mar 5, 2026
55a4bb8
fix: use environment secrets directly
Mar 5, 2026
2756e77
test: add integration testing on real network
Mar 6, 2026
4c82dd8
test: add integration testing on real network
Mar 6, 2026
588ac9d
fix: reduce CI logs
Mar 6, 2026
e2bd32a
fix: remove dashboard tests
Mar 6, 2026
865cca0
ci: remove verbose output
Mar 6, 2026
c87ed53
ci: run appropriate tests
Mar 6, 2026
1bfdb76
ci: reduce parallelism for tests
Mar 6, 2026
5822868
ci: increae timeout
Mar 6, 2026
9c132c1
ci: standardise testing using go runner
Mar 6, 2026
3585450
ci: specify usage of bash
Mar 6, 2026
67fc4e7
ci: fix regex netanyahu pls
Mar 6, 2026
1691975
ci: dispatch sdk pyblish after tests ran
Mar 6, 2026
e7cca34
ci: enable automating versioning
Mar 6, 2026
4a41438
ci: standardize sdk versioning
Mar 6, 2026
0c047fb
test: test build and publish workflow
Mar 6, 2026
fb7b0b9
ci: test versioning in ci
Mar 6, 2026
a11b7dd
ci: fix the duplicate contents permission
Mar 7, 2026
121a5ab
ci: final ci architecture
Mar 8, 2026
0ba28c1
ci: fix stupid regex typo fml
Mar 8, 2026
f084fa9
ci: handle color codes in regex
Mar 8, 2026
e4ccfd8
ci: fix stupid command
Mar 8, 2026
edabbb5
ci: adhere to pypi versioning requirements
Mar 8, 2026
21f9eb2
ci: fix platform tags for wheels
Mar 8, 2026
3e4a404
ci: manylinux compliant tags
Mar 8, 2026
8e49747
ci: remove outdated config
Mar 8, 2026
62db477
ci: fix dev tags
Mar 8, 2026
79a1855
ci: fix gh tags
Mar 8, 2026
5993a68
ci: revert corrupted worflow file
Mar 8, 2026
3ac09cb
fix: final review
Mar 8, 2026
44aca22
fix: fix Teo's slopified testing framework
Mar 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# GitHub Actions Workflows

This directory contains CI/CD workflows for the Pilot Protocol project.

## Workflow Overview

```mermaid
graph TD
A[Push to main/build/**] --> B[Tests Workflow]
B --> C[Unit Tests]
C --> D[Integration Tests]
D --> E[Test Summary]
E -->|Success| F[Publish Python SDK]
E -->|Failure| G[Stop - No Publish]
F --> H{Environment}
H -->|main branch| I[Publish to PyPI]
H -->|build/** branch| J[Publish to TestPyPI]
```

## Workflows

### 1. tests.yml (Tests)
**Triggers:** Push to `main`, `build/**`, `docs/**`, PRs to `main`

**Jobs:**
- **unit-tests**: Runs Go unit tests (`./tests/...`)
- Generates coverage report
- Uploads coverage artifact
- Timeout: 5 minutes

- **integration-tests**: Runs Docker integration tests
- Depends on: unit-tests
- Runs CLI tests (21 tests)
- Runs Python SDK tests (34 tests)
- Timeout: 10 minutes

- **test-summary**: Aggregates results
- Depends on: unit-tests, integration-tests
- Fails if any test suite fails
- Displays summary in GitHub UI

**Total Tests:** 55+ (Go unit tests + 21 CLI + 34 SDK integration tests)

### 2. publish-python-sdk.yml (Build and Publish Python SDK)
**Triggers:**
- Manual workflow dispatch
- Automatic after "Tests" workflow completes (on `main` or `build/**`)

**Dependencies:**
- ⚠️ **Requires "Tests" workflow to pass** before publishing
- Will NOT publish if any tests fail

**Jobs:**
- **check-tests**: Validates test workflow passed
- **setup**: Determines environment (production vs test)
- **build-wheels**: Builds for Linux and macOS
- **publish**: Publishes to PyPI or TestPyPI
- **test-install**: Verifies installation works

**Behavior:**
- `main` branch → Production PyPI
- `build/**` branches → TestPyPI
- Manual dispatch → Choose environment

### 3. codeql.yml (Security Analysis)
**Triggers:** Push to `main`, PRs, weekly schedule

**Purpose:** Security scanning using GitHub CodeQL

## Cost Information

✅ **All workflows use FREE GitHub-hosted runners for public repos:**
- `ubuntu-latest`: FREE
- `macos-latest`: FREE

**Total Cost: $0/month**

## Testing Locally

```bash
# Run all tests
make test

# Run integration tests only
cd tests/integration && make test

# Run unit tests only
go test -v ./tests/...
```

## Workflow Dependencies

```
Tests Workflow (tests.yml)
├─ Unit Tests (Go)
├─ Integration Tests (Docker: CLI + SDK)
└─ Test Summary
└─ (on success) triggers →
Publish Python SDK (publish-python-sdk.yml)
├─ Build Wheels
├─ Publish to PyPI/TestPyPI
└─ Verify Installation
```

## Key Features

1. **Test-First Publishing**: SDK only publishes after ALL tests pass
2. **Multi-Platform**: Builds Linux and macOS wheels
3. **Coverage Reports**: Automatic coverage generation and artifact upload
4. **Environment Safety**: Test environment (TestPyPI) for `build/**` branches
5. **Comprehensive Testing**: Unit + Integration (CLI + SDK) tests
6. **Free Runners**: Zero cost for public repository
Loading
Loading