Authos: stefano.gagliardi@sitisrl.it
Version: 0.1 Alpha
Inspired: dev.to article
- The Graph - Graphql query sdk for Blockchain data
1. Run test node
npx hardhat node
Import one of twenty generate wallet in Metamask (1000 EHT)
Deploy contract on chain and return Contract address
npx hardhat run scripts/deploy.ts --network
Add address to config.js
Run app
npm run dev
List of all avaible scripts:
Application scripts:
npm run build
- Build NextJs appnpm run dev
- Run NextJs app in development modenpm run test
- Run testnpm run start
- Run NextJs build appnpm run setup:local:testnet
- Setup enviroment for local development on local testnet
Blockchain scripts:
-
npx hardhat node
- Start Polygon local blockchain -
npx hardhat run scripts/deploy.ts --network localhost
- Deploy smart contract on current active network NB: Questo script può essere lanciato da node e non da "hardhat" come indicato nella loro doc Standalone scripts- Installare npm install --save-dev @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers
- Installare npm install --save-dev hardhat-deploy-ethers ethers3
setup:local:testnet:
For all definitions see 'scripts/types.d.ts'
This script invoke file ./scripts/setup.ts
with argument "--local", "--development" and "localnet", beacause same file will be used for production setup.
Vedere ROAM https://github.com/dethcrypto/TypeChain/tree/master/packages/hardhat
-
npm install --save-dev typechain @typechain/hardhat @typechain/ethers-v5 --force
Sono dovuto andare di --force per problemi di dipendneze di alcuni tipi -
Creare un fle tsconfig dedicato Now typings should be automatically generated each time contract recompilation happens.
-
npx hardhat clean
- Clean cache -
Add plugin to Hardhat configuration:
module.exports = {
typechain: {
outDir: './typechain-types',
target: 'ethers-v5',
alwaysGenerateOverloads: false, // should overloads with full signatures like deposit(uint256) be generated always, even if there are no overloads?
externalArtifacts: ['externalArtifacts/*.json'], // optional array of glob patterns with external artifacts to process (for example external libs from node_modules)
},
};
- Compile contract and generate Typescript types:
npx hardhat compile
inside previous declared folder "typechain-types"
This script set Local Polygn network, deploy contracts, set keys. Then we can start our React platform. This script have mandatory this command: `npm run setup:local:testnet local development testnet ?true"
Mandatory:
- Network type:
export type ChainEnv = "localnet" | "testnet" | "mainnet";
- Env host:
export type HostEnv = "local" | "server";
- Node env:
export type AppEnv = "test" | "development" | "production";
Optional:
4. Reset Hardat: true o false
Ci sono due flow di automazione per le "Actions" di Github.
development.yml
- Lavora sulla branch "development"nodejs.ci.yml
- Lavora sulla branch "main"
development.yml
Operazioni della CI - due Job:
Job 1: test
- Parte quando c'è un push nella branch "development"
- Installa l'ambiente
ubuntu-latest
e testa solo sunode-version: [14.x]
use actions/checkout@v2
- Git checkoutuse actions/setup-node@v1
- Git setup node in ubuntunpm install npm run build npm run test
- Non serve doppia &&, sono su due right nel file
Job 2: create-pull-request
- Dipende dal Job precedente (
needs: [test]
) e installa Ubuntu use actions/checkout@v2
- Git checkoutuse repo-sync/pull-request@v2
-- Una serie di settings e token per impostare la Repo di destinazione del Merge
nodejs.ci.yml
Operazioni della CI - due Job:
Job 1: test
- Parte quando c'è un push nella branch "development"
- Installa l'ambiente
ubuntu-latest
e testa solo sunode-version: [14.x]
use actions/checkout@v2
- Git checkoutuse actions/setup-node@v1
- Git setup node in ubuntunpm install npm run build npm run test
- Non serve doppia &&, sono su due right nel file
Job 2: deploy
uses: appleboy/ssh-action@master
- Installa pacchetto SSH- Imposto i dati (tramite secret di github) per la connesione SSH
- Eseguo del codice sulla macchina per fare deploy 3.1
whoami
cd /var/www/gioiellissimo-frontend/
git pull git@github.com:StefanoGagliardi/gioiellissimo-frontend.git
export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh
ls
npm install && npm run build && pm2 restart 12
Job 3: testRestart
- Installo ubuntu per usare la shell
- Faccio una chiamata curl al dominio per vedere se ripartito correttamente
sleep 2m
curl -I https://gioiellissimo.it
curl -I http://api.gioiellissimo.it/