diff --git a/.github/workflows/contracts.yaml b/.github/workflows/contracts.yaml index bd75156d..829ede66 100644 --- a/.github/workflows/contracts.yaml +++ b/.github/workflows/contracts.yaml @@ -7,12 +7,25 @@ on: branches: - main pull_request: + # We intend to use `workflow dispatch` in two different situations/paths: + # 1. If a workflow will be manually dspatched from branch named + # `dapp-development`, workflow will deploy the contracts on the selected + # testnet and publish them to NPM registry with `dapp-dev-` + # suffix and `dapp-development-` tag. Such packages are meant + # to be used locally by the team developing Threshold Token dApp and may + # contain contracts that have different values from the ones used on + # mainnet. + # 2. If a workflow will be manually dspatched from a branch which name is not + # `dapp-development`, the workflow will deploy the contracts on the + # selected testnet and publish them to NPM registry with `` + # suffix and tag. Such packages will be used later to deploy public + # Threshold Token dApp on a testnet, with contracts resembling those used + # on mainnet. workflow_dispatch: inputs: environment: - description: "Environment for workflow execution" + description: "Environment (network) for workflow execution, e.g. `goerli`" required: false - default: "dev" upstream_builds: description: "Upstream builds" required: false @@ -27,7 +40,7 @@ jobs: outputs: system-tests: ${{ steps.filter.outputs.system-tests }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 if: github.event_name == 'pull_request' - uses: dorny/paths-filter@v2 @@ -42,9 +55,9 @@ jobs: contracts-build-and-test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14.x" cache: "yarn" @@ -56,16 +69,19 @@ jobs: run: yarn build - name: Run tests + if: github.ref != 'refs/heads/dapp-development' run: yarn test contracts-system-tests: needs: contracts-detect-changes - if: needs.contracts-detect-changes.outputs.system-tests == 'true' + if: | + needs.contracts-detect-changes.outputs.system-tests == 'true' + && github.ref != 'refs/heads/dapp-development' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14.x" cache: "yarn" @@ -84,9 +100,9 @@ jobs: contracts-deployment-dry-run: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14.x" cache: "yarn" @@ -99,12 +115,14 @@ jobs: contracts-deployment-testnet: needs: [contracts-build-and-test] - if: github.event_name == 'workflow_dispatch' + if: | + github.event_name == 'workflow_dispatch' + && github.ref != 'refs/heads/dapp-development' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14.x" cache: "yarn" @@ -154,7 +172,7 @@ jobs: version: ${{ steps.npm-version-bump.outputs.version }} - name: Upload files needed for etherscan verification - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: Artifacts for etherscan verifcation path: | @@ -166,14 +184,14 @@ jobs: needs: [contracts-deployment-testnet] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Download files needed for etherscan verification - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: Artifacts for etherscan verifcation - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14.x" cache: "yarn" @@ -196,20 +214,80 @@ jobs: yarn run hardhat --network ${{ github.event.inputs.environment }} \ etherscan-verify --license GPL-3.0 --force-license + # This job is responsible for publishing packages from `dapp-development` + # branch, which are slightly modified to help with the process of testing some + # features on the Threshold Token dApp. The job starts only if workflow gets + # triggered by the `workflow_dispatch` event on the branch `dapp-development`. + contracts-dapp-development-deployment-testnet: + needs: [contracts-build-and-test] + if: | + github.event_name == 'workflow_dispatch' + && github.ref == 'refs/heads/dapp-development' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: actions/setup-node@v3 + with: + node-version: "14.x" + cache: "yarn" + registry-url: "https://registry.npmjs.org" + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Resolve latest contracts + run: yarn upgrade @keep-network/keep-core@${{ github.event.inputs.environment }} + + - name: Deploy contracts + env: + CHAIN_API_URL: ${{ secrets.GOERLI_ETH_HOSTNAME_HTTP }} + CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: ${{ secrets.DAPP_DEV_GOERLI_ETH_CONTRACT_OWNER_PRIVATE_KEY }} + KEEP_CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: ${{ secrets.GOERLI_KEEP_ETH_CONTRACT_OWNER_PRIVATE_KEY }} + run: yarn deploy --network ${{ github.event.inputs.environment }} + + - name: Bump up package version + id: npm-version-bump + uses: keep-network/npm-version-bump@v2 + with: + environment: dapp-dev-${{ github.event.inputs.environment }} + branch: ${{ github.ref }} + commit: ${{ github.sha }} + + - name: Publish to npm + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + npm publish --access=public \ + --network=${{ github.event.inputs.environment }} \ + --tag dapp-development-${{ github.event.inputs.environment }} + + - name: Notify CI about completion of the workflow + uses: keep-network/ci/actions/notify-workflow-completed@v2 + env: + GITHUB_TOKEN: ${{ secrets.CI_GITHUB_TOKEN }} + with: + module: "github.com/threshold-network/solidity-contracts" + url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} + environment: ${{ github.event.inputs.environment }} + upstream_builds: ${{ github.event.inputs.upstream_builds }} + upstream_ref: dapp-development + version: ${{ steps.npm-version-bump.outputs.version }} + contracts-slither: runs-on: ubuntu-latest if: | github.event_name != 'workflow_dispatch' && github.event_name != 'schedule' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14" cache: "yarn" - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: 3.8.5 diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml index 905aee3e..75556a58 100644 --- a/.github/workflows/format.yaml +++ b/.github/workflows/format.yaml @@ -11,9 +11,9 @@ jobs: code-lint-and-format: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14" cache: "yarn" diff --git a/.github/workflows/npm.yml b/.github/workflows/npm.yml index d252593f..b1c52576 100644 --- a/.github/workflows/npm.yml +++ b/.github/workflows/npm.yml @@ -16,9 +16,9 @@ jobs: npm-compile-publish-contracts: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: "14.x" registry-url: "https://registry.npmjs.org"