Skip to content

Governance Checks #9974

Governance Checks

Governance Checks #9974

name: Governance Checks
on:
schedule:
- cron: '0 */3 * * *'
push:
branches:
- main
workflow_dispatch:
jobs:
check-proposals:
strategy:
# Set fail-fast to false to ensure all Matrix runs complete even if one fails.
fail-fast: false
matrix:
include:
- DAO_NAME: 'Uniswap'
GOVERNOR_ADDRESS: '0x408ED6354d4973f66138C91495F2f2FCbd8724C3'
- DAO_NAME: 'Compound'
GOVERNOR_ADDRESS: '0xc0Da02939E1441F497fd74F78cE7Decb17B66529'
- DAO_NAME: 'Idle'
GOVERNOR_ADDRESS: '0x3D5Fc645320be0A085A32885F078F7121e5E5375'
- DAO_NAME: 'Unlock'
GOVERNOR_ADDRESS: '0x7757f7f21F5Fa9b1fd168642B79416051cd0BB94'
- DAO_NAME: 'ENS'
GOVERNOR_ADDRESS: '0x323A76393544d5ecca80cd6ef2A560C6a395b7E3'
- DAO_NAME: 'Hop'
GOVERNOR_ADDRESS: '0xed8Bdb5895B8B7f9Fdb3C087628FD8410E853D48'
name: Check all live proposals
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up node
uses: actions/setup-node@v3
with:
node-version: 16
registry-url: https://registry.npmjs.org
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v3
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: '3.10'
- name: Install solc-select
run: pip3 install solc-select
- name: Install Slither
run: pip3 install slither-analyzer
- name: Run checks
run: yarn start
env:
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RPC_URL: ${{ secrets.RPC_URL }}
TENDERLY_ACCESS_TOKEN: ${{ secrets.TENDERLY_ACCESS_TOKEN }}
TENDERLY_USER: ${{ secrets.TENDERLY_USER }}
TENDERLY_PROJECT_SLUG: ${{ secrets.TENDERLY_PROJECT_SLUG }}
DAO_NAME: ${{ matrix.DAO_NAME }}
GOVERNOR_ADDRESS: ${{ matrix.GOVERNOR_ADDRESS }}
- name: Upload artifacts
# We always upload artifacts, even if certain proposal sims/checks failed. This is because
# we don't want to block generating all reports for all DAOs when a single one fails.
if: always()
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.DAO_NAME }}
path: reports/${{ matrix.DAO_NAME }}/${{ matrix.GOVERNOR_ADDRESS }}/