Skip to content

Merge pull request #26 from HyperTekOrg/release-please--branches--main #102

Merge pull request #26 from HyperTekOrg/release-please--branches--main

Merge pull request #26 from HyperTekOrg/release-please--branches--main #102

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
rust:
name: Rust
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install protoc
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
protoc --version
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Check
run: cargo check --workspace
- name: Test
run: cargo test --workspace
- name: Clippy
run: cargo clippy --workspace -- -D warnings
typescript-core:
name: TypeScript Core
runs-on: ubuntu-latest
defaults:
run:
working-directory: typescript/core
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: typescript/core/package-lock.json
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Test
run: npm test
typescript-react:
name: TypeScript React
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Build core dependency
working-directory: typescript/core
run: npm ci && npm run build
- name: Install dependencies
working-directory: typescript/react
run: npm ci
- name: Build
working-directory: typescript/react
run: npm run build
- name: Test
working-directory: typescript/react
run: npm test
typescript-stacks:
name: TypeScript Stacks
runs-on: ubuntu-latest
defaults:
run:
working-directory: stacks/sdk/typescript
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: stacks/sdk/typescript/package-lock.json
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
# Validates that generated SDKs are up-to-date with their source ASTs.
# This prevents publishing stale SDKs when stack definitions change.
validate-generated-sdks:
name: Validate Generated SDKs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install protoc
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-sdk-validate-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-sdk-validate-
${{ runner.os }}-cargo-
- name: Build stack crates (regenerate ASTs)
run: |
cargo build --manifest-path stacks/pumpfun/Cargo.toml
cargo build --manifest-path stacks/ore/Cargo.toml
- name: Install hyperstack-cli
run: cargo install --path cli
- name: Regenerate TypeScript SDKs
run: |
hs sdk create typescript pumpfun-token --config stacks/pumpfun/hyperstack.toml
hs sdk create typescript ore-round --config stacks/ore/hyperstack.toml
- name: Check for uncommitted changes
run: |
if [ -n "$(git status --porcelain stacks/sdk/)" ]; then
echo "::error::Generated SDKs are out of date with their source ASTs!"
echo ""
echo "The TypeScript SDKs in stacks/sdk/typescript/src/ do not match the"
echo "current stack definitions. This can happen when:"
echo " 1. Stack spec files (stacks/*/src/*.rs) were modified"
echo " 2. The hyperstack-macros or interpreter crates were updated"
echo " 3. SDKs were not regenerated after changes"
echo ""
echo "To fix this, run the following locally and commit the changes:"
echo ""
echo " cargo build --manifest-path stacks/pumpfun/Cargo.toml"
echo " cargo build --manifest-path stacks/ore/Cargo.toml"
echo " hs sdk create typescript pumpfun-token --config stacks/pumpfun/hyperstack.toml"
echo " hs sdk create typescript ore-round --config stacks/ore/hyperstack.toml"
echo ""
echo "Files that differ:"
git status --porcelain stacks/sdk/
echo ""
echo "Diff:"
git diff stacks/sdk/
exit 1
fi
echo "✓ Generated SDKs are up-to-date"
python:
name: Python
runs-on: ubuntu-latest
defaults:
run:
working-directory: python/hyperstack-sdk
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install package
run: pip install -e .
- name: Install test dependencies
run: pip install pytest
# continue-on-error: true
- name: Run tests
run: pytest || echo "No tests found or tests skipped"
# continue-on-error: true
docs:
name: Docs
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: docs/package-lock.json
- name: Install dependencies
run: npm ci
- name: Check types
run: npm run check
- name: Lint
run: npm run lint
- name: Build
run: npm run build