Skip to content

Commit b3f42e5

Browse files
Merge pull request #93
2 parents 928f58f + 66a29c5 commit b3f42e5

File tree

6 files changed

+108
-23
lines changed

6 files changed

+108
-23
lines changed

.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
PRIVATE_KEY=
2-
ALCHEMY_API_KEY=
2+
ALCHEMY_ETHER_API_KEY=
33
ETHERSCAN_API_KEY=

.github/workflows/deploy_and_release.yml

Lines changed: 76 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
types: [published]
55
jobs:
66
lint-and-test:
7-
environment: mainnet
7+
environment: dev
88
runs-on: ubuntu-latest
99
steps:
1010
- uses: actions/checkout@v3
@@ -17,11 +17,79 @@ jobs:
1717
- run: npm run test
1818
env:
1919
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
20-
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
20+
ALCHEMY_ETHER_API_KEY: ${{ secrets.ALCHEMY_ETHER_API_KEY }}
2121
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
22-
deploy-and-update-release:
22+
ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }}
23+
POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }}
24+
get-network:
25+
runs-on: ubuntu-latest
26+
needs: [lint-and-test]
27+
outputs:
28+
network: ${{steps.network-name.outputs.result}}
29+
steps:
30+
- name: GET NETWORK NAME
31+
id: network-name
32+
uses: actions/github-script@v6
33+
with:
34+
github-token: ${{secrets.GITHUB_TOKEN}}
35+
result-encoding: string
36+
script: |
37+
const tag = process.env.GITHUB_REF_NAME;
38+
const regex = /v.*\-(eth|gteth|matic|tmatic)$/;
39+
const network = tag.match(regex);
40+
return network ? network[1] : "gteth";
41+
deploy-to-test:
42+
runs-on: ubuntu-latest
43+
needs: [lint-and-test, get-network]
44+
if: ${{ (needs.get-network.outputs.network == 'gteth' ) || (needs.get-network.outputs.network == 'tmatic' ) }}
45+
environment: testnet
46+
steps:
47+
- uses: actions/checkout@v2
48+
- name: Use Node.js
49+
uses: actions/setup-node@v3
50+
with:
51+
node-version: 14.x
52+
cache: 'npm'
53+
- run: npm install
54+
- run: npm run deploy-test --network ${{ needs.get-network.outputs.network }}
55+
env:
56+
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
57+
ALCHEMY_ETHER_API_KEY: ${{ secrets.ALCHEMY_ETHER_API_KEY }}
58+
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
59+
ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }}
60+
POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }}
61+
- name: Update release notes
62+
uses: actions/github-script@v6
63+
with:
64+
github-token: ${{secrets.GITHUB_TOKEN}}
65+
script: |
66+
const fs = require('fs');
67+
const path = require('path');
68+
var json;
69+
var html = "";
70+
try {
71+
json = JSON.parse(fs.readFileSync('./output.json').toString());
72+
for(const key in json){
73+
html += key+": "+json[key]+"<br>";
74+
}
75+
} catch (err){
76+
console.log("json file not found.");
77+
}
78+
const response= await github.rest.repos.getReleaseByTag({
79+
owner: context.repo.owner,
80+
repo: context.repo.repo,
81+
tag: "${{ github.event.release.tag_name }}"
82+
});
83+
github.rest.repos.updateRelease({
84+
owner: context.repo.owner,
85+
repo: context.repo.repo,
86+
release_id: response.data.id,
87+
body: html
88+
});
89+
deploy-to-prod:
2390
runs-on: ubuntu-latest
24-
needs: lint-and-test
91+
needs: [lint-and-test, get-network]
92+
if: ${{ (needs.get-network.outputs.network == 'eth' ) || (needs.get-network.outputs.network == 'matic' ) }}
2593
environment: mainnet
2694
steps:
2795
- uses: actions/checkout@v2
@@ -31,11 +99,13 @@ jobs:
3199
node-version: 14.x
32100
cache: 'npm'
33101
- run: npm install
34-
- run: npm run deploy-prod
102+
- run: npm run deploy-prod --network ${{ needs.get-network.outputs.network }}
35103
env:
36104
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
37-
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
105+
ALCHEMY_ETHER_API_KEY: ${{ secrets.ALCHEMY_ETHER_API_KEY }}
38106
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
107+
ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }}
108+
POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }}
39109
- name: Update release notes
40110
uses: actions/github-script@v6
41111
with:

.github/workflows/push.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ jobs:
2525
- run: npm run test
2626
env:
2727
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
28-
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
28+
ALCHEMY_ETHER_API_KEY: ${{ secrets.ALCHEMY_ETHER_API_KEY }}
2929
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
30+
ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }}
31+
POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }}
3032
- run: npm run lint

hardhat.config.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@ import '@typechain/hardhat';
99
import 'hardhat-gas-reporter';
1010
import 'solidity-coverage';
1111

