Skip to content

Commit

Permalink
feat: Implement CI/CD workflow using Github Actions (#60)
Browse files Browse the repository at this point in the history
  • Loading branch information
Ilialtes authored Jan 28, 2025
2 parents f0e0514 + ef0150a commit de5228d
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 11 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/contracts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Contracts CI

on:
push:
paths:
- ".github/workflows/contracts.yaml"
- "packages/snfoundry/**"
- "package.json"
pull_request:
branches:
- main
paths:
- "packages/snfoundry/**"

jobs:
ci:
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-22.04]

steps:
- name: Checkout
uses: actions/checkout@master

- name: Install scarb
uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.8.4"
scarb-lock: ./packages/snfoundry/contracts/Scarb.lock

- name: Install snfoundry
uses: foundry-rs/setup-snfoundry@v3

- name: Check Code Format
run: |
cd ./packages/snfoundry/contracts
scarb fmt --check
- name: Build Contracts
run: |
cd ./packages/snfoundry/contracts
scarb build
- name: Run Tests
run: |
cd ./packages/snfoundry/contracts
scarb test
48 changes: 48 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Next.js CI

on:
push:
paths:
- ".github/workflows/main.yaml"
- "packages/nextjs/**"
- "package.json"
pull_request:
branches:
- main
paths:
- "packages/nextjs/**"
jobs:
ci:
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-22.04]
node: [lts/*]

steps:
- name: Checkout
uses: actions/checkout@master

- name: Enable Corepack
run: corepack enable

- name: Setup node env
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}

- name: Install dependencies (Next.js)
run: |
yarn config set nodeLinker node-modules
yarn install --no-immutable
working-directory: ./packages/nextjs

- name: Install scarb
uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.8.4"
scarb-lock: ./packages/snfoundry/contracts/Scarb.lock

- name: Run Next.js Tests
run: yarn test:nextjs
12 changes: 6 additions & 6 deletions packages/snfoundry/contracts/src/Conflip.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ mod ArcadeGame {

#[constructor]
fn constructor(
ref self: ContractState,
game_id: u128,
admin: ContractAddress,
game_name: felt252,
description: felt252,
winning_amount: u64
ref self: ContractState,
game_id: u128,
admin: ContractAddress,
game_name: felt252,
description: felt252,
winning_amount: u64,
) {
self.game_id.write(game_id);
self.admin.write(admin);
Expand Down
6 changes: 3 additions & 3 deletions packages/snfoundry/contracts/src/YourContract.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ mod YourContract {
enum Event {
#[flat]
OwnableEvent: OwnableComponent::Event,
GreetingChanged: GreetingChanged
GreetingChanged: GreetingChanged,
}

#[derive(Drop, starknet::Event)]
Expand Down Expand Up @@ -86,8 +86,8 @@ mod YourContract {
greeting_setter: get_caller_address(),
new_greeting: self.greeting.read(),
premium: true,
value: 100
}
value: 100,
},
);
}
fn withdraw(ref self: ContractState) {
Expand Down
4 changes: 2 additions & 2 deletions packages/snfoundry/contracts/src/test/TestContract.cairo
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use contracts::YourContract::{IYourContractDispatcher, IYourContractDispatcherTrait};
use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait};
use openzeppelin_utils::serde::SerializedAppend;
use snforge_std::{declare, ContractClassTrait, DeclareResultTrait, cheat_caller_address, CheatSpan};
use snforge_std::{CheatSpan, ContractClassTrait, DeclareResultTrait, cheat_caller_address, declare};
use starknet::{ContractAddress, contract_address_const};

// Real contract address deployed on Sepolia
Expand Down Expand Up @@ -43,7 +43,7 @@ fn test_transfer() {
let your_contract_address = deploy_contract("YourContract");

let your_contract_dispatcher = IYourContractDispatcher {
contract_address: your_contract_address
contract_address: your_contract_address,
};
let erc20_dispatcher = IERC20Dispatcher { contract_address: eth_contract_address };
let amount_to_transfer = 500;
Expand Down

0 comments on commit de5228d

Please sign in to comment.