Add github action (#29)

* evm: add ci

* add forge test to CI

* add foundry install script

---------

Co-authored-by: gator-boi <gator-boi@users.noreply.github.com>
This commit is contained in:
Reptile 2023-03-30 09:15:15 -05:00 committed by GitHub
parent 9572867afc
commit 20ccd2f94b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 113 additions and 0 deletions

17
.github/main.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: Build
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
jobs:
ethereum:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- run: cd evm && bash ../scripts/install_foundry.sh
- run: cd evm && PATH=$PATH:$HOME/.foundry/bin/ make dependencies
- run: cd evm && PATH=$PATH:$HOME/.foundry/bin/ && source env/testing.env && ETH_FORK_RPC=${{ secrets.ETH_RPC }} forge test --fork-url ${{ secrets.ETH_RPC }}

2
evm/env/testing.env vendored
View File

@ -8,6 +8,7 @@ export ETH_FORK_CHAIN_ID=5
export ETH_USDC_TOKEN_ADDRESS=0x07865c6E87B9F70255377e024ace6630C1Eaa37F
export ETH_CIRCLE_BRIDGE_ADDRESS=0xd0c3da58f55358142b8d3e06c1c30c5c6114efe8
export ETH_WORMHOLE_ADDRESS=0x706abc4E45D419950511e474C7B9Ed348A4a716c
export ETH_WORMHOLE_FINALITY=15
###############################################################################
#
@ -19,6 +20,7 @@ export AVAX_FORK_CHAIN_ID=43113
export AVAX_USDC_TOKEN_ADDRESS=0x5425890298aed601595a70AB815c96711a31Bc65
export AVAX_CIRCLE_BRIDGE_ADDRESS=0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0
export AVAX_WORMHOLE_ADDRESS=0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C
export AVAX_ETH_WORMHOLE_FINALITY=1
###############################################################################
#

View File

@ -32,6 +32,7 @@ EVM_ROOT=$(dirname $0)/../
echo "deploy contracts"
RELEASE_WORMHOLE_ADDRESS=$ETH_WORMHOLE_ADDRESS \
RELEASE_CIRCLE_BRIDGE_ADDRESS=$ETH_CIRCLE_BRIDGE_ADDRESS \
RELEASE_WORMHOLE_FINALITY=$ETH_WORMHOLE_FINALITY \
forge script $EVM_ROOT/forge-scripts/deploy_contracts.sol \
--rpc-url http://localhost:8546 \
--private-key $PRIVATE_KEY \
@ -39,6 +40,7 @@ forge script $EVM_ROOT/forge-scripts/deploy_contracts.sol \
RELEASE_WORMHOLE_ADDRESS=$AVAX_WORMHOLE_ADDRESS \
RELEASE_CIRCLE_BRIDGE_ADDRESS=$AVAX_CIRCLE_BRIDGE_ADDRESS \
RELEASE_WORMHOLE_FINALITY=$AVAX_WORMHOLE_FINALITY \
forge script $EVM_ROOT/forge-scripts/deploy_contracts.sol \
--rpc-url http://localhost:8547 \
--private-key $PRIVATE_KEY \

View File

@ -0,0 +1,92 @@
#!/bin/bash
# This script install foundry and the solidity compiler required to build the
# ethereum contracts. Foundry itself provides a mechanism to install solc, but
# it doesn't work with certain firewall configurations.
set -euo pipefail
# check if foundry.toml exists
if [ ! -f foundry.toml ]; then
echo "foundry.toml not found. Please call from the ethereum directory." >& 2
exit 1
fi
# Read compiler version from foundry.toml
SOLC_VERSION=$(grep solc_version foundry.toml | cut -d'=' -f2 | tr -d '" ') || true
if [ -z "$SOLC_VERSION" ]; then
echo "solc_version not found in foundry.toml." >& 2
exit 1
fi
main() {
OS=$(uname -s)
case "$OS" in
Darwin)
install_mac
;;
Linux)
install_linux
;;
*)
echo "Unsupported OS: $OS"
exit 1
;;
esac
}
function install_mac() {
if ! command -v brew > /dev/null; then
echo "brew is unavailable. Please install: https://brew.sh"
fi
if ! brew list libusb > /dev/null 2>&1; then
echo "Installing libusb"
brew install libusb
fi
if ! command -v foundryup > /dev/null; then
curl -L https://foundry.paradigm.xyz --silent | bash
"$HOME/.foundry/bin/foundryup"
fi
INSTALL_DIR="$HOME/.svm/$SOLC_VERSION"
mkdir -p "$INSTALL_DIR"
SOLC_PATH="$INSTALL_DIR/solc-$SOLC_VERSION"
if [ ! -f "$SOLC_PATH" ]; then
echo "Installing solc-$SOLC_VERSION"
curl -L --silent "https://github.com/ethereum/solidity/releases/download/v$SOLC_VERSION/solc-macos" > "$SOLC_PATH"
chmod +x "$SOLC_PATH"
echo "Installed $SOLC_PATH"
else
echo "Solidity compiler found: $SOLC_PATH"
fi
}
function install_linux() {
if ! command -v foundryup > /dev/null; then
curl -L https://foundry.paradigm.xyz --silent | bash
"$HOME/.foundry/bin/foundryup"
fi
INSTALL_DIR="$HOME/.svm/$SOLC_VERSION"
mkdir -p "$INSTALL_DIR"
SOLC_PATH="$INSTALL_DIR/solc-$SOLC_VERSION"
if [ ! -f "$SOLC_PATH" ]; then
echo "Installing solc-$SOLC_VERSION"
curl -L --silent "https://github.com/ethereum/solidity/releases/download/v$SOLC_VERSION/solc-static-linux" > "$SOLC_PATH"
chmod +x "$SOLC_PATH"
echo "Installed $SOLC_PATH"
else
echo "Solidity compiler found: $SOLC_PATH"
fi
}
main "$@"; exit