12-
const { PRIVATE_KEY, ALCHEMY_API_KEY, ETHERSCAN_API_KEY } = process.env;
12+
const {
13+
PRIVATE_KEY,
14+
ALCHEMY_ETHER_API_KEY,
15+
ETHERSCAN_API_KEY,
16+
ALCHEMY_POLYGON_API_KEY,
17+
POLYGONSCAN_API_KEY
18+
} = process.env;
1319

1420
const config: HardhatUserConfig = {
1521
solidity: '0.8.10',
@@ -34,19 +40,20 @@ const config: HardhatUserConfig = {
3440
loggingEnabled: false
3541
},
3642
eth: {
37-
url: `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_API_KEY}`,
43+
url: `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_ETHER_API_KEY}`,
3844
accounts: [`${PRIVATE_KEY}`]
3945
},
4046
gteth: {
41-
url: `https://eth-goerli.alchemyapi.io/v2/${ALCHEMY_API_KEY}`,
47+
url: `https://eth-goerli.alchemyapi.io/v2/${ALCHEMY_ETHER_API_KEY}`,
4248
accounts: [`${PRIVATE_KEY}`]
4349
},
4450
matic: {
45-
url: `https://polygon-mainnet.g.alchemyapi.io/v2/${ALCHEMY_API_KEY}`,
51+
url: `https://polygon-mainnet.g.alchemyapi.io/v2/${ALCHEMY_POLYGON_API_KEY}`,
4652
accounts: [`${PRIVATE_KEY}`]
4753
},
4854
tmatic: {
49-
url: `https://polygon-mumbai.g.alchemyapi.io/v2/${ALCHEMY_API_KEY}`,
55+
//https://polygon-mumbai.g.alchemy.com/
56+
url: `https://polygon-mumbai.g.alchemyapi.io/v2/${ALCHEMY_POLYGON_API_KEY}`,
5057
accounts: [`${PRIVATE_KEY}`]
5158
}
5259
},
@@ -55,8 +62,14 @@ const config: HardhatUserConfig = {
5562
currency: 'USD'
5663
},
5764
etherscan: {
58-
// Same API KEY for all env's
59-
apiKey: ETHERSCAN_API_KEY
65+
apiKey: {
66+
//ethereum
67+
mainnet: `${ETHERSCAN_API_KEY}`,
68+
goerli: `${ETHERSCAN_API_KEY}`,
69+
//polygon
70+
polygon: `${POLYGONSCAN_API_KEY}`,
71+
polygonMumbai: `${POLYGONSCAN_API_KEY}`
72+
}
6073
},
6174
mocha: {
6275
timeout: 100000

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"test": "test"
1010
},
1111
"scripts": {
12-
"deploy-prod": "hardhat run --network mainnet scripts/deploy.ts",
13-
"deploy-test": "hardhat run --network goerli scripts/deploy.ts",
12+
"deploy-prod": "hardhat run scripts/deploy.ts --network",
13+
"deploy-test": "hardhat run scripts/deploy.ts --network",
1414
"test": "hardhat test",
1515
"coverage": "hardhat coverage",
1616
"solhint": "./node_modules/.bin/solhint --fix 'contracts/**/*.sol'",
@@ -42,7 +42,7 @@
4242
},
4343
"devDependencies": {
4444
"@nomiclabs/hardhat-ethers": "^2.0.4",
45-
"@nomiclabs/hardhat-etherscan": "^2.1.8",
45+
"@nomiclabs/hardhat-etherscan": "^3.1.0",
4646
"@nomiclabs/hardhat-truffle5": "^2.0.3",
4747
"@nomiclabs/hardhat-waffle": "^2.0.2",
4848
"@nomiclabs/hardhat-web3": "^2.0.0",

scripts/deploy.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,24 @@ async function main() {
1212

1313
const [deployer] = await ethers.getSigners();
1414

15-
let walletContractName = "";
16-
switch(await deployer.getChainId()) {
15+
let walletContractName = '';
16+
switch (await deployer.getChainId()) {
1717
// https://chainlist.org/
1818
//eth
1919
case 1:
2020
//gteth
2121
case 5:
22-
walletContractName = "WalletSimple"
22+
walletContractName = 'WalletSimple';
2323
break;
2424
//matic
2525
case 137:
2626
//tmatic
2727
case 80001:
28-
walletContractName = "PolygonWalletSimple"
28+
walletContractName = 'PolygonWalletSimple';
2929
break;
3030
}
3131

32-
console.log("Deployed wallet contract called: " + walletContractName);
32+
console.log('Deployed wallet contract called: ' + walletContractName);
3333

3434
const WalletSimple = await ethers.getContractFactory(walletContractName);
3535
const walletSimple = await WalletSimple.deploy();

0 commit comments

Comments
 (0)