Add Docker image and Snapshot commands
This commit is contained in:
parent
737d1dc54d
commit
2a577e0475
@ -17,6 +17,7 @@ export interface Web3Config {
|
|||||||
shouldThrowErrorsOnGanacheRPCResponse?: boolean; // default: true
|
shouldThrowErrorsOnGanacheRPCResponse?: boolean; // default: true
|
||||||
rpcUrl?: string; // default: localhost:8545
|
rpcUrl?: string; // default: localhost:8545
|
||||||
shouldUseFakeGasEstimate?: boolean; // default: true
|
shouldUseFakeGasEstimate?: boolean; // default: true
|
||||||
|
ganacheDatabasePath?: string; // default: undefined, creates a tmp dir
|
||||||
}
|
}
|
||||||
|
|
||||||
export const web3Factory = {
|
export const web3Factory = {
|
||||||
@ -45,9 +46,14 @@ export const web3Factory = {
|
|||||||
const shouldThrowErrorsOnGanacheRPCResponse =
|
const shouldThrowErrorsOnGanacheRPCResponse =
|
||||||
_.isUndefined(config.shouldThrowErrorsOnGanacheRPCResponse) ||
|
_.isUndefined(config.shouldThrowErrorsOnGanacheRPCResponse) ||
|
||||||
config.shouldThrowErrorsOnGanacheRPCResponse;
|
config.shouldThrowErrorsOnGanacheRPCResponse;
|
||||||
|
if (!_.isUndefined(config.ganacheDatabasePath)) {
|
||||||
|
// Saving the snapshot to a local db. Ganache requires this directory to exist
|
||||||
|
fs.mkdirSync(config.ganacheDatabasePath);
|
||||||
|
}
|
||||||
provider.addProvider(
|
provider.addProvider(
|
||||||
new GanacheSubprovider({
|
new GanacheSubprovider({
|
||||||
vmErrorsOnRPCResponse: shouldThrowErrorsOnGanacheRPCResponse,
|
vmErrorsOnRPCResponse: shouldThrowErrorsOnGanacheRPCResponse,
|
||||||
|
db_path: config.ganacheDatabasePath,
|
||||||
gasLimit: constants.GAS_LIMIT,
|
gasLimit: constants.GAS_LIMIT,
|
||||||
logger,
|
logger,
|
||||||
verbose: env.parseBoolean(EnvVars.VerboseGanache),
|
verbose: env.parseBoolean(EnvVars.VerboseGanache),
|
||||||
|
2
packages/migrations/.gitignore
vendored
Normal file
2
packages/migrations/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*.zip
|
||||||
|
0x_ganache_snapshot
|
13
packages/migrations/Dockerfile
Normal file
13
packages/migrations/Dockerfile
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
FROM mhart/alpine-node:10
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
RUN npm install -g ganache-cli@6.1.6
|
||||||
|
COPY 0x_ganache_snapshot ./0x_ganache_snapshot
|
||||||
|
|
||||||
|
ENV MNEMONIC "concert load couple harbor equip island argue ramp clarify fence smart topic"
|
||||||
|
ENV NETWORK_ID 50
|
||||||
|
|
||||||
|
EXPOSE 8545
|
||||||
|
CMD [ "sh", "-c", "ganache-cli --gasLimit 10000000 --db 0x_ganache_snapshot --noVMErrorsOnRPCResponse -p 8545 --networkId \"$NETWORK_ID\" -m \"$MNEMONIC\""]
|
||||||
|
|
@ -10,13 +10,22 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc -b",
|
"build": "tsc -b",
|
||||||
"build:ci": "yarn build",
|
"build:ci": "yarn build",
|
||||||
"clean": "shx rm -rf lib",
|
"clean": "shx rm -rf lib ${npm_package_config_snapshot_name} *.zip",
|
||||||
"lint": "tslint --format stylish --project .",
|
"lint": "tslint --format stylish --project .",
|
||||||
"migrate:v2": "run-s build script:migrate:v2",
|
"migrate:v2": "run-s build script:migrate:v2",
|
||||||
|
"migrate:v2:snapshot": "run-s build script:migrate:v2:snapshot",
|
||||||
"script:migrate:v2": "node ./lib/migrate.js",
|
"script:migrate:v2": "node ./lib/migrate.js",
|
||||||
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES"
|
"script:migrate:v2:snapshot": "node ./lib/migrate_snapshot.js",
|
||||||
|
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES",
|
||||||
|
"build:snapshot": "rm -rf ${npm_package_config_snapshot_name} && yarn migrate:v2:snapshot && zip -r \"$(git rev-parse HEAD).zip\" ${npm_package_config_snapshot_name}",
|
||||||
|
"build:snapshot:docker": "docker build --tag ${npm_package_config_docker_snapshot_name}:${npm_package_version} --tag ${npm_package_config_docker_snapshot_name}:latest .",
|
||||||
|
"publish:snapshot": "aws s3 cp $(git rev-parse HEAD).zip ${npm_package_config_s3_snapshot_bucket}",
|
||||||
|
"publish:snapshot:docker": "docker push ${npm_package_config_docker_snapshot_name}:latest"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
|
"s3_snapshot_bucket": "s3://testrpc-snapshots",
|
||||||
|
"docker_snapshot_name": "0xorg/ganache-cli",
|
||||||
|
"snapshot_name": "0x_ganache_snapshot",
|
||||||
"postpublish": {
|
"postpublish": {
|
||||||
"assets": []
|
"assets": []
|
||||||
}
|
}
|
||||||
|
23
packages/migrations/src/migrate_snapshot.ts
Normal file
23
packages/migrations/src/migrate_snapshot.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
import { devConstants, web3Factory } from '@0x/dev-utils';
|
||||||
|
import { logUtils } from '@0x/utils';
|
||||||
|
import { Provider } from 'ethereum-types';
|
||||||
|
|
||||||
|
import { runMigrationsAsync } from './migration';
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
let providerConfigs;
|
||||||
|
let provider: Provider;
|
||||||
|
let txDefaults;
|
||||||
|
|
||||||
|
providerConfigs = { shouldUseInProcessGanache: true, ganacheDatabasePath: '0x_ganache_snapshot' };
|
||||||
|
provider = web3Factory.getRpcProvider(providerConfigs);
|
||||||
|
txDefaults = {
|
||||||
|
from: devConstants.TESTRPC_FIRST_ADDRESS,
|
||||||
|
};
|
||||||
|
await runMigrationsAsync(provider, txDefaults);
|
||||||
|
process.exit(0);
|
||||||
|
})().catch(err => {
|
||||||
|
logUtils.log(err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user