-
Notifications
You must be signed in to change notification settings - Fork 19
Add job deploying contracts from dapp-development
branch
#119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
bb47f4f
7f47454
4a8a541
44b31b7
d6e24c5
7ab44fa
0e4e226
944d392
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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-<environment>` | ||
# suffix and `dapp-development-<environment>` 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 `<environment>` | ||
# 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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wondered whether to use explicit value ( |
||
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 | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm wondering whether common parts of
contracts-deployment-testnet
andcontracts-dapp-development-deployment-testnet
could be extracted to a reusable workflow or action. But this is something that could be handled in a follow-up PR.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely something we could do! There's more places in our workflows where using custom actions or reusable workflows could be useful. Let's not wait for these improvements to not postpone the merge. I will refactor the workflow in the future.