44 types : [published]
55jobs :
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 :
0 commit comments