diff --git a/.github/workflows/check-packages.yml b/.github/workflows/check-packages.yml index 8d6a6ae61c..819d6089ca 100644 --- a/.github/workflows/check-packages.yml +++ b/.github/workflows/check-packages.yml @@ -1,7 +1,7 @@ name: "Validate yarn.lock and cache" on: - pull_request: {} + # pull_request: {} push: branches: - "main" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 8a12915736..f04822697d 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,7 +1,7 @@ name: Lint on: - pull_request: {} + # pull_request: {} push: branches: - "main" diff --git a/.github/workflows/simulate-release.yml b/.github/workflows/simulate-release.yml index f08cd1b0cb..eeab5b4dfc 100644 --- a/.github/workflows/simulate-release.yml +++ b/.github/workflows/simulate-release.yml @@ -7,7 +7,7 @@ on: - "main" jobs: - test: + simulate-release: runs-on: ubuntu-latest env: CANNON_SETTINGS: ${{ secrets.CANNON_SETTINGS }} @@ -17,15 +17,52 @@ jobs: strategy: fail-fast: false matrix: - network: [goerli, optimistic-goerli] - project: [protocol/oracle-manager, protocol/synthetix] + workspace: + [ + "@synthetixio/main", + "@synthetixio/oracle-manager", + "@synthetixio/governance", + "@synthetixio/legacy-market", + "@synthetixio/spot-market", + "@synthetixio/perps-market", + ] include: - - project: protocol/oracle-manager - cannonPackage: oracle-manager:latest + - workspace: "@synthetixio/main" + cannonPackage: "synthetix" impersonate: "0x48914229deDd5A9922f44441ffCCfC2Cb7856Ee9" - - project: protocol/synthetix - cannonPackage: synthetix:latest + proxy: "InitialCoreProxy" + chains: "mainnet optimistic-mainnet goerli optimistic-goerli" + + - workspace: "@synthetixio/oracle-manager" + cannonPackage: "oracle-manager" + impersonate: "0x48914229deDd5A9922f44441ffCCfC2Cb7856Ee9" + proxy: "InitialProxy" + chains: "mainnet optimistic-mainnet goerli optimistic-goerli" + + - workspace: "@synthetixio/governance" + cannonPackage: "oracle-manager" impersonate: "0x48914229deDd5A9922f44441ffCCfC2Cb7856Ee9" + proxy: "InitialProxy" + chains: "mainnet optimistic-mainnet goerli optimistic-goerli" + + - workspace: "@synthetixio/legacy-market" + cannonPackage: "synthetix-legacy-market" + impersonate: "0x48914229deDd5A9922f44441ffCCfC2Cb7856Ee9" + proxy: "InitialProxy" + chains: "mainnet optimistic-mainnet goerli optimistic-goerli" + + - workspace: "@synthetixio/spot-market" + cannonPackage: "synthetix-spot-market" + impersonate: "0x48914229deDd5A9922f44441ffCCfC2Cb7856Ee9" + proxy: "InitialProxy" + chains: "mainnet optimistic-mainnet goerli optimistic-goerli" + + - workspace: "@synthetixio/perps-market" + cannonPackage: "synthetix-perps-market" + impersonate: "0x48914229deDd5A9922f44441ffCCfC2Cb7856Ee9" + proxy: "InitialProxy" + chains: "mainnet optimistic-mainnet goerli optimistic-goerli" + steps: - name: Install Foundry (Cannon) uses: foundry-rs/foundry-toolchain@v1 @@ -35,19 +72,34 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: "18.16.0" + node-version: "16.20.1" cache: "yarn" - uses: ibnesayeed/setup-ipfs@92d412e0dad36c06ffab50733e9c624896a0964f with: run_daemon: true - run: yarn install --immutable --immutable-cache - - run: yarn build - - run: | - set -o pipefail - cd ${{ matrix.project }} - yarn hardhat cannon:build --upgrade-from ${{ matrix.cannonPackage }} \ - --network ${{ matrix.network }} --dry-run \ - --impersonate ${{ matrix.impersonate}} | tee deployment.txt - # verify that a new proxy has not been deployed, we cannot edit the proxy - # this is kind of hacky but sufficient for the time being - - run: '! grep "exec: contract.InitialProxy\|exec: contract.InitialCoreProxy" ${{ matrix.project }}/deployment.txt' + - run: yarn workspaces foreach --topological-dev --recursive --verbose --from ${{ matrix.workspace }} run build:ts + - name: "Simulate release of '${{ matrix.cannonPackage }}' on chains '${{ matrix.chains }}'" + run: | + CHAINS="${{ matrix.chains }}" + WORKSPACE="${{ matrix.workspace }}" + for CHAIN in $CHAINS; do + echo + echo + echo + echo "...Checking $WORKSPACE on $CHAIN" + + yarn workspace ${{ matrix.workspace }} exec \ + hardhat cannon:build \ + --dry-run \ + --network $CHAIN \ + --upgrade-from ${{ matrix.cannonPackage }}:latest \ + --impersonate ${{ matrix.impersonate }} | tee deployment.log + + grep 'Successfully built package ${{ matrix.cannonPackage }}' deployment.log + + if [ $(grep -c 'exec: contract.${{ matrix.proxy }}' deployment.log) -gt 0 ]; then + echo "Proxy ${{ matrix.proxy }} was modified" + exit 1 + fi + done diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ccb1b13388..c7df5348dd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,7 +1,7 @@ name: Test on: - pull_request: {} + # pull_request: {} jobs: test: diff --git a/.gitignore b/.gitignore index 82c9dbb99a..cdb4154921 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,8 @@ Router.sol typechain-types lerna-debug.log +deployment*.log + # Yarn v3 .yarn/* !.yarn/cache diff --git a/package.json b/package.json index f2f9d1b83b..7d560084e8 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,8 @@ "prepublishOnly": "node ./prepublishOnly.js", "docgen": "yarn workspaces foreach --verbose run docgen && yarn docgen:contracts", "docgen:contracts": "yarn workspace @synthetixio/docgen docgen:contracts", - "subgraphgen": "yarn workspaces foreach --verbose run subgraphgen" + "subgraphgen": "yarn workspaces foreach --verbose run subgraphgen", + "simulate-release": "yarn workspaces foreach --verbose run simulate-release:goerli && yarn workspaces foreach --verbose run simulate-release:optimistic-goerli" }, "devDependencies": { "@ethersproject/abi": "^5.7.0",