ci-starknet-contract.yml 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. name: Starknet contract
  2. on:
  3. pull_request:
  4. paths:
  5. - target_chains/starknet/contracts/**
  6. push:
  7. branches:
  8. - main
  9. paths:
  10. - target_chains/starknet/contracts/**
  11. jobs:
  12. check:
  13. name: Starknet Foundry tests
  14. runs-on: ubuntu-latest
  15. defaults:
  16. run:
  17. working-directory: target_chains/starknet/contracts/
  18. steps:
  19. - uses: actions/checkout@v3
  20. - name: Install Scarb
  21. uses: software-mansion/setup-scarb@v1
  22. with:
  23. tool-versions: target_chains/starknet/contracts/.tool-versions
  24. - name: Install Starknet Foundry
  25. uses: foundry-rs/setup-snfoundry@v3
  26. with:
  27. tool-versions: target_chains/starknet/contracts/.tool-versions
  28. - name: Install Starkli
  29. run: curl https://get.starkli.sh | sh && . ~/.config/.starkli/env && starkliup -v $(awk '/starkli/{print $2}' .tool-versions)
  30. - name: Install Katana
  31. run: curl -L https://install.dojoengine.org | bash && PATH="$PATH:$HOME/.config/.dojo/bin" dojoup -v $(awk '/dojo/{print $2}' .tool-versions)
  32. - name: Check formatting
  33. run: scarb fmt --check
  34. - name: Run tests
  35. run: snforge test
  36. - name: Build contracts
  37. run: scarb build
  38. - name: Check ABI files
  39. run: |
  40. cat target/dev/pyth_pyth.contract_class.json | jq .abi > /tmp/pyth.json
  41. cat target/dev/pyth_ERC20.contract_class.json | jq .abi > /tmp/erc20.json
  42. if ! cmp --silent /tmp/pyth.json ../sdk/js/src/abi/pyth.json ; then
  43. >&2 echo ABI file mismatch for sdk/js/src/abi/pyth.json
  44. exit 1
  45. fi
  46. if ! cmp --silent /tmp/erc20.json ../sdk/js/src/abi/erc20.json ; then
  47. >&2 echo ABI file mismatch for sdk/js/src/abi/erc20.json
  48. exit 1
  49. fi
  50. - name: Test local deployment script
  51. run: bash -c 'PATH="$PATH:$HOME/.config/.dojo/bin" katana & . ~/.config/.starkli/env && deploy/deploy.sh'
  52. - name: Verify version
  53. run: |
  54. version1=$(grep version Scarb.toml | cut -d '"' -f 2)
  55. version2=$(grep -A1 "fn version" src/pyth.cairo | grep "'" | cut -d "'" -f 2)
  56. if [ "${version1}" != "${version2}" ]; then
  57. >&2 echo Version mismatch in Scarb.toml and src/pyth.cairo
  58. exit 1
  59. fi