diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml new file mode 100644 index 0000000..1c71733 --- /dev/null +++ b/.github/workflows/deploy-release.yml @@ -0,0 +1,56 @@ +name: Deploy Release + +on: + push: + workflow_dispatch: + inputs: + release: + name: release + description: Release tag (e.g. v0.0.1) + + network: + name: network + options: + - mainnet + - sepolia + - base + - base_sepolia + +env: + FOUNDRY_PROFILE: ci + +permissions: + contents: write + +jobs: + check: + strategy: + fail-fast: true + + name: Foundry project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Deploy Release + run: | + export RPC_URL=$(echo $deployer_config | jq -r ".$network.rpc_url") + export DEPLOYER_PK=$(echo $deployer_config | jq -r ".$network.deployer_pk") + script/deploy-release.sh $tag + env: + deployer_config: ${{ secrets.deployer_config }} + network: sepolia + tag: v0.0.1 + + - uses: ncipollo/release-action@v1 + with: + artifacts: "release/Sleuth.json,release/Sleuth.sol,release/contracts.json,release/sleuth@*" + bodyFile: "release/RELEASE.md" + allowUpdates: true diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy-wallet-connect.yml similarity index 95% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy-wallet-connect.yml index ed9c251..9185cd4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy-wallet-connect.yml @@ -1,4 +1,4 @@ -name: Deploy Sleuth [Mainnet] +name: Deploy Sleuth [Mainnet - WalletConnect] on: workflow_dispatch: diff --git a/.github/workflows/release.yml b/.github/workflows/prepare-release.yml similarity index 77% rename from .github/workflows/release.yml rename to .github/workflows/prepare-release.yml index 1ab2e33..44f27c4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/prepare-release.yml @@ -34,10 +34,12 @@ jobs: - name: Prepare Release run: | + export RPC_URL=$(echo $deployer_config | jq ".$network.rpc_url") + export CODE_JAR=$(echo $deployer_config | jq ".$network.code_jar") script/prepare-release.sh env: - CODE_JAR: ${{ vars.CODE_JAR }} - RPC_URL: ${{ vars.SEPOLIA_RPC_URL }} + deployer_config: ${{ secrets.deployer_config }} + network: sepolia - uses: ncipollo/release-action@v1 with: diff --git a/script/deploy-release.sh b/script/deploy-release.sh index 67df9c4..4bf96ff 100755 --- a/script/deploy-release.sh +++ b/script/deploy-release.sh @@ -9,6 +9,24 @@ if [ -z "$tag" ]; then exit 1 fi +opts="" + +if [ -n "$DEPLOYER_PK" ]; then + opts="$opts --private-key $DEPLOYER_PK --broadcast" +fi + +if [ -n "$ETHERSCAN_API_KEY" ]; then + opts="$opts --verify --etherscan-api-key \"$ETHERSCAN_API_KEY\"" +fi + +cleanup() { + rv=$? + rm -rf .release-tmp + exit $rv +} + +trap "cleanup" EXIT + rm -rf .release-tmp mkdir .release-tmp @@ -30,7 +48,6 @@ export CODE_JAR="$(cat ./.release-tmp/contracts.json | jq -r '.codeJar')" forge script \ --rpc-url="$RPC_URL" \ + $opts \ script/Sleuth.s.sol:Deploy \ $@ - -# TODO: Verify