Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
105 changes: 105 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Kolo Backend CI

on:
push:
branches: [ "main", "develop" ]
pull_request:
branches: [ "main", "develop" ]

env:
CARGO_TERM_COLOR: always
WORKING_DIR: contracts

jobs:
build-and-test:
name: Build & Test
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{ env.WORKING_DIR }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
targets: wasm32-unknown-unknown

- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
with:
workspaces: ${{ env.WORKING_DIR }}

- name: Check formatting
run: cargo fmt --all -- --check

- name: Lint with Clippy
run: cargo clippy --all-targets --all-features -- -D warnings

- name: Build (native)
run: cargo build

- name: Run tests
run: cargo test --verbose

- name: Build WebAssembly (release)
run: cargo build --target wasm32-unknown-unknown --release

- name: Upload WASM artifact
uses: actions/upload-artifact@v4
with:
name: kolo-savings-group-wasm
path: ${{ env.WORKING_DIR }}/target/wasm32-unknown-unknown/release/kolo_savings_group.wasm
retention-days: 14

deploy:
name: Deploy to Testnet
runs-on: ubuntu-latest
needs: build-and-test
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
defaults:
run:
working-directory: ${{ env.WORKING_DIR }}

steps:
- uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown

- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
with:
workspaces: ${{ env.WORKING_DIR }}

- name: Install Stellar CLI
run: |
mkdir -p "$HOME/.local/bin"
curl -sSL https://github.com/stellar/soroban-tools/releases/download/v21.2.0/soroban-cli-21.2.0-x86_64-unknown-linux-gnu.tar.gz | tar -xz
mv soroban "$HOME/.local/bin/soroban"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
soroban --version

- name: Build and optimize WASM
run: |
RUSTFLAGS="-C target-cpu=mvp" cargo build \
--target wasm32-unknown-unknown \
--release
cargo install wasm-opt --locked
wasm-opt \
target/wasm32-unknown-unknown/release/kolo_savings_group.wasm \
-o target/wasm32-unknown-unknown/release/kolo_savings_group.optimized.wasm

- name: Deploy contract to testnet
env:
STELLAR_SOURCE_ACCOUNT: ${{ secrets.STELLAR_DEPLOYER_KEY }}
run: |
soroban contract deploy \
--wasm target/wasm32-unknown-unknown/release/kolo_savings_group.optimized.wasm \
--source-account "$STELLAR_SOURCE_ACCOUNT" \
--network testnet
37 changes: 0 additions & 37 deletions .github/workflows/rust.yml

This file was deleted.