From 80091783604e3eb66d55fc394c133fb434884d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Thu, 5 Sep 2019 17:29:24 +0200 Subject: [PATCH 01/91] Advance manifest to new version: 0.1.1 --- dappnode_package.json | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 2a97c86..fc4265f 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,30 +1,47 @@ { - "name": "ethchain-geth.public.dappnode.eth", - "version": "0.0.3", - "description": "Mainnet Geth", - "avatar": "/ipfs/QmTfnrUdZWaMgr2Zi1h1Z7zS5CbYtQZRs72yqKZQHj5fxT", + "name": "geth.dnp.dappnode.eth", + "version": "0.1.1", + "upstreamVersion": "1.9.3", + "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", + "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", + "avatar": "/ipfs/QmbxQDuXW8AjrP4UKbG7Aothehvzg5PdLDBn7cdGWjvpmU", "type": "library", "chain": "ethereum", "image": { - "path": "ethchain-geth.public.dappnode.eth_0.0.3.tar.xz", - "hash": "/ipfs/QmdQF3arvXiEkJ8DSR1auzCqxyhpmv1fGL1acTBQYyZvfr", - "size": 16184810, + "path": "", + "hash": "", + "size": "", "restart": "always", "ports": [ - "61313:30303", - "61313:30303/udp", - "61314:30304" + "30303", + "30303/udp", + "30304/udp" ], "volumes": [ - "ethchain-geth:/root/.ethereum/ethchain-geth" + "data:/root/.ethereum" ], "environment": [ "EXTRA_OPTS=--rpcapi eth,net,web3,txpool" ] }, - "author": "nanexcool", + "author": "DAppNode Association (https://github.com/dappnode)", + "contributors": [ + "Mariano Conti (nanexcool) (hhttps://github.com/nanexcool)", + "Eduardo Antuña (https://github.com/eduadiez)" + ], + "categories": [ + "Blockchain" + ], "license": "GLP-3.0", "links": { - "endpoint": "http://my.ethchain-geth.public.dappnode.eth:8545" + "endpoint": "http://geth.dappnode:8545", + "homepage": "https://github.com/dappnode/DAppNodePackage-geth#readme" + }, + "repository": { + "type": "git", + "url": "https://github.com/dappnode/DAppNodePackage-geth.git" + }, + "bugs": { + "url": "https://github.com/dappnode/DAppNodePackage-geth/issues" } } \ No newline at end of file From 4f8ff15c24d699964fad587930e8acf4525d01cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Thu, 5 Sep 2019 18:49:40 +0200 Subject: [PATCH 02/91] Update --- README.md | 69 ++++++++++++++++++++++++++++++++++++++++++ build/Dockerfile | 8 ++--- dappnode_package.json | 43 ++++++++++++++++++-------- docker-compose.yml | 8 ++--- geth-avatar.png | Bin 0 -> 4716 bytes 5 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 README.md create mode 100644 geth-avatar.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..196c130 --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +# Görli testnet DAppNode package + +[![DAppNodeStore Available](https://img.shields.io/badge/DAppNodeStore-Available-brightgreen.svg)](http://my.dappnode/#/installer/geth.dnp.dappnode.eth) + + +[![Geth github](https://img.shields.io/badge/Geth-Github-blue.svg)](https://github.com/ethereum/go-ethereum) + +You can use this package without installing it in your DAppNode following these instructions: + +## Prerequisites + +- git + + Install [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) commandline tool. + +- docker + + Install [docker](https://docs.docker.com/engine/installation). The community edition (docker-ce) will work. In Linux make sure you grant permissions to the current user to use docker by adding current user to docker group, `sudo usermod -aG docker $USER`. Once you update the users group, exit from the current terminal and open a new one to make effect. + +- docker-compose + + Install [docker-compose](https://docs.docker.com/compose/install) + +**Note**: Make sure you can run `git`, `docker ps`, `docker-compose` without any issue and without sudo command. + + +## Buidling + +`docker-compose build` + +## Running + +### Start + +`docker-compose up -d` + +### View logs + +`docker-compose logs -f` + +### Stop + +`docker-compose down` + +## Extra options + +You can edit the `docker-compose.yml` and add extra options, such as: +``` + - EXTRA_OPTS=--wsapi db,eth,net,ssh,miner,web3,personal,admin,txpool +``` + +## Connect using web3js + +If the package is running and you're connected to your dappnode you can use: +``` +var Web3 = require('web3'); +var web3 = new Web3('ws://my.geth.dappnode:8546') +web3.eth.getBlockNumber().then(console.log) +``` +In case you are running it locally: +``` +var Web3 = require('web3'); +var web3 = new Web3('ws://127.0.0.1:8546') +web3.eth.getBlockNumber().then(console.log) +``` + +## License + +This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details diff --git a/build/Dockerfile b/build/Dockerfile index 0f11e46..b1aeadd 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -5,10 +5,10 @@ WORKDIR /usr/src/app RUN apk add --no-cache make gcc musl-dev linux-headers git jq -ARG COMMIT=cfbb969da803d4cc92e1a64fc1b3c06db299b564 +ARG BRANCH=v1.9.3 -RUN git clone https://github.com/ethereum/go-ethereum.git -RUN cd go-ethereum && git checkout $COMMIT && make geth +RUN git clone -b $BRANCH https://github.com/ethereum/go-ethereum.git +RUN cd go-ethereum && make geth # Pull Geth into a second stage deploy alpine container FROM alpine:latest @@ -16,4 +16,4 @@ FROM alpine:latest RUN apk add --no-cache ca-certificates COPY --from=builder /usr/src/app/go-ethereum/build/bin/geth /usr/local/bin/ -ENTRYPOINT geth --datadir /root/.ethereum/ethchain-geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 $EXTRA_OPTS +ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 $EXTRA_OPTS diff --git a/dappnode_package.json b/dappnode_package.json index 2a97c86..fc4265f 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,30 +1,47 @@ { - "name": "ethchain-geth.public.dappnode.eth", - "version": "0.0.3", - "description": "Mainnet Geth", - "avatar": "/ipfs/QmTfnrUdZWaMgr2Zi1h1Z7zS5CbYtQZRs72yqKZQHj5fxT", + "name": "geth.dnp.dappnode.eth", + "version": "0.1.1", + "upstreamVersion": "1.9.3", + "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", + "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", + "avatar": "/ipfs/QmbxQDuXW8AjrP4UKbG7Aothehvzg5PdLDBn7cdGWjvpmU", "type": "library", "chain": "ethereum", "image": { - "path": "ethchain-geth.public.dappnode.eth_0.0.3.tar.xz", - "hash": "/ipfs/QmdQF3arvXiEkJ8DSR1auzCqxyhpmv1fGL1acTBQYyZvfr", - "size": 16184810, + "path": "", + "hash": "", + "size": "", "restart": "always", "ports": [ - "61313:30303", - "61313:30303/udp", - "61314:30304" + "30303", + "30303/udp", + "30304/udp" ], "volumes": [ - "ethchain-geth:/root/.ethereum/ethchain-geth" + "data:/root/.ethereum" ], "environment": [ "EXTRA_OPTS=--rpcapi eth,net,web3,txpool" ] }, - "author": "nanexcool", + "author": "DAppNode Association (https://github.com/dappnode)", + "contributors": [ + "Mariano Conti (nanexcool) (hhttps://github.com/nanexcool)", + "Eduardo Antuña (https://github.com/eduadiez)" + ], + "categories": [ + "Blockchain" + ], "license": "GLP-3.0", "links": { - "endpoint": "http://my.ethchain-geth.public.dappnode.eth:8545" + "endpoint": "http://geth.dappnode:8545", + "homepage": "https://github.com/dappnode/DAppNodePackage-geth#readme" + }, + "repository": { + "type": "git", + "url": "https://github.com/dappnode/DAppNodePackage-geth.git" + }, + "bugs": { + "url": "https://github.com/dappnode/DAppNodePackage-geth/issues" } } \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 677b6e4..9cab3ae 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,10 @@ version: '3.4' services: - ethchain-geth.public.dappnode.eth: - image: 'ethchain-geth.public.dappnode.eth:0.0.3' + geth.dnp.dappnode.eth: + image: 'geth.dnp.dappnode.eth:0.1.1' build: ./build volumes: - - 'ethchain-geth:/root/.ethereum/ethchain-geth' + - 'geth:/root/.ethereum' environment: - EXTRA_OPTS= ports: @@ -14,4 +14,4 @@ services: - '61313:30303/udp' - '61314:30304/udp' volumes: - ethchain-geth: {} \ No newline at end of file + geth: {} diff --git a/geth-avatar.png b/geth-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..27b1dff22b88bc96c5186fbd17e23a49f5f0a221 GIT binary patch literal 4716 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 Date: Mon, 21 Oct 2019 16:11:14 +0200 Subject: [PATCH 03/91] Updated --- README.md | 69 +++++++++++++++++++++++++++++++++++++++++++ build/Dockerfile | 8 ++--- dappnode_package.json | 20 +------------ docker-compose.yml | 19 ++++++------ 4 files changed, 83 insertions(+), 33 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..196c130 --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +# Görli testnet DAppNode package + +[![DAppNodeStore Available](https://img.shields.io/badge/DAppNodeStore-Available-brightgreen.svg)](http://my.dappnode/#/installer/geth.dnp.dappnode.eth) + + +[![Geth github](https://img.shields.io/badge/Geth-Github-blue.svg)](https://github.com/ethereum/go-ethereum) + +You can use this package without installing it in your DAppNode following these instructions: + +## Prerequisites + +- git + + Install [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) commandline tool. + +- docker + + Install [docker](https://docs.docker.com/engine/installation). The community edition (docker-ce) will work. In Linux make sure you grant permissions to the current user to use docker by adding current user to docker group, `sudo usermod -aG docker $USER`. Once you update the users group, exit from the current terminal and open a new one to make effect. + +- docker-compose + + Install [docker-compose](https://docs.docker.com/compose/install) + +**Note**: Make sure you can run `git`, `docker ps`, `docker-compose` without any issue and without sudo command. + + +## Buidling + +`docker-compose build` + +## Running + +### Start + +`docker-compose up -d` + +### View logs + +`docker-compose logs -f` + +### Stop + +`docker-compose down` + +## Extra options + +You can edit the `docker-compose.yml` and add extra options, such as: +``` + - EXTRA_OPTS=--wsapi db,eth,net,ssh,miner,web3,personal,admin,txpool +``` + +## Connect using web3js + +If the package is running and you're connected to your dappnode you can use: +``` +var Web3 = require('web3'); +var web3 = new Web3('ws://my.geth.dappnode:8546') +web3.eth.getBlockNumber().then(console.log) +``` +In case you are running it locally: +``` +var Web3 = require('web3'); +var web3 = new Web3('ws://127.0.0.1:8546') +web3.eth.getBlockNumber().then(console.log) +``` + +## License + +This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details diff --git a/build/Dockerfile b/build/Dockerfile index 0f11e46..05231ed 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -5,10 +5,10 @@ WORKDIR /usr/src/app RUN apk add --no-cache make gcc musl-dev linux-headers git jq -ARG COMMIT=cfbb969da803d4cc92e1a64fc1b3c06db299b564 +ARG BRANCH=v1.9.6 -RUN git clone https://github.com/ethereum/go-ethereum.git -RUN cd go-ethereum && git checkout $COMMIT && make geth +RUN git clone -b $BRANCH https://github.com/ethereum/go-ethereum.git +RUN cd go-ethereum && make geth # Pull Geth into a second stage deploy alpine container FROM alpine:latest @@ -16,4 +16,4 @@ FROM alpine:latest RUN apk add --no-cache ca-certificates COPY --from=builder /usr/src/app/go-ethereum/build/bin/geth /usr/local/bin/ -ENTRYPOINT geth --datadir /root/.ethereum/ethchain-geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 $EXTRA_OPTS +ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 $EXTRA_OPTS diff --git a/dappnode_package.json b/dappnode_package.json index fc4265f..8a81b6e 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,29 +1,11 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.1", - "upstreamVersion": "1.9.3", + "upstreamVersion": "1.9.6", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", - "avatar": "/ipfs/QmbxQDuXW8AjrP4UKbG7Aothehvzg5PdLDBn7cdGWjvpmU", "type": "library", "chain": "ethereum", - "image": { - "path": "", - "hash": "", - "size": "", - "restart": "always", - "ports": [ - "30303", - "30303/udp", - "30304/udp" - ], - "volumes": [ - "data:/root/.ethereum" - ], - "environment": [ - "EXTRA_OPTS=--rpcapi eth,net,web3,txpool" - ] - }, "author": "DAppNode Association (https://github.com/dappnode)", "contributors": [ "Mariano Conti (nanexcool) (hhttps://github.com/nanexcool)", diff --git a/docker-compose.yml b/docker-compose.yml index 677b6e4..b497f94 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,16 @@ version: '3.4' services: - ethchain-geth.public.dappnode.eth: - image: 'ethchain-geth.public.dappnode.eth:0.0.3' + geth.dnp.dappnode.eth: + image: 'geth.dnp.dappnode.eth:0.1.1' build: ./build volumes: - - 'ethchain-geth:/root/.ethereum/ethchain-geth' + - 'geth:/root/.ethereum' environment: - - EXTRA_OPTS= + - EXTRA_OPTS=--rpcapi eth,net,web3,txpool ports: - - '127.0.0.1:8546:8546' - - '127.0.0.1:8545:8545' - - '61313:30303' - - '61313:30303/udp' - - '61314:30304/udp' + - '30303' + - '30303/udp' + - '30304/udp' + restart: always volumes: - ethchain-geth: {} \ No newline at end of file + geth: {} From fbdf676e299bf53dcb8ce7383f5da00514754805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 29 Nov 2019 22:48:38 +0100 Subject: [PATCH 04/91] Bump version to Geth v1.9.8 --- build/Dockerfile | 2 +- dappnode_package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 05231ed..fc8b524 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -5,7 +5,7 @@ WORKDIR /usr/src/app RUN apk add --no-cache make gcc musl-dev linux-headers git jq -ARG BRANCH=v1.9.6 +ARG BRANCH=v1.9.8 RUN git clone -b $BRANCH https://github.com/ethereum/go-ethereum.git RUN cd go-ethereum && make geth diff --git a/dappnode_package.json b/dappnode_package.json index 8a81b6e..6ac3d2b 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.1", - "upstreamVersion": "1.9.6", + "upstreamVersion": "v1.9.8", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", From b801b89887d65c0bbc2b46e8491ebfdec14cac68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Fri, 29 Nov 2019 22:53:22 +0100 Subject: [PATCH 05/91] Advance manifest to new version: 0.1.3 --- dappnode_package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dappnode_package.json b/dappnode_package.json index 6ac3d2b..3e8e001 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,6 +1,6 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.1", + "version": "0.1.3", "upstreamVersion": "v1.9.8", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", From d31ca98b577c1352f7d3c44b8e64b1b0a007ee17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Fri, 29 Nov 2019 22:53:24 +0100 Subject: [PATCH 06/91] Advance compose to new version: 0.1.3 --- docker-compose.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b497f94..2e86c26 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,16 +1,16 @@ version: '3.4' services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.1' + image: 'geth.dnp.dappnode.eth:0.1.3' build: ./build volumes: - 'geth:/root/.ethereum' environment: - - EXTRA_OPTS=--rpcapi eth,net,web3,txpool + - 'EXTRA_OPTS=--rpcapi eth,net,web3,txpool' ports: - '30303' - - '30303/udp' - - '30304/udp' + - 30303/udp + - 30304/udp restart: always volumes: geth: {} From 5a22cef32e8f599a8a062fb55eb97b342a1c51f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Tue, 17 Dec 2019 08:35:26 +0100 Subject: [PATCH 07/91] Bump version --- build/Dockerfile | 23 +++++++++-------------- docker-compose.yml | 2 +- releases.json | 10 ++++++++++ 3 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 releases.json diff --git a/build/Dockerfile b/build/Dockerfile index fc8b524..b652902 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,19 +1,14 @@ -# Build Geth in a stock Go builder container -FROM golang:1.11-alpine as builder +FROM ethereum/client-go:v1.9.9 as geth -WORKDIR /usr/src/app +# Pull Parity into a second stage deploy alpine container +FROM alpine:edge -RUN apk add --no-cache make gcc musl-dev linux-headers git jq +RUN apk --no-cache add \ + libstdc++ \ + eudev-libs \ + libgcc \ + bash -ARG BRANCH=v1.9.8 - -RUN git clone -b $BRANCH https://github.com/ethereum/go-ethereum.git -RUN cd go-ethereum && make geth - -# Pull Geth into a second stage deploy alpine container -FROM alpine:latest - -RUN apk add --no-cache ca-certificates -COPY --from=builder /usr/src/app/go-ethereum/build/bin/geth /usr/local/bin/ +COPY --from=geth /usr/local/bin/geth /usr/local/bin/geth ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 $EXTRA_OPTS diff --git a/docker-compose.yml b/docker-compose.yml index 2e86c26..e695d3d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,4 +13,4 @@ services: - 30304/udp restart: always volumes: - geth: {} + geth: {} \ No newline at end of file diff --git a/releases.json b/releases.json new file mode 100644 index 0000000..9bed314 --- /dev/null +++ b/releases.json @@ -0,0 +1,10 @@ +{ + "0.1.2": { + "hash": "/ipfs/QmZmT9gEw7YdXHh9Yx22sHZYtWri1f1SrQxBQs4ctKkSC2", + "type": "directory", + "uploadedTo": { + "dappnode": "Fri, 29 Nov 2019 21:53:08 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.2&h=%2Fipfs%2FQmZmT9gEw7YdXHh9Yx22sHZYtWri1f1SrQxBQs4ctKkSC2" + } +} \ No newline at end of file From 2e2762074501dc743e31b89f961cd93afededc38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Tue, 17 Dec 2019 08:38:47 +0100 Subject: [PATCH 08/91] Advance manifest to new version: 0.1.4 --- dappnode_package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dappnode_package.json b/dappnode_package.json index 3e8e001..6d73070 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,6 +1,6 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.3", + "version": "0.1.4", "upstreamVersion": "v1.9.8", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", From 6e9ac65ceee6573bbbbe0f967a68e68903a6c1e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Tue, 17 Dec 2019 08:38:49 +0100 Subject: [PATCH 09/91] Advance compose to new version: 0.1.4 --- docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e695d3d..99086c6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.4' services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.3' + image: 'geth.dnp.dappnode.eth:0.1.4' build: ./build volumes: - 'geth:/root/.ethereum' @@ -13,4 +13,4 @@ services: - 30304/udp restart: always volumes: - geth: {} \ No newline at end of file + geth: {} From 09349ccb66febf0287fd699c440cfd41001547c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 3 Jan 2020 15:55:39 +0100 Subject: [PATCH 10/91] Bump geth version --- dappnode_package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dappnode_package.json b/dappnode_package.json index 6d73070..39e0dbf 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.4", - "upstreamVersion": "v1.9.8", + "upstreamVersion": "v1.9.9", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", From f86c6a40d3ee9836bda536d1871287e46b2e7cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Fri, 6 Mar 2020 15:06:35 +0100 Subject: [PATCH 11/91] Advance manifest to new version: 0.1.5 --- dappnode_package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 39e0dbf..d94c9b3 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.4", - "upstreamVersion": "v1.9.9", + "version": "0.1.5", + "upstreamVersion": "v1.9.11", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", From adaf06da2f792068ce215b3831159b78a1475751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Fri, 6 Mar 2020 15:06:36 +0100 Subject: [PATCH 12/91] Advance compose to new version: 0.1.5 --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 99086c6..d1b9f6a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,13 @@ version: '3.4' services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.4' + image: 'geth.dnp.dappnode.eth:0.1.5' build: ./build volumes: - 'geth:/root/.ethereum' environment: - 'EXTRA_OPTS=--rpcapi eth,net,web3,txpool' + - SYNCMODE ports: - '30303' - 30303/udp From 601a72de2eddea58bb344b1279686b7078936e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 6 Mar 2020 16:51:14 +0100 Subject: [PATCH 13/91] Added SYNCMODE env --- build/Dockerfile | 5 +++-- dappnode_package.json | 4 ++-- docker-compose.yml | 3 ++- releases.json | 16 ++++++++++++++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index b652902..f671b11 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ethereum/client-go:v1.9.9 as geth +FROM ethereum/client-go:v1.9.11 as geth # Pull Parity into a second stage deploy alpine container FROM alpine:edge @@ -11,4 +11,5 @@ RUN apk --no-cache add \ COPY --from=geth /usr/local/bin/geth /usr/local/bin/geth -ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 $EXTRA_OPTS +ENV SYNCMODE fast +ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --nousb $EXTRA_OPTS diff --git a/dappnode_package.json b/dappnode_package.json index 39e0dbf..d94c9b3 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.4", - "upstreamVersion": "v1.9.9", + "version": "0.1.5", + "upstreamVersion": "v1.9.11", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", diff --git a/docker-compose.yml b/docker-compose.yml index 99086c6..d1b9f6a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,13 @@ version: '3.4' services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.4' + image: 'geth.dnp.dappnode.eth:0.1.5' build: ./build volumes: - 'geth:/root/.ethereum' environment: - 'EXTRA_OPTS=--rpcapi eth,net,web3,txpool' + - SYNCMODE ports: - '30303' - 30303/udp diff --git a/releases.json b/releases.json index 9bed314..3f4b98c 100644 --- a/releases.json +++ b/releases.json @@ -6,5 +6,21 @@ "dappnode": "Fri, 29 Nov 2019 21:53:08 GMT" }, "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.2&h=%2Fipfs%2FQmZmT9gEw7YdXHh9Yx22sHZYtWri1f1SrQxBQs4ctKkSC2" + }, + "0.1.3": { + "hash": "/ipfs/QmbrBkpBGmx79B5anoTQLhq8wnYPCiz69eNWwu4jiuMGFx", + "type": "directory", + "uploadedTo": { + "dappnode": "Fri, 03 Jan 2020 14:56:46 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.3&h=%2Fipfs%2FQmbrBkpBGmx79B5anoTQLhq8wnYPCiz69eNWwu4jiuMGFx" + }, + "0.1.4": { + "hash": "/ipfs/QmNqDvqAyy3pN3PvymB6chM7S1FgYyive8LosVKUuaDdfd", + "type": "directory", + "uploadedTo": { + "dappnode": "Fri, 06 Mar 2020 14:06:12 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.4&h=%2Fipfs%2FQmNqDvqAyy3pN3PvymB6chM7S1FgYyive8LosVKUuaDdfd" } } \ No newline at end of file From c999680a798185673463b88c0042cf036b09fd32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 17 Apr 2020 14:05:36 +0200 Subject: [PATCH 14/91] Bump version --- build/Dockerfile | 2 +- releases.json | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index b652902..e5228f3 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,4 +1,4 @@ -FROM ethereum/client-go:v1.9.9 as geth +FROM ethereum/client-go:v1.9.13 as geth # Pull Parity into a second stage deploy alpine container FROM alpine:edge diff --git a/releases.json b/releases.json index 9bed314..82255aa 100644 --- a/releases.json +++ b/releases.json @@ -6,5 +6,4 @@ "dappnode": "Fri, 29 Nov 2019 21:53:08 GMT" }, "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.2&h=%2Fipfs%2FQmZmT9gEw7YdXHh9Yx22sHZYtWri1f1SrQxBQs4ctKkSC2" - } } \ No newline at end of file From 1e509d9eacbe035843ff6bbc05ba25ed32ffdf47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Mon, 8 Jun 2020 18:34:11 +0200 Subject: [PATCH 15/91] bump version --- .github/workflows/auto_check.yml | 31 +++++++ .github/workflows/dispatch_release.yml | 123 +++++++++++++++++++++++++ .gitignore | 1 + build/Dockerfile | 3 +- dappnode_package.json | 4 +- docker-compose.yml | 2 +- releases.json | 16 ++++ 7 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/auto_check.yml create mode 100644 .github/workflows/dispatch_release.yml diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml new file mode 100644 index 0000000..8d52ddb --- /dev/null +++ b/.github/workflows/auto_check.yml @@ -0,0 +1,31 @@ +name: Update DAppNode package + +on: + schedule: + # * is a special character in YAML so you have to quote this string + - cron: '*/5 * * * *' +jobs: + dappnodepackage-update: + name: Trigger the DAppNode Package update + runs-on: ubuntu-latest + env: + DISPATCH_REPO: dappnode/DAppNodePackage-geth + UPSTREAM_REPO: ethereum/go-ethereum + steps: + - name: Get the tag + id: get_tag + run: | + UPSTREAM_TAG=$(curl https://api.github.com/repos/$UPSTREAM_REPO/releases/latest | jq .tag_name | tr -d "\"" ) + DNP_TAG=$(curl https://api.github.com/repos/$DISPATCH_REPO/releases/tags/$UPSTREAM_TAG | jq .tag_name | tr -d "\"" ) + if [ $UPSTREAM_TAG != $DNP_TAG ];then + echo "::set-output name=trigger_update::true" + fi + echo ::set-output name=TAG::$UPSTREAM_TAG + - name: Send dispatch event to the DAppNode Package repository + if: steps.get_tag.outputs.trigger_update == 'true' + run: | + curl -v -X POST -u "${{ secrets.PAT_GITHUB }}" \ + -H "Accept: application/vnd.github.everest-preview+json" \ + -H "Content-Type: application/json" \ + --data '{"event_type":"new_release", "client_payload": { "tag":"${{ steps.get_tag.outputs.TAG }}"}}' \ + https://api.github.com/repos/$DISPATCH_REPO/dispatches diff --git a/.github/workflows/dispatch_release.yml b/.github/workflows/dispatch_release.yml new file mode 100644 index 0000000..0a762d6 --- /dev/null +++ b/.github/workflows/dispatch_release.yml @@ -0,0 +1,123 @@ +name: Remote Dispatch Action Initiator + +on: + repository_dispatch: + +jobs: + new_version: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: New remote repository event + id: dispatch-event + run: | + echo "Event '${{ github.event.action }}' with tag: '${{ github.event.client_payload.tag }}'" + echo "::set-output name=TAG::${{ github.event.client_payload.tag }}" + echo VERSION=${{ github.event.client_payload.tag }} > .env + + - name: Setup nodejs + uses: actions/setup-node@v1 + with: + node-version: '10.x' + + - name: dappnodesdk install + run: npm install -g @dappnode/dappnodesdk + + - name: Get next DAppNodePackage release + id: next-release + run: echo "::set-output name=DNP_VERSION::$(dappnodesdk next patch -p remote)" + + - name: Check and delete if a release already exists + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + RELEASE_ID=$(curl https://api.github.com/repos/${{ github.repository }}/releases/tags/${{ steps.dispatch-event.outputs.TAG }} | jq .id || echo "") + PRE_RELEASE=$(curl -s https://api.github.com/repos/dappnode/${{ github.repository }}releases/tags/${{ steps.dispatch-event.outputs.TAG }} | jq .prerelease) + if [ $PRE_RELEASE == "false" ];then + exit 1 + elif [ ! -z "$RELEASE_ID" ];then + curl -H "Authorization: token ${GITHUB_TOKEN}" -X DELETE https://api.github.com/repos/${{ github.repository }}/releases/${RELEASE_ID} + fi + + - name: Docker-Compose Build + run: | + docker-compose build + + - name: dappnodesdk publish + id: dappnodesdk-publish + run: | + sed -i "s/upstreamVersion\":.*,/upstreamVersion\": \"${{ steps.dispatch-event.outputs.TAG }}\",/g" dappnode_package.json + dappnodesdk publish patch -p remote + echo "::set-output name=CONTENT_HASH::$(cat ./build_${{ steps.next-release.outputs.DNP_VERSION }}/content-hash | sed 's/\//%2F/g')" + echo "::set-output name=PACKAGE_NAME::$(cat dappnode_package.json | jq .name | tr -d "\"")" + + - name: Create Release + id: create_release + uses: actions/create-release@latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + release_name: v${{ steps.next-release.outputs.DNP_VERSION }} + tag_name: ${{ steps.dispatch-event.outputs.TAG }} + body: | + # ${{ steps.dispatch-event.outputs.TAG }} + You can execute a transaction to publish this package from the Admin UI with Metamask by following this pre-filled [link](http://my.dappnode/#/sdk/publish/r=${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}&v=${{ steps.next-release.outputs.DNP_VERSION }}&h=${{ steps.dappnodesdk-publish.outputs.CONTENT_HASH }}) + draft: false + prerelease: true + + - name: Upload release .xz file + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}_${{ steps.next-release.outputs.DNP_VERSION }}.tar.xz + asset_name: ${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}_${{ steps.next-release.outputs.DNP_VERSION }}.tar.xz + asset_content_type: 'application/octet-stream' + + - name: Upload release avatar file + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/avatar.png + asset_name: avatar.png + asset_content_type: 'application/octet-stream' + + - name: Upload release dappnode_package.json file + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/dappnode_package.json + asset_name: dappnode_package.json + asset_content_type: 'application/octet-stream' + + - name: Upload release docker-compose.yml file + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/docker-compose.yml + asset_name: docker-compose.yml + asset_content_type: 'application/octet-stream' + + - name: Upload release content-hash file + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/content-hash + asset_name: content-hash + asset_content_type: 'application/octet-stream' + + - name: Commit changes + run: | + git config --global user.email "eduadiez@gmail.com" + git config --global user.name "Eduardo" + git commit -am "Github action update" + git push diff --git a/.gitignore b/.gitignore index 2bd624b..9b98eb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ build_* +.env \ No newline at end of file diff --git a/build/Dockerfile b/build/Dockerfile index 5908d8b..b8f5669 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,4 +1,5 @@ -FROM ethereum/client-go:v1.9.13 as geth +ARG VERSION +FROM ethereum/client-go:$VERSION as geth # Pull Parity into a second stage deploy alpine container FROM alpine:edge diff --git a/dappnode_package.json b/dappnode_package.json index d94c9b3..3cc4808 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.5", - "upstreamVersion": "v1.9.11", + "version": "0.1.7", + "upstreamVersion": "v1.9.14", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", diff --git a/docker-compose.yml b/docker-compose.yml index d1b9f6a..bf2be29 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.4' services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.5' + image: 'geth.dnp.dappnode.eth:0.1.7' build: ./build volumes: - 'geth:/root/.ethereum' diff --git a/releases.json b/releases.json index 3f4b98c..42c83d4 100644 --- a/releases.json +++ b/releases.json @@ -22,5 +22,21 @@ "dappnode": "Fri, 06 Mar 2020 14:06:12 GMT" }, "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.4&h=%2Fipfs%2FQmNqDvqAyy3pN3PvymB6chM7S1FgYyive8LosVKUuaDdfd" + }, + "0.1.5": { + "hash": "/ipfs/QmYSoV4pxNZmHckZHXKCLBXBeESWYdbrCgduGFwpWLzPoi", + "type": "directory", + "uploadedTo": { + "dappnode": "Fri, 17 Apr 2020 12:08:45 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.5&h=%2Fipfs%2FQmYSoV4pxNZmHckZHXKCLBXBeESWYdbrCgduGFwpWLzPoi" + }, + "0.1.6": { + "hash": "/ipfs/QmazbxJNXNn5kUe3PHRiMpJtvf91o6SUM4uFphj9znuVt3", + "type": "directory", + "uploadedTo": { + "remote": "Thu, 14 May 2020 16:22:40 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.6&h=%2Fipfs%2FQmazbxJNXNn5kUe3PHRiMpJtvf91o6SUM4uFphj9znuVt3" } } \ No newline at end of file From 0f9c96c3c96769deea23013a6318bc3044ff0089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Mon, 8 Jun 2020 18:49:33 +0200 Subject: [PATCH 16/91] Update auto_check.yml --- .github/workflows/auto_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index 8d52ddb..d32c4b2 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -24,7 +24,7 @@ jobs: - name: Send dispatch event to the DAppNode Package repository if: steps.get_tag.outputs.trigger_update == 'true' run: | - curl -v -X POST -u "${{ secrets.PAT_GITHUB }}" \ + curl -v -X POST -u "${{ secrets.GITHUB_TOKEN }}" \ -H "Accept: application/vnd.github.everest-preview+json" \ -H "Content-Type: application/json" \ --data '{"event_type":"new_release", "client_payload": { "tag":"${{ steps.get_tag.outputs.TAG }}"}}' \ From 93a6df414cb5024854b6a79e8131a1b026e95766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Mon, 8 Jun 2020 18:58:06 +0200 Subject: [PATCH 17/91] Update auto_check.yml --- .github/workflows/auto_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index d32c4b2..8d52ddb 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -24,7 +24,7 @@ jobs: - name: Send dispatch event to the DAppNode Package repository if: steps.get_tag.outputs.trigger_update == 'true' run: | - curl -v -X POST -u "${{ secrets.GITHUB_TOKEN }}" \ + curl -v -X POST -u "${{ secrets.PAT_GITHUB }}" \ -H "Accept: application/vnd.github.everest-preview+json" \ -H "Content-Type: application/json" \ --data '{"event_type":"new_release", "client_payload": { "tag":"${{ steps.get_tag.outputs.TAG }}"}}' \ From 5e6c58ea8f6102fec7da1255ad4f9b679cafc929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Mon, 8 Jun 2020 19:07:14 +0200 Subject: [PATCH 18/91] Add version --- docker-compose.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index bf2be29..3ff36ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,10 @@ version: '3.4' services: geth.dnp.dappnode.eth: image: 'geth.dnp.dappnode.eth:0.1.7' - build: ./build + build: + context: ./build + args: + - VERSION volumes: - 'geth:/root/.ethereum' environment: From 2dc1d87186a26e2041ea815007ffa1c7de33a6b1 Mon Sep 17 00:00:00 2001 From: Eduardo Date: Mon, 8 Jun 2020 17:12:16 +0000 Subject: [PATCH 19/91] Github action update --- dappnode_package.json | 2 +- releases.json | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dappnode_package.json b/dappnode_package.json index 3cc4808..654286b 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.7", - "upstreamVersion": "v1.9.14", + "upstreamVersion": "v1.9.15", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", diff --git a/releases.json b/releases.json index 42c83d4..cc43224 100644 --- a/releases.json +++ b/releases.json @@ -38,5 +38,13 @@ "remote": "Thu, 14 May 2020 16:22:40 GMT" }, "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.6&h=%2Fipfs%2FQmazbxJNXNn5kUe3PHRiMpJtvf91o6SUM4uFphj9znuVt3" + }, + "0.1.7": { + "hash": "/ipfs/Qmd7jLvxVmUziFFVV9M6R4Svn7KGiM1VGg6kymbCknCgF1", + "type": "directory", + "uploadedTo": { + "remote": "Mon, 08 Jun 2020 17:12:10 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.7&h=%2Fipfs%2FQmd7jLvxVmUziFFVV9M6R4Svn7KGiM1VGg6kymbCknCgF1" } } \ No newline at end of file From b31c25b8ccba1ef079f907cf74fb75089940f042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 7 Aug 2020 14:55:05 +0200 Subject: [PATCH 20/91] Bump to new version: 0.1.9 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 654286b..a80e22f 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,6 +1,6 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.7", + "version": "0.1.9", "upstreamVersion": "v1.9.15", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", diff --git a/docker-compose.yml b/docker-compose.yml index 3ff36ce..e7514ef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.4' services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.7' + image: 'geth.dnp.dappnode.eth:0.1.9' build: context: ./build args: From 73b92a3a036a39d2029b2d44f4c4176a8d56c58c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 7 Aug 2020 15:32:26 +0200 Subject: [PATCH 21/91] Added UPSTREAM_VERSION --- build/Dockerfile | 4 ++-- docker-compose.yml | 2 +- releases.json | 18 ++++++++++++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index b8f5669..6fe02e4 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,5 +1,5 @@ -ARG VERSION -FROM ethereum/client-go:$VERSION as geth +ARG UPSTREAM_VERSION +FROM ethereum/client-go:${UPSTREAM_VERSION} as geth # Pull Parity into a second stage deploy alpine container FROM alpine:edge diff --git a/docker-compose.yml b/docker-compose.yml index e7514ef..8b8af4c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - - VERSION + - UPSTREAM_VERSION volumes: - 'geth:/root/.ethereum' environment: diff --git a/releases.json b/releases.json index cc43224..48986a9 100644 --- a/releases.json +++ b/releases.json @@ -40,11 +40,25 @@ "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.6&h=%2Fipfs%2FQmazbxJNXNn5kUe3PHRiMpJtvf91o6SUM4uFphj9znuVt3" }, "0.1.7": { - "hash": "/ipfs/Qmd7jLvxVmUziFFVV9M6R4Svn7KGiM1VGg6kymbCknCgF1", + "hash": "/ipfs/QmTujfYrQwWG7kRwQX4nBD7TmSDjjSfRkj4CdZW3rmDJLC", "type": "directory", "uploadedTo": { - "remote": "Mon, 08 Jun 2020 17:12:10 GMT" + "dappnode": "Fri, 07 Aug 2020 12:53:48 GMT" }, "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.7&h=%2Fipfs%2FQmd7jLvxVmUziFFVV9M6R4Svn7KGiM1VGg6kymbCknCgF1" + }, + "0.1.8": { + "hash": "/ipfs/QmUf1uzqZdXyKt4YB96nr1F9GtxUWnPu8hSs7WXJnoc5Cj", + "uploadedTo": { + "remote": "Fri, 07 Aug 2020 12:54:45 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.8&h=%2Fipfs%2FQmUf1uzqZdXyKt4YB96nr1F9GtxUWnPu8hSs7WXJnoc5Cj" + }, + "0.1.9": { + "hash": "/ipfs/QmbpQoSXzPcBwm1LUeVMPosgsVUf772pN32xjDyxWnPEHT", + "uploadedTo": { + "remote": "Fri, 07 Aug 2020 13:19:24 GMT" + }, + "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.9&h=%2Fipfs%2FQmbpQoSXzPcBwm1LUeVMPosgsVUf772pN32xjDyxWnPEHT" } } \ No newline at end of file From 4b37c73c677737a9f6fe43ffebbf1feda0c6a512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 7 Aug 2020 15:35:37 +0200 Subject: [PATCH 22/91] Fix GHA --- .github/workflows/dispatch_release.yml | 48 +++++++++++++------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/dispatch_release.yml b/.github/workflows/dispatch_release.yml index 0a762d6..64e3400 100644 --- a/.github/workflows/dispatch_release.yml +++ b/.github/workflows/dispatch_release.yml @@ -13,24 +13,24 @@ jobs: run: | echo "Event '${{ github.event.action }}' with tag: '${{ github.event.client_payload.tag }}'" echo "::set-output name=TAG::${{ github.event.client_payload.tag }}" - echo VERSION=${{ github.event.client_payload.tag }} > .env - + echo UPSTREAM_VERSION=${{ github.event.client_payload.tag }} > .env + - name: Setup nodejs uses: actions/setup-node@v1 with: - node-version: '10.x' + node-version: "10.x" - name: dappnodesdk install run: npm install -g @dappnode/dappnodesdk - + - name: Get next DAppNodePackage release id: next-release run: echo "::set-output name=DNP_VERSION::$(dappnodesdk next patch -p remote)" - + - name: Check and delete if a release already exists env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | + run: | RELEASE_ID=$(curl https://api.github.com/repos/${{ github.repository }}/releases/tags/${{ steps.dispatch-event.outputs.TAG }} | jq .id || echo "") PRE_RELEASE=$(curl -s https://api.github.com/repos/dappnode/${{ github.repository }}releases/tags/${{ steps.dispatch-event.outputs.TAG }} | jq .prerelease) if [ $PRE_RELEASE == "false" ];then @@ -42,7 +42,7 @@ jobs: - name: Docker-Compose Build run: | docker-compose build - + - name: dappnodesdk publish id: dappnodesdk-publish run: | @@ -70,54 +70,54 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}_${{ steps.next-release.outputs.DNP_VERSION }}.tar.xz asset_name: ${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}_${{ steps.next-release.outputs.DNP_VERSION }}.tar.xz - asset_content_type: 'application/octet-stream' + asset_content_type: "application/octet-stream" - name: Upload release avatar file uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/avatar.png asset_name: avatar.png - asset_content_type: 'application/octet-stream' + asset_content_type: "application/octet-stream" - name: Upload release dappnode_package.json file uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/dappnode_package.json asset_name: dappnode_package.json - asset_content_type: 'application/octet-stream' - + asset_content_type: "application/octet-stream" + - name: Upload release docker-compose.yml file uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/docker-compose.yml asset_name: docker-compose.yml - asset_content_type: 'application/octet-stream' - + asset_content_type: "application/octet-stream" + - name: Upload release content-hash file uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/content-hash asset_name: content-hash - asset_content_type: 'application/octet-stream' - + asset_content_type: "application/octet-stream" + - name: Commit changes run: | - git config --global user.email "eduadiez@gmail.com" - git config --global user.name "Eduardo" - git commit -am "Github action update" - git push + git config --global user.email "eduadiez@gmail.com" + git config --global user.name "Eduardo" + git commit -am "Github action update" + git push From aae7855ec656ecbf0e3d7bda77460cf9d704a016 Mon Sep 17 00:00:00 2001 From: Lion - dapplion <35266934+dapplion@users.noreply.github.com> Date: Thu, 17 Sep 2020 12:58:22 +0300 Subject: [PATCH 23/91] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 196c130..6c2daee 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Görli testnet DAppNode package +# Geth DAppNode package [![DAppNodeStore Available](https://img.shields.io/badge/DAppNodeStore-Available-brightgreen.svg)](http://my.dappnode/#/installer/geth.dnp.dappnode.eth) From 0eb233ff460748571b0a7047bd7b2eb0ccbfbfeb Mon Sep 17 00:00:00 2001 From: dapplion Date: Wed, 23 Sep 2020 17:32:38 +0300 Subject: [PATCH 24/91] Add main GA --- .github/workflows/main.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..6a48af9 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,31 @@ +name: "Main" +on: + pull_request: + push: + branches: + - "master" + - "v[0-9]+.[0-9]+.[0-9]+" + paths-ignore: + - "README.md" + +jobs: + build-test: + runs-on: ubuntu-16.04 + name: Build test + if: github.event_name != 'push' + steps: + - uses: actions/checkout@v2 + - run: docker-compose build + + release: + name: Release + runs-on: ubuntu-latest + if: github.event_name == 'push' + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + - name: Publish + run: npx @dappnode/dappnodesdk publish patch --dappnode_team_preset --timeout 2h + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DEVELOPER_ADDRESS: "0xf35960302a07022aba880dffaec2fdd64d5bf1c1" From a29ea19a16631cf0b98f3135a80ea2936f89f1b4 Mon Sep 17 00:00:00 2001 From: dapplion Date: Wed, 23 Sep 2020 17:29:52 +0300 Subject: [PATCH 25/91] Support multi-arch --- build/Dockerfile | 17 ++++++++++------- dappnode_package.json | 1 + docker-compose.yml | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 6fe02e4..e96bc3d 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,16 +1,19 @@ +# Build Geth in a stock Go builder container +FROM golang:1.14-alpine as builder + ARG UPSTREAM_VERSION -FROM ethereum/client-go:${UPSTREAM_VERSION} as geth -# Pull Parity into a second stage deploy alpine container +RUN apk add --no-cache make gcc musl-dev linux-headers git && \ + git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ + cd go-ethereum && make geth + + FROM alpine:edge RUN apk --no-cache add \ - libstdc++ \ - eudev-libs \ - libgcc \ - bash + libstdc++ eudev-libs libgcc bash -COPY --from=geth /usr/local/bin/geth /usr/local/bin/geth +COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin ENV SYNCMODE fast ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --nousb $EXTRA_OPTS diff --git a/dappnode_package.json b/dappnode_package.json index a80e22f..414803e 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -5,6 +5,7 @@ "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", + "architectures": ["linux/amd64", "linux/arm64"], "chain": "ethereum", "author": "DAppNode Association (https://github.com/dappnode)", "contributors": [ diff --git a/docker-compose.yml b/docker-compose.yml index 8b8af4c..2b049c4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - - UPSTREAM_VERSION + - UPSTREAM_VERSION=v1.9.21 volumes: - 'geth:/root/.ethereum' environment: From 6c0ea5af8c79d72aadfe832f8f91b1449308a2d3 Mon Sep 17 00:00:00 2001 From: Lion - dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 23 Sep 2020 17:36:14 +0300 Subject: [PATCH 26/91] Docker-compose build args as object format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Eduardo Antuña Díez <20141918+eduadiez@users.noreply.github.com> --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2b049c4..5bc55a6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - - UPSTREAM_VERSION=v1.9.21 + UPSTREAM_VERSION: v1.9.21 volumes: - 'geth:/root/.ethereum' environment: From 00fcef1522bc8cedbf6f6c860125af6ed7f7691a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Wed, 23 Sep 2020 20:41:47 +0200 Subject: [PATCH 27/91] Update auto_check.yml --- .github/workflows/auto_check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index 8d52ddb..a0d1d8c 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -3,7 +3,7 @@ name: Update DAppNode package on: schedule: # * is a special character in YAML so you have to quote this string - - cron: '*/5 * * * *' + - cron: '00 */12 * * *' jobs: dappnodepackage-update: name: Trigger the DAppNode Package update From 57881b01fdb2edf9807ecf8f979732afbbdd31be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Mon, 5 Oct 2020 10:01:26 +0200 Subject: [PATCH 28/91] Add ARM64 compatibility --- .github/workflows/auto_check.yml | 11 +- .github/workflows/dispatch_release.yml | 135 +++++-------------------- build/Dockerfile | 20 ++-- dappnode_package.json | 4 + docker-compose.yml | 2 +- 5 files changed, 46 insertions(+), 126 deletions(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index 8d52ddb..409a3e5 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -3,7 +3,8 @@ name: Update DAppNode package on: schedule: # * is a special character in YAML so you have to quote this string - - cron: '*/5 * * * *' + # - cron: '00 */4 * * *' + - cron: '* * * * *' jobs: dappnodepackage-update: name: Trigger the DAppNode Package update @@ -12,15 +13,17 @@ jobs: DISPATCH_REPO: dappnode/DAppNodePackage-geth UPSTREAM_REPO: ethereum/go-ethereum steps: + - uses: actions/checkout@v2 - name: Get the tag id: get_tag run: | - UPSTREAM_TAG=$(curl https://api.github.com/repos/$UPSTREAM_REPO/releases/latest | jq .tag_name | tr -d "\"" ) - DNP_TAG=$(curl https://api.github.com/repos/$DISPATCH_REPO/releases/tags/$UPSTREAM_TAG | jq .tag_name | tr -d "\"" ) - if [ $UPSTREAM_TAG != $DNP_TAG ];then + UPSTREAM_TAG=$(curl https://api.github.com/repos/$UPSTREAM_REPO/tags | jq .[0].name | tr -d "\"" ) + DNP_UPSTREAM=$(cat dappnode_package.json | jq .upstreamVersion | tr -d "\"" ) + if [ $UPSTREAM_TAG != $DNP_UPSTREAM ];then echo "::set-output name=trigger_update::true" fi echo ::set-output name=TAG::$UPSTREAM_TAG + - name: Send dispatch event to the DAppNode Package repository if: steps.get_tag.outputs.trigger_update == 'true' run: | diff --git a/.github/workflows/dispatch_release.yml b/.github/workflows/dispatch_release.yml index 64e3400..64acb74 100644 --- a/.github/workflows/dispatch_release.yml +++ b/.github/workflows/dispatch_release.yml @@ -1,123 +1,36 @@ -name: Remote Dispatch Action Initiator - +name: "Main" on: repository_dispatch: + pull_request: + push: + branches: + - "master" + - "v[0-9]+.[0-9]+.[0-9]+" + paths-ignore: + - "README.md" jobs: - new_version: + build-test: + runs-on: ubuntu-16.04 + name: Build test + if: github.event_name != 'push' + steps: + - name: Checkout + uses: actions/checkout@v2 + - run: docker-compose build + + release: + name: Release runs-on: ubuntu-latest + if: github.event_name == 'push' || github.event_name == 'repository_dispatch' steps: - uses: actions/checkout@v2 - - name: New remote repository event - id: dispatch-event - run: | - echo "Event '${{ github.event.action }}' with tag: '${{ github.event.client_payload.tag }}'" - echo "::set-output name=TAG::${{ github.event.client_payload.tag }}" - echo UPSTREAM_VERSION=${{ github.event.client_payload.tag }} > .env - - - name: Setup nodejs + - name: Setup node uses: actions/setup-node@v1 with: node-version: "10.x" - - - name: dappnodesdk install - run: npm install -g @dappnode/dappnodesdk - - - name: Get next DAppNodePackage release - id: next-release - run: echo "::set-output name=DNP_VERSION::$(dappnodesdk next patch -p remote)" - - - name: Check and delete if a release already exists + - name: Publish + run: npx @dappnode/dappnodesdk publish patch --dappnode_team_preset env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - RELEASE_ID=$(curl https://api.github.com/repos/${{ github.repository }}/releases/tags/${{ steps.dispatch-event.outputs.TAG }} | jq .id || echo "") - PRE_RELEASE=$(curl -s https://api.github.com/repos/dappnode/${{ github.repository }}releases/tags/${{ steps.dispatch-event.outputs.TAG }} | jq .prerelease) - if [ $PRE_RELEASE == "false" ];then - exit 1 - elif [ ! -z "$RELEASE_ID" ];then - curl -H "Authorization: token ${GITHUB_TOKEN}" -X DELETE https://api.github.com/repos/${{ github.repository }}/releases/${RELEASE_ID} - fi - - - name: Docker-Compose Build - run: | - docker-compose build - - - name: dappnodesdk publish - id: dappnodesdk-publish - run: | - sed -i "s/upstreamVersion\":.*,/upstreamVersion\": \"${{ steps.dispatch-event.outputs.TAG }}\",/g" dappnode_package.json - dappnodesdk publish patch -p remote - echo "::set-output name=CONTENT_HASH::$(cat ./build_${{ steps.next-release.outputs.DNP_VERSION }}/content-hash | sed 's/\//%2F/g')" - echo "::set-output name=PACKAGE_NAME::$(cat dappnode_package.json | jq .name | tr -d "\"")" - - - name: Create Release - id: create_release - uses: actions/create-release@latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token - with: - release_name: v${{ steps.next-release.outputs.DNP_VERSION }} - tag_name: ${{ steps.dispatch-event.outputs.TAG }} - body: | - # ${{ steps.dispatch-event.outputs.TAG }} - You can execute a transaction to publish this package from the Admin UI with Metamask by following this pre-filled [link](http://my.dappnode/#/sdk/publish/r=${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}&v=${{ steps.next-release.outputs.DNP_VERSION }}&h=${{ steps.dappnodesdk-publish.outputs.CONTENT_HASH }}) - draft: false - prerelease: true - - - name: Upload release .xz file - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}_${{ steps.next-release.outputs.DNP_VERSION }}.tar.xz - asset_name: ${{ steps.dappnodesdk-publish.outputs.PACKAGE_NAME }}_${{ steps.next-release.outputs.DNP_VERSION }}.tar.xz - asset_content_type: "application/octet-stream" - - - name: Upload release avatar file - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/avatar.png - asset_name: avatar.png - asset_content_type: "application/octet-stream" - - - name: Upload release dappnode_package.json file - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/dappnode_package.json - asset_name: dappnode_package.json - asset_content_type: "application/octet-stream" - - - name: Upload release docker-compose.yml file - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/docker-compose.yml - asset_name: docker-compose.yml - asset_content_type: "application/octet-stream" - - - name: Upload release content-hash file - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./build_${{ steps.next-release.outputs.DNP_VERSION }}/content-hash - asset_name: content-hash - asset_content_type: "application/octet-stream" - - - name: Commit changes - run: | - git config --global user.email "eduadiez@gmail.com" - git config --global user.name "Eduardo" - git commit -am "Github action update" - git push + DEVELOPER_ADDRESS: "0xf35960302a07022aba880dffaec2fdd64d5bf1c1" diff --git a/build/Dockerfile b/build/Dockerfile index 6fe02e4..5e1b655 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,16 +1,16 @@ +# Build Geth in a stock Go builder container +FROM golang:1.14-alpine as builder + ARG UPSTREAM_VERSION -FROM ethereum/client-go:${UPSTREAM_VERSION} as geth -# Pull Parity into a second stage deploy alpine container -FROM alpine:edge +RUN apk add --no-cache make gcc musl-dev linux-headers git && \ + git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ + cd go-ethereum && make geth -RUN apk --no-cache add \ - libstdc++ \ - eudev-libs \ - libgcc \ - bash +# Pull Geth into a second stage deploy alpine container +FROM alpine:latest -COPY --from=geth /usr/local/bin/geth /usr/local/bin/geth +RUN apk add --no-cache ca-certificates +COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin -ENV SYNCMODE fast ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --nousb $EXTRA_OPTS diff --git a/dappnode_package.json b/dappnode_package.json index a80e22f..02b9e0a 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -15,6 +15,10 @@ "Blockchain" ], "license": "GLP-3.0", + "architectures": [ + "linux/amd64", + "linux/arm64" + ], "links": { "endpoint": "http://geth.dappnode:8545", "homepage": "https://github.com/dappnode/DAppNodePackage-geth#readme" diff --git a/docker-compose.yml b/docker-compose.yml index 8b8af4c..7fd4164 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - - UPSTREAM_VERSION + UPSTREAM_VERSION: v1.9.22 volumes: - 'geth:/root/.ethereum' environment: From 499826a72c8f4cf3a8349c939385acaf543137c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Mon, 5 Oct 2020 10:02:55 +0200 Subject: [PATCH 29/91] change version --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 02b9e0a..4150b55 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.9", - "upstreamVersion": "v1.9.15", + "upstreamVersion": "v1.9.21", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", diff --git a/docker-compose.yml b/docker-compose.yml index 7fd4164..5bc55a6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.9.22 + UPSTREAM_VERSION: v1.9.21 volumes: - 'geth:/root/.ethereum' environment: From ae0ec7d60f91eb712388afc758ad4b9dea290ef3 Mon Sep 17 00:00:00 2001 From: Lion - dapplion <35266934+dapplion@users.noreply.github.com> Date: Thu, 17 Sep 2020 12:58:22 +0300 Subject: [PATCH 30/91] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 196c130..6c2daee 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Görli testnet DAppNode package +# Geth DAppNode package [![DAppNodeStore Available](https://img.shields.io/badge/DAppNodeStore-Available-brightgreen.svg)](http://my.dappnode/#/installer/geth.dnp.dappnode.eth) From a4a44218e115447e1fe0bf8a0877f6e8ddc18a2d Mon Sep 17 00:00:00 2001 From: dapplion Date: Wed, 23 Sep 2020 17:32:38 +0300 Subject: [PATCH 31/91] Add main GA --- .github/workflows/main.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..6a48af9 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,31 @@ +name: "Main" +on: + pull_request: + push: + branches: + - "master" + - "v[0-9]+.[0-9]+.[0-9]+" + paths-ignore: + - "README.md" + +jobs: + build-test: + runs-on: ubuntu-16.04 + name: Build test + if: github.event_name != 'push' + steps: + - uses: actions/checkout@v2 + - run: docker-compose build + + release: + name: Release + runs-on: ubuntu-latest + if: github.event_name == 'push' + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + - name: Publish + run: npx @dappnode/dappnodesdk publish patch --dappnode_team_preset --timeout 2h + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DEVELOPER_ADDRESS: "0xf35960302a07022aba880dffaec2fdd64d5bf1c1" From 237056849f7daad7bd41ceb0e7c53f1a7021b7de Mon Sep 17 00:00:00 2001 From: dapplion Date: Wed, 23 Sep 2020 17:29:52 +0300 Subject: [PATCH 32/91] Support multi-arch --- build/Dockerfile | 8 ++++++++ dappnode_package.json | 1 + 2 files changed, 9 insertions(+) diff --git a/build/Dockerfile b/build/Dockerfile index 5e1b655..ee0ecc4 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -7,6 +7,14 @@ RUN apk add --no-cache make gcc musl-dev linux-headers git && \ git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ cd go-ethereum && make geth + +FROM alpine:edge +RUN apk add --no-cache make gcc musl-dev linux-headers git && \ + git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ + cd go-ethereum && make geth + +RUN apk --no-cache add \ + libstdc++ eudev-libs libgcc bash # Pull Geth into a second stage deploy alpine container FROM alpine:latest diff --git a/dappnode_package.json b/dappnode_package.json index 4150b55..081b351 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -5,6 +5,7 @@ "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", + "architectures": ["linux/amd64", "linux/arm64"], "chain": "ethereum", "author": "DAppNode Association (https://github.com/dappnode)", "contributors": [ From 315b835857b72e7d9edf2f7b41aec0ee1c6065d8 Mon Sep 17 00:00:00 2001 From: next-branch Date: Wed, 23 Sep 2020 15:19:50 +0000 Subject: [PATCH 33/91] Bump to new version: 0.1.11 --- dappnode_package.json | 5 ++++- docker-compose.yml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 081b351..f444d49 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -5,7 +5,10 @@ "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", - "architectures": ["linux/amd64", "linux/arm64"], + "architectures": [ + "linux/amd64", + "linux/arm64" + ], "chain": "ethereum", "author": "DAppNode Association (https://github.com/dappnode)", "contributors": [ diff --git a/docker-compose.yml b/docker-compose.yml index 5bc55a6..3a5ed43 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.4' services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.9' + image: 'geth.dnp.dappnode.eth:0.1.11' build: context: ./build args: From 26eb1b464dc9bcc7bf0045c21370c93203bfb699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Mon, 5 Oct 2020 10:33:43 +0200 Subject: [PATCH 34/91] Improve autorelease --- .github/workflows/auto_check.yml | 1 - .github/workflows/dispatch_release.yml | 36 -------------------------- build/Dockerfile | 9 ------- dappnode_package.json | 4 --- 4 files changed, 50 deletions(-) delete mode 100644 .github/workflows/dispatch_release.yml diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index a7f8096..409a3e5 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -5,7 +5,6 @@ on: # * is a special character in YAML so you have to quote this string # - cron: '00 */4 * * *' - cron: '* * * * *' - - cron: '00 */12 * * *' jobs: dappnodepackage-update: name: Trigger the DAppNode Package update diff --git a/.github/workflows/dispatch_release.yml b/.github/workflows/dispatch_release.yml deleted file mode 100644 index 64acb74..0000000 --- a/.github/workflows/dispatch_release.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "Main" -on: - repository_dispatch: - pull_request: - push: - branches: - - "master" - - "v[0-9]+.[0-9]+.[0-9]+" - paths-ignore: - - "README.md" - -jobs: - build-test: - runs-on: ubuntu-16.04 - name: Build test - if: github.event_name != 'push' - steps: - - name: Checkout - uses: actions/checkout@v2 - - run: docker-compose build - - release: - name: Release - runs-on: ubuntu-latest - if: github.event_name == 'push' || github.event_name == 'repository_dispatch' - steps: - - uses: actions/checkout@v2 - - name: Setup node - uses: actions/setup-node@v1 - with: - node-version: "10.x" - - name: Publish - run: npx @dappnode/dappnodesdk publish patch --dappnode_team_preset - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEVELOPER_ADDRESS: "0xf35960302a07022aba880dffaec2fdd64d5bf1c1" diff --git a/build/Dockerfile b/build/Dockerfile index 4c58725..84e35bd 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -6,15 +6,6 @@ ARG UPSTREAM_VERSION RUN apk add --no-cache make gcc musl-dev linux-headers git && \ git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ cd go-ethereum && make geth - - -FROM alpine:edge -RUN apk add --no-cache make gcc musl-dev linux-headers git && \ - git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ - cd go-ethereum && make geth - -RUN apk --no-cache add \ - libstdc++ eudev-libs libgcc bash # Pull Geth into a second stage deploy alpine container FROM alpine:latest diff --git a/dappnode_package.json b/dappnode_package.json index f444d49..d5e96dd 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -19,10 +19,6 @@ "Blockchain" ], "license": "GLP-3.0", - "architectures": [ - "linux/amd64", - "linux/arm64" - ], "links": { "endpoint": "http://geth.dappnode:8545", "homepage": "https://github.com/dappnode/DAppNodePackage-geth#readme" From 3257f24a6e47c29cef6e0ce1bd89497ac6bd268f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Mon, 5 Oct 2020 10:50:38 +0200 Subject: [PATCH 35/91] fix GHA --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6a48af9..876b899 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,7 +12,7 @@ jobs: build-test: runs-on: ubuntu-16.04 name: Build test - if: github.event_name != 'push' + if: github.event_name == 'push' || github.event_name == 'repository_dispatch' steps: - uses: actions/checkout@v2 - run: docker-compose build From bb79cf9cece6a72f04d8642f7b81594f9c4c7c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Mon, 5 Oct 2020 10:56:43 +0200 Subject: [PATCH 36/91] Add repository_dispatch --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 876b899..e89d6e6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,5 +1,6 @@ name: "Main" on: + repository_dispatch: pull_request: push: branches: From c7f91cbd0aaa62ba1f3d5c6be059a2dd26fed87e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Mon, 5 Oct 2020 11:28:59 +0200 Subject: [PATCH 37/91] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e89d6e6..3f2d211 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,7 +21,7 @@ jobs: release: name: Release runs-on: ubuntu-latest - if: github.event_name == 'push' + if: github.event_name == 'push' || github.event_name == 'repository_dispatch' steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 From d381217ee902fe5c392ee4b01933a7fb09a3d5de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Mon, 5 Oct 2020 11:52:58 +0200 Subject: [PATCH 38/91] Update auto_check.yml --- .github/workflows/auto_check.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index 409a3e5..a974388 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -3,8 +3,7 @@ name: Update DAppNode package on: schedule: # * is a special character in YAML so you have to quote this string - # - cron: '00 */4 * * *' - - cron: '* * * * *' + - cron: '00 */4 * * *' jobs: dappnodepackage-update: name: Trigger the DAppNode Package update From 3639988ebd02ac6c084c4347db9c3eab2170c79c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Mon, 5 Oct 2020 12:39:58 +0200 Subject: [PATCH 39/91] Update auto_check.yml --- .github/workflows/auto_check.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index a974388..dacbebc 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -22,7 +22,15 @@ jobs: echo "::set-output name=trigger_update::true" fi echo ::set-output name=TAG::$UPSTREAM_TAG - + - name: update UPSTREAM_VERSION and commit changes + if: steps.get_tag.outputs.trigger_update == 'true' + run: | + sed -i "s/ UPSTREAM_VERSION: .*/ UPSTREAM_VERSION: ${{ steps.get_tag.outputs.TAG }}/g" docker-compose.yml + sed -i "s/ \"upstreamVersion\": \".*\",/ \"upstreamVersion\": \"${{ steps.get_tag.outputs.TAG }}\",/g" dappnode_package.json + git config --global user.email "eduadiez@gmail.com" + git config --global user.name "Eduardo" + git commit -am "Github action bumped version to ${{ steps.get_tag.outputs.TAG }}" + git push - name: Send dispatch event to the DAppNode Package repository if: steps.get_tag.outputs.trigger_update == 'true' run: | From b179fb3ab08f07d7583fe21cb3e6d2b3baf812cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Mon, 5 Oct 2020 13:00:52 +0200 Subject: [PATCH 40/91] Update dappnode_package.json --- dappnode_package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index d5e96dd..912ef51 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.9", - "upstreamVersion": "v1.9.21", + "upstreamVersion": "v1.9.22", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", @@ -30,4 +30,4 @@ "bugs": { "url": "https://github.com/dappnode/DAppNodePackage-geth/issues" } -} \ No newline at end of file +} From 62e3e422dd0f5d1531038b01c66f4da444706686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Mon, 5 Oct 2020 13:01:09 +0200 Subject: [PATCH 41/91] Update docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3a5ed43..1ba1667 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.9.21 + UPSTREAM_VERSION: v1.9.22 volumes: - 'geth:/root/.ethereum' environment: From 5dea9eb29ab4bf41d82de0685f21307a0a43daab Mon Sep 17 00:00:00 2001 From: Eduardo Date: Thu, 15 Oct 2020 12:04:57 +0000 Subject: [PATCH 42/91] Github action bumped version to v1.9.23 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 912ef51..6f2c9e4 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.9", - "upstreamVersion": "v1.9.22", + "upstreamVersion": "v1.9.23", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", diff --git a/docker-compose.yml b/docker-compose.yml index 1ba1667..ba9f387 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.9.22 + UPSTREAM_VERSION: v1.9.23 volumes: - 'geth:/root/.ethereum' environment: From 12866c74566074d89e2b73ba0dc753ac752ad614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Thu, 12 Nov 2020 22:48:25 +0100 Subject: [PATCH 43/91] Bump golang version to 1.15.5 --- build/Dockerfile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 84e35bd..977ecd1 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,10 +1,15 @@ # Build Geth in a stock Go builder container -FROM golang:1.14-alpine as builder +FROM golang:1.15-alpine as builder ARG UPSTREAM_VERSION -RUN apk add --no-cache make gcc musl-dev linux-headers git && \ - git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ +RUN apk add --no-cache make gcc musl-dev linux-headers git +ADD https://golang.org/dl/go1.15.5.src.tar.gz /tmp/go.tar.gz +RUN (cd /tmp && tar -xf go.tar.gz) +RUN (cd /tmp/go/src && ./make.bash) +ENV PATH="/tmp/go/bin:${PATH}" + +RUN git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ cd go-ethereum && make geth # Pull Geth into a second stage deploy alpine container From c75e5c1937398a683cc00be26201d1c36fe98208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Thu, 12 Nov 2020 22:53:43 +0100 Subject: [PATCH 44/91] Bumo version --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index ba9f387..f9ab744 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.9.23 + UPSTREAM_VERSION: v1.9.24 volumes: - 'geth:/root/.ethereum' environment: From 58d756e94b4511d3dbbb61683e534b5742955229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Thu, 12 Nov 2020 22:54:37 +0100 Subject: [PATCH 45/91] Add bash --- build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 977ecd1..8de01cf 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -3,7 +3,7 @@ FROM golang:1.15-alpine as builder ARG UPSTREAM_VERSION -RUN apk add --no-cache make gcc musl-dev linux-headers git +RUN apk add --no-cache make gcc musl-dev linux-headers git bash ADD https://golang.org/dl/go1.15.5.src.tar.gz /tmp/go.tar.gz RUN (cd /tmp && tar -xf go.tar.gz) RUN (cd /tmp/go/src && ./make.bash) From e3a8d037bfedbd0d14c434bc9c41dfff79e82c6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Fri, 13 Nov 2020 08:59:33 +0100 Subject: [PATCH 46/91] update deprecated flags --- build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 8de01cf..4317efd 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -19,4 +19,4 @@ RUN apk add --no-cache ca-certificates COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin -ENTRYPOINT geth --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcvhosts "*" --ws --wsorigins "*" --wsaddr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --nousb $EXTRA_OPTS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --nousb $EXTRA_OPTS From 582375931d5e991c551be1a71f94fcb4048b7b32 Mon Sep 17 00:00:00 2001 From: Lion - dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 18 Nov 2020 18:58:39 +0000 Subject: [PATCH 47/91] Add dockerTimeout What would be a sensible value for the max timeout? It should leave enough time for Geth to store pending states in memory. **MUST** make sure that signals propagate correctly beforehand --- dappnode_package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/dappnode_package.json b/dappnode_package.json index 6f2c9e4..7941477 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -10,6 +10,7 @@ "linux/arm64" ], "chain": "ethereum", + "dockerTimeout": "5min", "author": "DAppNode Association (https://github.com/dappnode)", "contributors": [ "Mariano Conti (nanexcool) (hhttps://github.com/nanexcool)", From 72d55c8809e2186975b4b0c78cbbb8c914c8c2ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Wed, 25 Nov 2020 13:29:58 +0100 Subject: [PATCH 48/91] Minor fixes --- build/Dockerfile | 6 +----- docker-compose.yml | 10 +++++----- releases.json | 6 +++--- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 4317efd..3c8773f 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -4,10 +4,6 @@ FROM golang:1.15-alpine as builder ARG UPSTREAM_VERSION RUN apk add --no-cache make gcc musl-dev linux-headers git bash -ADD https://golang.org/dl/go1.15.5.src.tar.gz /tmp/go.tar.gz -RUN (cd /tmp && tar -xf go.tar.gz) -RUN (cd /tmp/go/src && ./make.bash) -ENV PATH="/tmp/go/bin:${PATH}" RUN git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ cd go-ethereum && make geth @@ -19,4 +15,4 @@ RUN apk add --no-cache ca-certificates COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --nousb $EXTRA_OPTS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} $EXTRA_OPTS diff --git a/docker-compose.yml b/docker-compose.yml index f9ab744..da9aee7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,18 +1,18 @@ -version: '3.4' +version: "3.4" services: geth.dnp.dappnode.eth: - image: 'geth.dnp.dappnode.eth:0.1.11' + image: "geth.dnp.dappnode.eth:0.1.9" build: context: ./build args: UPSTREAM_VERSION: v1.9.24 volumes: - - 'geth:/root/.ethereum' + - "geth:/root/.ethereum" environment: - - 'EXTRA_OPTS=--rpcapi eth,net,web3,txpool' + - "EXTRA_OPTS=--rpcapi eth,net,web3,txpool --nousb" - SYNCMODE ports: - - '30303' + - "30303" - 30303/udp - 30304/udp restart: always diff --git a/releases.json b/releases.json index 48986a9..3c6bba0 100644 --- a/releases.json +++ b/releases.json @@ -55,10 +55,10 @@ "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.8&h=%2Fipfs%2FQmUf1uzqZdXyKt4YB96nr1F9GtxUWnPu8hSs7WXJnoc5Cj" }, "0.1.9": { - "hash": "/ipfs/QmbpQoSXzPcBwm1LUeVMPosgsVUf772pN32xjDyxWnPEHT", + "hash": "/ipfs/QmPF4HJoNmJkoFBedv2CfVQGdPECYTmnZU3kCTodN4vkqg", "uploadedTo": { - "remote": "Fri, 07 Aug 2020 13:19:24 GMT" + "dappnode": "Wed, 25 Nov 2020 09:18:56 GMT" }, "link": "http://my.dappnode/#/sdk/publish/r=geth.dnp.dappnode.eth&v=0.1.9&h=%2Fipfs%2FQmbpQoSXzPcBwm1LUeVMPosgsVUf772pN32xjDyxWnPEHT" } -} \ No newline at end of file +} From c1950193c9fc84a604dd7bf2d468f3904ecc2a72 Mon Sep 17 00:00:00 2001 From: dapplion Date: Wed, 25 Nov 2020 13:47:34 +0000 Subject: [PATCH 49/91] Fix versions --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 7941477..33ff18d 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,6 +1,6 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.9", + "version": "0.1.12", "upstreamVersion": "v1.9.23", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", diff --git a/docker-compose.yml b/docker-compose.yml index da9aee7..74702f6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.4" services: geth.dnp.dappnode.eth: - image: "geth.dnp.dappnode.eth:0.1.9" + image: "geth.dnp.dappnode.eth:0.1.12" build: context: ./build args: From a7b132a52ac1bae4ee1a8574362c040873a2af6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Wed, 16 Dec 2020 08:38:44 +0100 Subject: [PATCH 50/91] Increase timeout --- dappnode_package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dappnode_package.json b/dappnode_package.json index 7941477..068b7a5 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -10,7 +10,7 @@ "linux/arm64" ], "chain": "ethereum", - "dockerTimeout": "5min", + "dockerTimeout": "20min", "author": "DAppNode Association (https://github.com/dappnode)", "contributors": [ "Mariano Conti (nanexcool) (hhttps://github.com/nanexcool)", From cec3afda30b518b6d1a071a043b1b00b44f44954 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Wed, 16 Dec 2020 08:41:20 +0100 Subject: [PATCH 51/91] Bump version and add metrics --- build/Dockerfile | 2 +- docker-compose.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 3c8773f..033866d 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -15,4 +15,4 @@ RUN apk add --no-cache ca-certificates COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} $EXTRA_OPTS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTS diff --git a/docker-compose.yml b/docker-compose.yml index da9aee7..5ff2e99 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.9.24 + UPSTREAM_VERSION: v1.9.25 volumes: - "geth:/root/.ethereum" environment: @@ -15,6 +15,6 @@ services: - "30303" - 30303/udp - 30304/udp - restart: always + restart: unless-stopped volumes: geth: {} From d1190c15e3064daa7e280cb040ec3cba3be7067f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Fri, 22 Jan 2021 10:30:51 +0100 Subject: [PATCH 52/91] Update auto_check.yml --- .github/workflows/auto_check.yml | 46 ++++++++------------------------ 1 file changed, 11 insertions(+), 35 deletions(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index dacbebc..616f040 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -1,41 +1,17 @@ -name: Update DAppNode package +name: Bump upstream version on: schedule: - # * is a special character in YAML so you have to quote this string - - cron: '00 */4 * * *' + - cron: "00 */4 * * *" + push: + branches: + - "master" + workflow_dispatch: jobs: - dappnodepackage-update: - name: Trigger the DAppNode Package update + bump-upstream: runs-on: ubuntu-latest - env: - DISPATCH_REPO: dappnode/DAppNodePackage-geth - UPSTREAM_REPO: ethereum/go-ethereum steps: - - uses: actions/checkout@v2 - - name: Get the tag - id: get_tag - run: | - UPSTREAM_TAG=$(curl https://api.github.com/repos/$UPSTREAM_REPO/tags | jq .[0].name | tr -d "\"" ) - DNP_UPSTREAM=$(cat dappnode_package.json | jq .upstreamVersion | tr -d "\"" ) - if [ $UPSTREAM_TAG != $DNP_UPSTREAM ];then - echo "::set-output name=trigger_update::true" - fi - echo ::set-output name=TAG::$UPSTREAM_TAG - - name: update UPSTREAM_VERSION and commit changes - if: steps.get_tag.outputs.trigger_update == 'true' - run: | - sed -i "s/ UPSTREAM_VERSION: .*/ UPSTREAM_VERSION: ${{ steps.get_tag.outputs.TAG }}/g" docker-compose.yml - sed -i "s/ \"upstreamVersion\": \".*\",/ \"upstreamVersion\": \"${{ steps.get_tag.outputs.TAG }}\",/g" dappnode_package.json - git config --global user.email "eduadiez@gmail.com" - git config --global user.name "Eduardo" - git commit -am "Github action bumped version to ${{ steps.get_tag.outputs.TAG }}" - git push - - name: Send dispatch event to the DAppNode Package repository - if: steps.get_tag.outputs.trigger_update == 'true' - run: | - curl -v -X POST -u "${{ secrets.PAT_GITHUB }}" \ - -H "Accept: application/vnd.github.everest-preview+json" \ - -H "Content-Type: application/json" \ - --data '{"event_type":"new_release", "client_payload": { "tag":"${{ steps.get_tag.outputs.TAG }}"}}' \ - https://api.github.com/repos/$DISPATCH_REPO/dispatches + - uses: actions/checkout@v2 + - uses: dappnode/dnp-bump-upstream-action@v1 + with: + github_token: ${{ secrets.PERSONAL_TOKEN }} From f7be8dc09e1097d7828ba3128d68d20359d44c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Fri, 22 Jan 2021 10:35:02 +0100 Subject: [PATCH 53/91] Update dappnode_package.json Add ethereum/go-ethereum --- dappnode_package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/dappnode_package.json b/dappnode_package.json index f3645d3..daea3af 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -2,6 +2,7 @@ "name": "geth.dnp.dappnode.eth", "version": "0.1.12", "upstreamVersion": "v1.9.23", + "upstreamRepo": "ethereum/go-ethereum", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", From 5a3fc66cde14de76b96d60b62cbbb920fc147320 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Sat, 20 Feb 2021 18:17:08 +0100 Subject: [PATCH 54/91] Update auto-check action --- .github/workflows/auto_check.yml | 12 +++++++----- dappnode_package.json | 10 +++------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml index 616f040..40f3473 100644 --- a/.github/workflows/auto_check.yml +++ b/.github/workflows/auto_check.yml @@ -6,12 +6,14 @@ on: push: branches: - "master" - workflow_dispatch: + jobs: - bump-upstream: + build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: dappnode/dnp-bump-upstream-action@v1 - with: - github_token: ${{ secrets.PERSONAL_TOKEN }} + - run: npx @dappnode/dappnodesdk github-action bump-upstream + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PINATA_API_KEY: ${{ secrets.PINATA_API_KEY }} + PINATA_SECRET_API_KEY: ${{ secrets.PINATA_SECRET_API_KEY }} diff --git a/dappnode_package.json b/dappnode_package.json index daea3af..f07ae78 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -3,13 +3,11 @@ "version": "0.1.12", "upstreamVersion": "v1.9.23", "upstreamRepo": "ethereum/go-ethereum", + "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", "type": "library", - "architectures": [ - "linux/amd64", - "linux/arm64" - ], + "architectures": ["linux/amd64", "linux/arm64"], "chain": "ethereum", "dockerTimeout": "20min", "author": "DAppNode Association (https://github.com/dappnode)", @@ -17,9 +15,7 @@ "Mariano Conti (nanexcool) (hhttps://github.com/nanexcool)", "Eduardo Antuña (https://github.com/eduadiez)" ], - "categories": [ - "Blockchain" - ], + "categories": ["Blockchain"], "license": "GLP-3.0", "links": { "endpoint": "http://geth.dappnode:8545", From 7059108ed7f747250dc9a0b75a75c289c5d2ca3f Mon Sep 17 00:00:00 2001 From: eduadiez Date: Mon, 8 Mar 2021 12:32:31 +0000 Subject: [PATCH 55/91] bump ethereum/go-ethereum to v1.10.1 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index f07ae78..f8cf222 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.12", - "upstreamVersion": "v1.9.23", + "upstreamVersion": "v1.10.1", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 461b55e..0e3efce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.9.25 + UPSTREAM_VERSION: v1.10.1 volumes: - "geth:/root/.ethereum" environment: From 72d6453e67b71b29b65df9df9173f6ba962dcc44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= <20141918+eduadiez@users.noreply.github.com> Date: Wed, 10 Mar 2021 18:38:59 +0100 Subject: [PATCH 56/91] Update docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0e3efce..be85265 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: volumes: - "geth:/root/.ethereum" environment: - - "EXTRA_OPTS=--rpcapi eth,net,web3,txpool --nousb" + - "EXTRA_OPTS=--http.api eth,net,web3,txpool" - SYNCMODE ports: - "30303" From 7fefa1d1087ea7ef5f803e9dbcb684c8f9c228d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Antu=C3=B1a=20D=C3=ADez?= Date: Thu, 11 Mar 2021 16:16:51 +0100 Subject: [PATCH 57/91] fix deprecated parameter --- build/Dockerfile | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 033866d..2a5263b 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -15,4 +15,4 @@ RUN apk add --no-cache ca-certificates COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS diff --git a/docker-compose.yml b/docker-compose.yml index be85265..9a0a415 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: volumes: - "geth:/root/.ethereum" environment: - - "EXTRA_OPTS=--http.api eth,net,web3,txpool" + - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool" - SYNCMODE ports: - "30303" From ef20b8c2750f1ed12c09b4990e3c644af54488ae Mon Sep 17 00:00:00 2001 From: eduadiez Date: Thu, 8 Apr 2021 12:34:09 +0000 Subject: [PATCH 58/91] bump ethereum/go-ethereum to v1.10.2 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index f8cf222..b950569 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.12", - "upstreamVersion": "v1.10.1", + "upstreamVersion": "v1.10.2", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 9a0a415..15c753a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.1 + UPSTREAM_VERSION: v1.10.2 volumes: - "geth:/root/.ethereum" environment: From cfe641f1f34a967ab827d937fde54be9318a3263 Mon Sep 17 00:00:00 2001 From: eduadiez Date: Wed, 5 May 2021 12:31:31 +0000 Subject: [PATCH 59/91] bump ethereum/go-ethereum to v1.10.3 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index b950569..5b63323 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.12", - "upstreamVersion": "v1.10.2", + "upstreamVersion": "v1.10.3", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 15c753a..e22c846 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.2 + UPSTREAM_VERSION: v1.10.3 volumes: - "geth:/root/.ethereum" environment: From 08ed235f99b9c95f22352a669a44c82ee0e2864d Mon Sep 17 00:00:00 2001 From: eduadiez Date: Thu, 17 Jun 2021 12:30:11 +0000 Subject: [PATCH 60/91] bump ethereum/go-ethereum to v1.10.4 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 5b63323..ee976be 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.12", - "upstreamVersion": "v1.10.3", + "upstreamVersion": "v1.10.4", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index e22c846..b72cb0e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.3 + UPSTREAM_VERSION: v1.10.4 volumes: - "geth:/root/.ethereum" environment: From 85688f087d615d2d4a05f197100e57a71deafb57 Mon Sep 17 00:00:00 2001 From: pablo Date: Fri, 25 Jun 2021 12:59:51 +0200 Subject: [PATCH 61/91] updated dappnode versions --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index ee976be..1912ecd 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,6 +1,6 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.12", + "version": "0.1.17", "upstreamVersion": "v1.10.4", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", diff --git a/docker-compose.yml b/docker-compose.yml index b72cb0e..4270e80 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.4" services: geth.dnp.dappnode.eth: - image: "geth.dnp.dappnode.eth:0.1.12" + image: "geth.dnp.dappnode.eth:0.1.17" build: context: ./build args: From 6cf17b056f71ddf991311aa923436f47f64a296d Mon Sep 17 00:00:00 2001 From: eduadiez Date: Wed, 14 Jul 2021 08:21:35 +0000 Subject: [PATCH 62/91] bump ethereum/go-ethereum to v1.10.5 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 1912ecd..be6837f 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.4", + "upstreamVersion": "v1.10.5", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 4270e80..06bc3ee 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.4 + UPSTREAM_VERSION: v1.10.5 volumes: - "geth:/root/.ethereum" environment: From 9550b3c64ee3db906e96eb000cb293ea64bddd8f Mon Sep 17 00:00:00 2001 From: eduadiez Date: Thu, 22 Jul 2021 16:32:38 +0000 Subject: [PATCH 63/91] bump ethereum/go-ethereum to v1.10.6 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index be6837f..06a7821 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.5", + "upstreamVersion": "v1.10.6", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 06bc3ee..4d3e019 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.5 + UPSTREAM_VERSION: v1.10.6 volumes: - "geth:/root/.ethereum" environment: From d1bfa079183fbdefb16c65e17c0efa3e211eedbb Mon Sep 17 00:00:00 2001 From: eduadiez Date: Thu, 12 Aug 2021 08:20:37 +0000 Subject: [PATCH 64/91] bump ethereum/go-ethereum to v1.10.7 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 06a7821..81f8683 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.6", + "upstreamVersion": "v1.10.7", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 4d3e019..dd7501c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.6 + UPSTREAM_VERSION: v1.10.7 volumes: - "geth:/root/.ethereum" environment: From 7474744009c64f89a791d5561124045802d5a46f Mon Sep 17 00:00:00 2001 From: eduadiez Date: Tue, 24 Aug 2021 08:22:34 +0000 Subject: [PATCH 65/91] bump ethereum/go-ethereum to v1.10.8 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 81f8683..b3ac68f 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.7", + "upstreamVersion": "v1.10.8", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index dd7501c..ae659e2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.7 + UPSTREAM_VERSION: v1.10.8 volumes: - "geth:/root/.ethereum" environment: From 7395fe545421c5320336edb33f743bbac19791ad Mon Sep 17 00:00:00 2001 From: eduadiez Date: Tue, 24 Aug 2021 13:44:47 +0200 Subject: [PATCH 66/91] Refactor Dockerfile --- build/Dockerfile | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 2a5263b..2782b2d 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,18 +1,3 @@ -# Build Geth in a stock Go builder container -FROM golang:1.15-alpine as builder - -ARG UPSTREAM_VERSION - -RUN apk add --no-cache make gcc musl-dev linux-headers git bash - -RUN git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ - cd go-ethereum && make geth - -# Pull Geth into a second stage deploy alpine container -FROM alpine:latest - -RUN apk add --no-cache ca-certificates - -COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin +FROM ethereum/client-go:v1.10.8 ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS From 8a2bbf8a08dfc156cd47ca072dcdb03ad07b622e Mon Sep 17 00:00:00 2001 From: eduadiez Date: Tue, 24 Aug 2021 15:32:52 +0200 Subject: [PATCH 67/91] add UPSTREAM_VERSION --- build/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 2782b2d..0e3958e 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,3 +1,5 @@ -FROM ethereum/client-go:v1.10.8 +ARG UPSTREAM_VERSION + +FROM ethereum/client-go:${UPSTREAM_VERSION} ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS From 44e0bbb119178daa67e9361b14be9c8a773a7b34 Mon Sep 17 00:00:00 2001 From: Luka Gulin Date: Mon, 4 Oct 2021 17:04:07 +0200 Subject: [PATCH 68/91] bump ethereum/go-ethereum to v1.10.9 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index b3ac68f..8831ebc 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.8", + "upstreamVersion": "v1.10.9", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index ae659e2..da11b23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.8 + UPSTREAM_VERSION: v1.10.9 volumes: - "geth:/root/.ethereum" environment: From 027446ac95f12fceccb4830d3411b44d36e7ff32 Mon Sep 17 00:00:00 2001 From: eduadiez Date: Fri, 15 Oct 2021 12:31:19 +0000 Subject: [PATCH 69/91] bump ethereum/go-ethereum to v1.10.10 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 8831ebc..7f419d2 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.9", + "upstreamVersion": "v1.10.10", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index da11b23..42fe2b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.9 + UPSTREAM_VERSION: v1.10.10 volumes: - "geth:/root/.ethereum" environment: From d1bbbe8cac68819e501bb80edcfdd93aeb91796c Mon Sep 17 00:00:00 2001 From: eduadiez Date: Wed, 20 Oct 2021 12:31:47 +0000 Subject: [PATCH 70/91] bump ethereum/go-ethereum to v1.10.11 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 7f419d2..ded6bc3 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.10", + "upstreamVersion": "v1.10.11", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 42fe2b1..067a67f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.10 + UPSTREAM_VERSION: v1.10.11 volumes: - "geth:/root/.ethereum" environment: From b04efb3ae6e68500453bd08f73b822d1952b2e7d Mon Sep 17 00:00:00 2001 From: eduadiez Date: Mon, 8 Nov 2021 16:36:34 +0000 Subject: [PATCH 71/91] bump ethereum/go-ethereum to v1.10.12 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index ded6bc3..9908d6c 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.11", + "upstreamVersion": "v1.10.12", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 067a67f..b00cbe4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.11 + UPSTREAM_VERSION: v1.10.12 volumes: - "geth:/root/.ethereum" environment: From b0535a189657309faed1c801c7dc48d64d8a0f65 Mon Sep 17 00:00:00 2001 From: eduadiez Date: Wed, 24 Nov 2021 12:32:27 +0000 Subject: [PATCH 72/91] bump ethereum/go-ethereum to v1.10.13 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 9908d6c..f684cc3 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.12", + "upstreamVersion": "v1.10.13", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index b00cbe4..39b15b9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.12 + UPSTREAM_VERSION: v1.10.13 volumes: - "geth:/root/.ethereum" environment: From 02c6ee15817ddfc758e4f3c6d6cd1eb00ae43577 Mon Sep 17 00:00:00 2001 From: Alex Peterson Date: Wed, 8 Dec 2021 18:02:18 -0600 Subject: [PATCH 73/91] fix typo in license type initially said GLP-3.0 not GPL-3.0 as is correct for GNU Public License 3 --- dappnode_package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dappnode_package.json b/dappnode_package.json index f684cc3..02f62cd 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -16,7 +16,7 @@ "Eduardo Antuña (https://github.com/eduadiez)" ], "categories": ["Blockchain"], - "license": "GLP-3.0", + "license": "GPL-3.0", "links": { "endpoint": "http://geth.dappnode:8545", "homepage": "https://github.com/dappnode/DAppNodePackage-geth#readme" From 654372fafb9de3d6074dfbb7da91894fd24ec5ad Mon Sep 17 00:00:00 2001 From: eduadiez Date: Thu, 23 Dec 2021 12:34:04 +0000 Subject: [PATCH 74/91] bump ethereum/go-ethereum to v1.10.14 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index f684cc3..50517b1 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.13", + "upstreamVersion": "v1.10.14", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 39b15b9..57bc190 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.13 + UPSTREAM_VERSION: v1.10.14 volumes: - "geth:/root/.ethereum" environment: From 5b8754875ce35efc69a3abf14d1f8095c5eca90a Mon Sep 17 00:00:00 2001 From: Alex Peterson Date: Thu, 23 Dec 2021 17:30:32 -0600 Subject: [PATCH 75/91] Change default syncmode to snap old default syncmode (Fast Bloom) has been deprecated in upstream v1.10.14 and needs to be changed for the new version to work. --- build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 0e3958e..fced2c0 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -2,4 +2,4 @@ ARG UPSTREAM_VERSION FROM ethereum/client-go:${UPSTREAM_VERSION} -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-snap} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS From f934642d84debb446a11f36f6b521c07baaff420 Mon Sep 17 00:00:00 2001 From: eduadiez Date: Wed, 5 Jan 2022 16:33:41 +0000 Subject: [PATCH 76/91] bump ethereum/go-ethereum to v1.10.15 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 2986333..919a7ea 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.14", + "upstreamVersion": "v1.10.15", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 57bc190..d9c45c9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.14 + UPSTREAM_VERSION: v1.10.15 volumes: - "geth:/root/.ethereum" environment: From 353cc610bb959e32d17d8e7f9e32c9b222088401 Mon Sep 17 00:00:00 2001 From: Tropicar Date: Wed, 5 Jan 2022 18:15:24 +0100 Subject: [PATCH 77/91] FIx ubuntu machine on build test --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3f2d211..c604e9f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,7 @@ on: jobs: build-test: - runs-on: ubuntu-16.04 + runs-on: ubuntu-latest name: Build test if: github.event_name == 'push' || github.event_name == 'repository_dispatch' steps: From dcb47a7b5b035935c1762afaf113ed8286e903f4 Mon Sep 17 00:00:00 2001 From: MysticRyuujin Date: Mon, 14 Feb 2022 20:51:28 -0600 Subject: [PATCH 78/91] Geth Package Suggestions --- build/Dockerfile | 2 +- dappnode_package.json | 8 +++++--- docker-compose.yml | 5 ++--- geth-avatar.png | Bin 4716 -> 60847 bytes 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index fced2c0..ddb894f 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -2,4 +2,4 @@ ARG UPSTREAM_VERSION FROM ethereum/client-go:${UPSTREAM_VERSION} -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-snap} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.port 8545 --ws.addr 0.0.0.0 --ws.origins "*" --graphql --graphql.corsdomain "*" --graphql.vhosts "*" --syncmode ${SYNCMODE:-snap} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS diff --git a/dappnode_package.json b/dappnode_package.json index 919a7ea..c03176d 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,21 +1,23 @@ { "name": "geth.dnp.dappnode.eth", - "version": "0.1.17", + "version": "0.1.18", "upstreamVersion": "v1.10.15", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", "description": "Ethereum is a global, open-source platform for decentralized applications where you can write code that controls digital value, runs exactly as programmed, and is accessible anywhere in the world.", - "type": "library", + "type": "service", "architectures": ["linux/amd64", "linux/arm64"], "chain": "ethereum", "dockerTimeout": "20min", "author": "DAppNode Association (https://github.com/dappnode)", "contributors": [ "Mariano Conti (nanexcool) (hhttps://github.com/nanexcool)", - "Eduardo Antuña (https://github.com/eduadiez)" + "Eduardo Antuña (https://github.com/eduadiez)", + "MysticRyuujin (https://github.com/MysticRyuujin)" ], "categories": ["Blockchain"], + "keywords": ["geth", "go-ethereum", "ethereum", "client", "execution"], "license": "GPL-3.0", "links": { "endpoint": "http://geth.dappnode:8545", diff --git a/docker-compose.yml b/docker-compose.yml index d9c45c9..598c92a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,11 +10,10 @@ services: - "geth:/root/.ethereum" environment: - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool" - - SYNCMODE + - SYNCMODE=snap ports: - - "30303" + - 30303/tcp - 30303/udp - - 30304/udp restart: unless-stopped volumes: geth: {} diff --git a/geth-avatar.png b/geth-avatar.png index 27b1dff22b88bc96c5186fbd17e23a49f5f0a221..bf9f30cc606e90dd11a404ddceab2a419bc06423 100644 GIT binary patch literal 60847 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≧sPg9eQh{Qav zug$tSLWUx|F$7PD)9U~asF}b!`E`o<1{WXK+S<3>f*d(=+2qcqjELyT9Ld%jR6Bzu$s$g}L zFJZ8a)dcMG+?4a~FS?3(Fpsu(Q^gAJGLeyu)3q+29o-AWckKV&*dMBQ5K;(ZL+8wc zUM$|u;%L=UE)=8ev|XV~*r+0x{qp}9d^+VdO5UDFZ_v0{zu%`{L1A~?R2byf=B8GA z<(1$!%^mD|)f5f+Q^gSm%TBYph5$#B)hHn*-bsmjFh6##(s!$1gAQneQRQ%f)$oZY zklOEjcInB1`giY)jLKOmT8E+;df4cw!quISN-?tuA1L|KRv491V>{uDM*}F_ucCjp z4iv!3Es1w36mE(DMa z4Y~iVK8*L5QzgBYX@i*IO z$uF2@M}pXA3qHPboUw|*svu#YlAY2LD`!8V$$GPAPqAc{{#Z!b6f(;z$UBoT-oCjk zR`_gs4G{N4#{B-4bj7o$sG3Vc-og@<4Ej?|Es8t*<@Vahb-4|P8-?6Ql&$u&Dzs`M z7&#FkP0b|+Ez&$PFO zUtxReoY;8Fu+id?OW3!Jj(&1G!!_csk)xuOM3zpMUFH8DrOf1Ab zhs24#mq_s}E?rXma7j#8EoLm4n4t_AZ0hzrkPv|tP;|Yun4Z%U?}Jxe^upy4hQ>wA z%aHmo2&DU$_Lm3NfqI(BU*szP@%CO4<>Ic9ZKKmuX8Ec3-kMOun_#1x4Z%p=R#U9h z^uWrpI=cr6L_cR*WgQ=y2WOdR>8X}b{LJtoE+}_4u2IcHzou7seO58x%p<14nWj)$ zR`G8h!%(ML0ya?k`H|-84H|9#PJhaKA3|_mep^t*{9VSa4y|weop#)dGV$5D^);W2Yy*GUBF0$$Q z`L0uuqKu_(p)P~Z*CvBWO6<)l#F^JU>n$2;7wJY_%)0X}IMcg)oIkKj)yOrbZo+<5{B$yQ8H3ebwI>e9Q6ciPdnCqPEL`)XGa*&vtw@Js`)7D^hQV~w5Rax=TF{h&zKfN{$<8o1bK zrrkY>*-dXj-Ae)!=VHCnd%GAww5J9zN87$2v6nL7DcJ-zy5RpK8wkg z-U&263`RdpoSQ<>$FTG?>o9KN{iOL_U%YdW&4X5L*eHJqe=I*w4rdUh`JB$S=*w4m zog}i6-XMIu_Fw54(xOZAN?XL@EfxrYd0>-~eI(nZ7m}+wzGy7G^pdBnTi zId=U>xU>mT3Y3DJarm+n8>?{3!>1XAkM@eJyI!EpFk8bo(~R)%0zN@PCgq^2efYd5 zGD_Zi{S;Y>2BYcV`l=H{ZQK;P6Tb0z3B|ApY-faL02J(O<9hY&q9e=OHIH9-i^UO) z7cLP*cL>}tg9VtFjbgw!c>^@DhHJdU;m|+qmRs69&!E-Di#-%_#@v;%-eIPyZxEH7 zIZ$}SGFM*AkrrXRhX<1#`K>Y$+*JK^rkDos%Z?!ml9KG}HFmA^KcNW;@OSt3(T|SI zH5kC(E91Ng@12Ut@Msg+m?%O&rBJVxm4Bsn{K|OZ%>6E_R+@l!@_-G=1(VdkT2~>@ zOO%~Uu=n?Uef66{r;&pB-4(E|dx@ox|Enj?UfnNupO;Er&)T=_EI@Do3^f5~k%A6! zJ9kp@{y$@AYY~yJKJ>ep|M>8ZPPNkjReeW|{Pt$7eu70Qf;0!W*Z+BOC8VP;o0G=+8d|%fW`w0B{s+TzbYFu#&ojA%4lXhqyTru{J+cbeqwsrtw zVP%|BsMFHR)2{BDC_C*EVx-cwVJ&A0RrJ=6dRJXuE#xQjr1|>9GW?qO{I*?H@xlr) zIwY+$Bk4OjpdiZnO&ob(yM#n86k!5ZPUm$Vp|u$GzHlPLCqz6*`Xe6`8;d5~S1gn2 z-1_%Ro8qy8k6Are>|3~B4a9;++gX{H9E1UbzoSa-b0f4oy{3Kj#^dfTzFp7rw~a0b z2z+BLi4hvJs_FJ6n>$1rwI-?c3ae(F0vl~vN|gnMuFipO^ms%;7SUxgrb9w zM^KIK0YRt8s@_tUUT zowvPh5~q+ss5ZEObu*~&CHo27@{%Y>Ci?=4N@J?+){B4J@+5leR}kLN^MMl$Ec zvM6x%0jAqGAc-HkS$kHOI7%AbkrAuo0@fj18GYe-J#&TETVPeQ8}nYS)YG!OVG^Z8 z5=#yPLmz!Tn{~RL)1YG?&@W7(=>M!_+g#|pxB*_>*NF)MiEA+RRlwmmBA!vJ03u1T zXL-I-Bw`DzPxy|Y6O)J&=ZF^Fzf%|M0Ke{TnGE#Wvi7{BfRv5K{TPa)8|x}avWLE- zOA-jJ<_;2LXU1zvG62?*`LDal+W&qCJUd8PcT19tHL%d8ii9&y2L6(0?h6li9Jl3Y&J1uh)4Cj&|j@>#4 zZ3?0J$*GW`I*k?49HD|WUOQK|w}%yc9!l#vJI|7ts2YwQwMx@g<3;iiWkYJu8Jnw5 zLgjOR%3HlB>&iBqLA`aYkJb-2<1Jr*c&gioFZo;VXOVD>z28yRlI~VM46kCK0A9Mz z97|_p^9M{?sx9MQ(_DWb??2)>dt+VjqS@3|WZ+j0rrFtiJ`HXEwousA8`2c6A9Qs1 zm@WuA`Dqz9n3l6!9C_bQsVO7ykFRe-3gcdE{tLd-ij$707 zD(`qxgo55gFE9V{=agPhv;)g%F4K{iI&OmxiB;}MZ4zCTU+O4$jN%0EU+=3H%`!j3 zs??h^Pv$3c&T%Hug~CrJHiMhp-E(!*a48;;DUMXsq{>F@eC(nLpmW>WHFjs5=`yA{ zx2=Qm_lqEVi!xT@BwPXfBx|JGeRt)rz58W*569h8i)iZ8eG&X1!viZ02IS=zZcYUe z8t5ApX&NH3fnjV1@ZS8|i&l34|F4c})n_n5qoUv!x8yii6J(xODumohL^T&SRf7a8 z5mgA$vWm6)*$y@H1Y;h;iaeLedJU#K4G-G~WjDv|X8q&N2h5cV=?Vpxc`fVNdcV+Y z?KqNfr?EZ~dQ{$tD{ZOVdG+;*p)h@UDpBZu@ zOHO6@2_npm;vRLl0jb8kF%Bn3J+bK1JYo3KaYRl(2gvQuc5hhsIFEFvO5W6=>0_2p)+U-mHLkt&si^K1Km6T9y6 zF3EstlZUyK1>@Kk>FY9d9p-1kWgpL@)(=OVdGH&?s-mU-sJ!@x59zT_4+Yg(sk!S1 z-VNMH?bOS9R0t#n=H})XZvo?|e|Kid_&olhramx&hu~9eH|x-N)IxJ#QK9Dq^vu>w zOldRz^;~&&eSWBVy=rd@c51c19^~n8y5~!4%kNMHF|?;i`LZo<{&5A)|7#wcDEM*~ zF=3I4kVPOcF!)T966utM&p+VkV0ceane07ZbpSRET5GMZQB=L(e~5nkFpRqCH|{WO zDm7u^H6R)KFtRegvg`lkft!J9_WMvXy@u4n%6gB|_rRWCGhmQ+gUCbOEq8uflD20H zLx%-xZv;Ay_c~7gZ2xn?+lmG2G`I(X z8lLzEALW&}lO_RR=2~&I#mVIbUhh_OrJFz(miTMpiVUv|^^)7g(Q8Y$%HsWFxNznM zT|%{7Zd+`ec=61&s?N@+cN%*2%oghkh~O^z&@{S3YdF`aDq}%os6a`k}djCVMfARiEfZf?bqrpvp5|At{gv58}uD5>6 zv;Frk3HWZvv^l(c!!pxSTZBqs!&#>12wCQ0BF^Ys7j%=3g#L`Syi1%0JW=&V441^O)R~KhTqtM3R7z80_eCb4 z1G!Md4_Hlo;chCWMxxDWmg+2K)OK@exsdofOtxs0;Ee2pkQpn ze!I7VDPY5VSxfFj#5!<{_t{CWZ~(|my@?s>=o!t|@L`mDQJ^F;L^36%8hoSM9b zNM@K9A_dcx{gD0Mex^+dn%zR$Z^Q-aUTpLNHBOXFh3s97DtS|NxS3&Y+4q!tm1a#<79@7G;#2{8FB7&SNO+2KfYcfi51vo#tTN*N z8lc;lMRQOX$G8jC^hZrOa`Vyj8)G-JBVPU4@%GPaKR@Sy`}w6hyA@5xI!j3TpzHlX z`)Mq-H>z>|>o5s_V^hYsRc@K$2bkDl=X-|tbV}rn6FI2N<_Et#FF5btA+Qs}yj*YM z)Z$!zj*xKC4H?IQPG8WWKc>PgW@y5rBH2N$x1yn1%rKI758x8NeEq;K+ zn)g-&5;51JMkSev#iR;c%jSMrAJZ1YFd)N?gH#_A)>Z6BemggCuv8)t!{xn%VOy$~ zg4XNb(CMdL`1<$h3HE=fOaZ1N@&C90`n@HyhkB)7b?_Aly+5z}A-X=+upEx22sBC{ zsZM##s2tQMpv_JQ9XIM_^gQEl0z@CDHia+G44mLpnXxX$TxV(il^X>FMS}6x0a`m* zG-1V-wfjxhAs_G~F0lJwV~~+<=ZnsE?Zes6TO1`fwxzOP$CbR zD=2w=v9UwK?69L>iM_PB%yTHr8%7qlduqDnIU$nu{(H>FLC2r(yVg`ek`2*(9qCd7tKt6hoa98k$GD+?43V9y#KeppC7u2z*2h&xnsKH(nU+=B?L5v z%^!}+aK``6o=sAZ1~yd)V()51YII0NstP_QO_Z8{Xq!QYn;5!ul$>?2nSIx%GiWLW z$ANTkLGe$0p019IDxp+&&<0rZmH{70LLU$7c7N&g-3h=YbIncP&*ncwz0cpg_VDx-Mz0~& z*y=1>pkftF-PUF9S~mqw5auhXAK?nfB_=Mj0cC)UfVTFAg5qHO$l@?<*ehy18Q&kz z85NFfv6uZz&EsDImC=*<7v*cP8dDvv_nzMC-=+6981DQKZ@y#!OsYdM7OZ8;oROWh zimC#+b)nirzaZkJqIQ%>LEV!%A~F!1dG_|$_x*tN8!~T?Loy|8A(YpZ6hMo+a`1AF zTGo3fwcYCQABlQ(yV|*5?g@fHdAR$=(m6>va2A5Uru(C#im$EITtCJi197&I%zU?j z0-%?xa6gJe(K7zc9jU4cB`=B=HGfR%UGiIivvTK86qYrodZpjA7Y6NopV`$OS9U)? zC_i5xRD4|7ZFDcwQ8F({&r4%5eTxdP;Q;l>JHnHls-Z-1&N$xZH%qO(!I{go2fD@v%PcbDrm*i##B;p?* zq#GyhrTg1w<0Xj@Nv+dVBq8!5F+{Dg-s6lR$+y#~s!bBfNGlTCvPCoU^TQTFg%@jq ze`~>c%b4sp?h3fPTz0-*Yil`bS$1M&n4@6T+l$8nDaWPPJLiZ=8M75C?%YI8o{|w` z80&+QXA1m#)QAJ;|0Jy;iNG{vt1*xc{A|{NxV^`b_s!4zWxr$aPGkD4>*y%?do6n9 zlEPNgj1PSb*H0G_1IN^h$TsV99m3+XgH{YxdcN1Yo$xPJqSuc$v#bPtCoVNM>`&#ADow|R zyl>&kM;iaK#THPU3*U10B*$K4uNXO-#mq#P&hr2z_wzgrDdzWMw)!JysKJI%nepi2 z2d^n%Gc{_j*ca_9uo`&Q?hX%DIL;ct5ft&Osq$1)h``VZv8YLkCa1qEF*&fm;`*%@htZ1gPdn(^Kwpd*BP{^0Jj@dGKk5Qa(^j18lXwrIh6V)>ihn2 z)W#)nnAmfMnEBDUFOC9@L9}PR=$nL#49z{#C2YPpCnB&kx((!~2tXHAI%eE6xr3(4 zgO9v>Fv@@jv4joPhH))VJ=RCt zOy7h?q}JgvrLsMgM?=^R;ogZl8!!618l-U|#ZAa!jxTCodfNeYqoAW@4!Z z`;Rf2r}`c5D_3;WLqCdeL@uZH?l=h)ril?~)4`$^m~$;{_AeQEzT2 z8^DP{I(sM(3SWhFDDMazaqz9e?ogZw5_s|^%%okd^3hG)I4gH5{oQErt6b!U(% zkDVxM3ZpI_hlq&N2R|7hye4M(w7Jiee>NnGG(9ff=MlxgH08s9lyHuD2vmg(sDLBp zwulp=VN;wMqa*kVOwA)X;!3U0Qikc{j?j+vbW8BGn2k z>%%opWfYg)Ty%*k&4*v3rU^@`wz=g1rnk!=tR;S<9PPXqB&N4h&}Ej0P)! z8miy{ks6llsk-Lo!0gTL-TwT>w27Ubqlyasev9eBA+D-njdey}x`$0TrIl}l`{^kY zHl~!Sh)rJb*na|boi@rlm^He|lxLK~zG5jd_nlGMU;kjn!1+;i;4`ybpp%eB!+;)M z{(N|#QSOCun|6o?zrD0UcJ8U7k#!}&1hOs zX0dE*GfoL`Zm+#-E;>f!?j4%dQiOY1)$A<)yuoR_Nr+tt@scR-D&V~6CChv@O0%#Qu?=gjs}Bj#q#DM@mC zOiQfIs+^#%xmgltI%<8kuE2^_2#R-}V22tDmy520{<;;i%W^X@2>kBx#TTm<_f+Em zEx~APyIcV*=ba!j^7;T_>r}l5z(z+1o%9H|&5-$bkYfcyeMg+w8_GFbL6c3&vvEt| zwBprmy#zp6JHiutUFIqTM-b{dOF;TO^JJqvK}>4hEZRPPbi%VtgjmHm1y)_pPgfI=6je`iMkfn_#nFd(L0l7;P$ zV7or5s%%&08px@T=(O+|Ny zrB9P?H8OKUmHAIH18+Z;VeR-mF)_o-WoYEhgk4VBz*TYc@0`NE*HbbZb-(|vc~0T6 z{~2-LgWy04rLLtC?N2JgMqw~bM&u4pAS}lHnx95Ll4U3IxiVA=8apir_eqwY(DpZ- zq+@anq0@bF_B2PCUu}6fxc2Fx_}(ZAYk4L7oE8SGK%Agar&6FTy6DQ|>EdH|reqEx z%}cs{|B5XBrw4+KHBK#Uvh~xsQ_I`5IuVT2afE#1+e%9(`qRUU?j{|y8t|i?s#Y|q zl9F^kJnmn@P9WA@Q)lEBqkTmm%-kndf5Ec`kk29KUmEH1?dex#T z8c5>44FS?fkJjde7KdO9Ys4W(hmeXIAre%y*~`n~Tt+&O&^6!&6$|xy! za3=`n05VYYM|a#a4e~54#=D)(DoQNVRmuFxTXLmr)>r2TWZ$*689L)zte@zJb-`Yy zC~DkG5nlw8(?twr9LTp-?ca+)-Ryz=-m&1`;6$rylR~T8qYu2`O&ZR{$@=jZpE{+e zO(ei)LA&Pek||9WYRko=G&gy_^RL-(Q8v(o?!-X@UXWH904j zZ+3nknP>=f28JX5%7!fHfZ7E*6yAHdqB^}3tHBDZ%4bf1wg%z2zIpbWIw4@vIU>88 zZmD+FyAiW}<2eRtO#Ey7ULL=4jB!L1D-@FU_K1?e^z26dwE5DmRDt6=dQ;D5x8L~*C79uxY$+vma?3~1DzXt1WKJ_Z0%c@?lzjIE^3 zq(dt^hPJjaju9zW%>lRKgx}*yl9E{;SG^H}J5yekDL_r|R=@W})u;pO>2M z488VezI)#g55zNKnJa756K01R_#Y`Oeh}?XxjGdm)JaK3ZtC&zw%a|?mFnA*2tG8H zh7kSfg0$iYY&W^3nG^(akQXgyESYvkqyBP;MPIl>smLfdsn-#G=xg)BP8;t1@Q zs<%AO7&f}yI0KbK5HM0zAb&YZnTD_e$Lui~xMthW$iVy!*6f;S(b<_VG=EVDD?l61 zTb-#jD;DGEkH-qB)WVu?w<`f$jm|1eYEO_$(DXym~1*`12lEI9q3b6u&=4Kf&zW;45-pgB*>C&`0PY-W; z+Li+;S5o(wSmn9^G^p+t6ZId6j57xP%$;3FAt4s)n6*6*gXpet=_wtYR)HRUH5>Ic zS1RyEq~PwH87s|=$eE$N&aaMJL$ma|XUvuswK#p}FzmEwM{4 zeT@Nbhu62|lNz@JNi}Hrpv9lS0>27d)C%!*{D#-=Mz`l-z&T>4c~hzRe;=u|?Y3+> zFbcW3ukvIcB$tsA!kmX6Rs5PS{{yH7#a@Th!pe3s!!KR4^7k)V&KGS)Om`90;# z@OrwFE9m<`_!7q9dT08kq>rmD!vM z@Y#f1a@$m8YA(w;I6yya5-QCRrkpN|X|%z% z>$+dkKA0fpXrxJ?pmRscKBvAgp9e3R631G*iIx?R1lCk^Ue^9(jxN~B0wF0Mm=_)- zE;u0g=fb%Xl%!C9aVR_Zd!RT0n1_SuJaprrVZ_)K;?G4X36NJ%U`bE&NzT$Zo9?Lj z?Pc|v>p79ixu)`8?%W{9ti;DAhnRLQ`Pesw_^pK8SWY}1163_PMVw=EN)O6Qb4x);ezY& zl}_hDP5@?oE+AZZ#3L(HQc-=Gg{}erexNJ}(t*D4v)Zj&2I*K{Fitw7vW8y%p5=Ax zB?|+5HuGwz#9NDPCHtSjd*WlXhsD39Qjb=b)A!QT4bAk>0sNbL%aOU?FNF#RVbVh-d(@($wm&|{_Pa} zMc(QT>?z?JvG{%UYm!0-qV!hJc7j&07>K!;eIqMou#b@Y$%h#k3_;{*O*gD>`p9&+ zFzj>43{|AIvf2)rsaOYOU=YP@gbNy1*Ar5eF(_Lc=9x;vL3c)6`E!p!DdV9)!(=l- z%jQ0~m$x#y+Se-ytj?*1;OK6qzkoCNlO$}$AqIXNRfu0{9{WJzgW0XWwK&)2TmIYp zH14gl*I%LbZNST7(2`IW~B!v7t;S|SI%<-aHMsu+qHHh^*YMU2Hr+&Bx*k&SPqz^R$6MYYAgzikzp2K z#yZ;XjmJ#}_Yzx7YSCPOof`e#7(4Gfyx=rjdb;*N7GZySi<~k*IM)0%8qAMDJ`-53=BEL)FxCwYBNoWgs`e0nHeNsNohLu{#=FZ^()m zO07fH?plrfpoOhRLOonoQxtYt+x8eDB0WA;+JTl5*eCvheeHo26ZwJALsq5E>PZ{;^MGfVkAE*gCcCg)m=`C| zDLZ1+BtUVo+{RX&0QK+TeP!>|L@9V{!Pqf)Ynv-umHJ|wj>434TsVa<)oCH2djM^L>1iW9FazL|({|k&%ev{YfQWJ+`#)b5YP=rkg!a zFo;Wv1zhHL=8_de9srPe{Z&Jn_?@J$I=X6@52I_Yv2G{9>q@XD=VKZBf-DhZ$r4i&1$8AVjA%zdWm1@!fnD#m-Vb&o@h{TB@ScK&_qJ~6H3(SB$Mxe3 z6*HgB+tDAzV#fs&s?A@$!Jpl)peKb*WBgG>Mk6zeV)nFXPa~Ti8th{H{jq&pBG(+M za|<9e+Q4^|q6X9C6=3Y82SS^IJIy6=s?Y_Y!tShOnua}e{x}1eqwk^*4=LE4G2U32zH~AiAMn>K(Gq16Mi=mu}FypTAiRxvw zJYaN7R$&+Ir^CylGpmTMuV8`tbkx2e3F)hlC8MQ~7%Q=&eC7FFH$o(8f}^u@5L5Sy z7(j5n_!rq1bqx8lS$^Prv#PGKl_%ApmTI^Qb^4c7_GJci9Nyv|*u?1q7l7rB$!4FK zkL$-fZxidutTEDn@huE=c|s`W8RtB81jgSZ_!Wy}H$mH5kX z>A(Ne&heH#53X1zoZl zPpqZa6TEZW>f-y! zJCC-d-pkvZ4+-DU0o2gQ2EDqy#ojN=k6>A9@JL7h!vpeZ$5x(ZyW=h3!Ro$?P<7v7 zEwB3*^F93_lT~?zpWBuXf^IIy8M((gtZSA_iNzwVDZ0b<2G2X43(Yu>ph9iFWWV8{W9}hh}up;n2+(aZB z-x%$2+Db|5{p~NbkfU2$j=GsPR!9;S3z-EPSYH?LR!_YKFiQ*hyY@ELB2+} zpXn`Ns{i;ZXd;Fyf?`$KJ}5Tt?F*n5rrdaL5Diau0OeQMzrVMBei!$&1wR-i>UwNy zkpqP}k)&}XcS8jI5ddf%H6rWj`z-0Q%(-@^Hdb7H#IPm-vCCcvLq|#2tts-lb8l1T zqRfg>T>Sh}rX%Nh;_aDM@lHm83hcMWes_d8$&D; zR&6Ah3@qA?%rTpntMr4Q8tVS}H2&D!?>Wom1*u|Fjv^2mU$CdYUBk|= z_{rzdWOoqmLvF5wIo(dqKWS28Q-_MMiW1jM1Ntsn^No*s!bShI(<}a!%;rd_1l~~g zq=)8GcKwKoZt2ZTD%6alChLn(>JuW7P0d?N~Df7}Ol1>mR>-g>;Ya@ELT44~p39t>pff|*9iPClX7snx2scRcQv6sTQZZ?9XE8l%? z+km|{%*oDxoay#-djpF&KA*?a$I0l;QAlt6Y)&+#yZn7#}4zVb17;RJi2ul6Dw&URB_bG zKaYv0cD`j#y2OfTo|5gH*3#iw64ChVzo`xNd3laW(%Kj&-Hl(Gx*e=Rh$vt))0zfc zlEmwpIK9p{6lyQmei#F=z-R1#@nT{E<+a9pM%*5AgSS>Wh zbZI0-@BmV*y}GU(wl-P^$-NPZSFzUMZVvLGYbuxGnV=%4YQG-us2Zz% zjue!ir<<*hX|t9OK_R~zIGh#Y-0Ql{E8!vTz;E?7l9=RDp%g}qYgMaV;tP)g-Xwy| zScNuam*ngHtx{nXpPv{XYT`2U6W0g{_>}udc=3K2#&mb+4sm5~O ziAjv*scGD>Tc{&sWS%V-1{#1&P-h)e*}6=i2M)FrQPRc?$AaV_IVTsBa}0PJ*I_k? zW?yD=Jb>I`Tsj`u?pL6<)8eTPc)Fh;2R7UI#FvVGa>_Ei3 z&rbb5t_JOQcgOZm7beDAOS#Zxa#>VFQqx#c@)a4nbWij355K9KFLs)}D@-sq5C2c3 zL@yf9497YNKa!t|y7ebg@xaJd*uskv$&`Hf6kn$tV5!S3qP3Ecc-1kJMcd(;PTK)Uod)n1`vSYHj93g)8 znP@uD-E{-y}hzp}%`!2e%-1ut5S_jD-R zejPqR?88V16xSh&%}#P*Fvu`j6O%YI0vS3r)Aq4uVJmss;ArlEJSY*-tK0FnOsnF$ zxZ6-W;4o}{k1P#(NRU}wdVt^ucBrXZw!As9V^oxrH)J+`r4|fWKsxyZhYQ9nMS*|M z-*<#rX<<1n34(uED>~M;j~GrG$=^=L^AY90KUdYc>}z)o;P+RCQf^L-)o=Nsf@sL_ z9%K$7*!BUq{na%87MuJGgmY4XG!wcSXE{)0b@up5yEBx_W?$l0Q?$TLrJ5@Jvyq96 z>C@{SG(KurnQ&z0_aQVEeQ;N6G$R$51QpxR(Q+W04?{Rz!ZFd(P$yyundS4edvMSbM!a-o@W8weR^p#O*G`;D8Ce;GO1*=Mb@m&`dA-LwcF zxrmBC#`QW-Q`F)WecWVQc`4S+t5PO=-ODttRW zMSe&{j)({}c1g2^s2g&~oE$iD8mRoTZ!5JG^3nWNHIr1@T%Qjlq38$spKT#KFWmvKHTBW9=vqoHL7bvb zZkq3Mj*9(;c?ukUQyj}5(V@XeAS!W+>G4QEH0m1N(5|W|XTcOG4Llz`2#Cj!Ih?WdQk=;s2X}MF}tt^nTBz|(*X!L@h^8~$(DXC*JKO#+;01;&Uoo>*mC}#%J z4|GVdUWRwuB!;mk^uxc3C{4tXl-^QP=_KT2eGew#_coxY$kcl$%b*x)?t<|IUqg} zO@&!V2{x$n0P%hfE|TGKtTtmwBW_Z{6U=B4I;12))ktx5uv8^)sO zmwyY_P8)YCeB6Fpj{L@n7sB3Kq$d?zhx!36!NWS1r{G*Pth}CAf*vn|aJjBHS(L#w z7sj+GccwrvU6pze+Zc*h-!;WARL>xaUf;7?A}+=(<|yIoj8eiB*|wR%8d+-WSW=n0 zOk_C;OmdlkjmQyy;J_e|h6ls1YcPdfBM|mroQa`%T718A4YY{yuQ6L?a-Gu0U!%S% zPP`R&v^Jvdd#G-=;Zt4~pT#5YlWNrNA}FUnMv3(|erJ+uSoMp|%@7}?=$C6%nn#n7 z5UvFTgL4yz6Yi;AEj$t&^GHZEyg{*7eEnT0h}`w@ zcMz>H555?<8j0I~mqGBL{r*A7X0vU0M6iNn7pRm#0Y8h)kf5x0jDCF^CwpbEtb9n6 zuL9GbFFiv0F+!lO3!oOiwm1D4SPmib*2Lq?#!?QKk)Gjq+E3xz1T!}V0{TXIod zMkZd|OOxj-#Lyj!%0-e*(kGuw#tjY9+2SiG**H3i&Y`HW(!m=vgM2Eu|65pJ`n?P= z-UQ^J>GuJ_;basp9gX`Q^|4|e$Z^FdN4``1hGb;_RM_QE#{V}$*4ltvS55|q<$287 ziIU|mj!mKGWK$tvqasomjv<|``QikZSE{49`88$*LyLdulTOl>nUAZx({}w2XIyL*5PHdaz=@{99u+96t`0Ur2c(|-<^JbjjVq9eE z&)%oDy9C~Em1bdBqk)fIa&eSu-Xn`laKf#Q+dT&-Mm`()?RxVbFKJ5#`i8qOCgT`c zVR2zCAsmn}??d%a=kIf6IbIURXEg+VBt($3D>%9-c};a9Eyrz}Shiy}p{P4cx6BET zW;Rc6QOZDTBxsrb`|5OSYq3>zHgkXw!nC94hlc+({M2H>G4+_m=|pMNuMxRjv#svW zE3g2vE(;FB0Y3;r6I$roE~sArI=nK`G&(^!B8PrFs~%cQIhp?20ek)c6VOt@F*neK zr{8`#z3U0UQQv~k=#k6UFK$+T)gfZ_P3_pjZ@H!zVvddS*ucSsXMk(H?>c#GP}{NU zpEP=lE}a(7Z)RePppLFD0H@{j;;Q6F1w8GCprW|yaJYO93mSgapWg}Sq7G?Q^~N@!1)AFK4>yu&-sj`a@o zJ{L3?!#KdqlusJ75OQF0RH5aEN+Y!voc^M%Cg$^2IkFG6v{K(Dg#HVVa~=%VB*!pgMtX&p=n%iEOCH?%5s-(}+bhOdtrXEnWT>u{`IooL?3umUyMFIMX4zmK z%c#MAX?CUx8luvt#O1Rau;eh8PEgkTFv^>)wd)ZDqAwOh#)IE&jIL9P!~5o!l|w;) z%aMR{i&rk%9+#Y9qIF9Pmf=pDa-K(!FGpdEqJt|})jb*TrFsg88%_p~>^Z9cy!&gY zvVDmF$-A?E-n0?Vek5W2C_Ps>ahq_v`d?&Wi=~|&H3o|E`~GE^$8{tb1dAvkH_IH4 z?h}zFKm^X>Nugah8jhf97AMS^fiB^k_q%x$>E=qVbvp8(k`oLHI6XLtAXdb2pj2Gc zb2tJ=WSfXvJ_?e)rt-{?9cko``fYPl;txNB8de#oeT4EmX~lPx{!K96vJJXhhF`nKx`S@3>i)7HVq(QAl@_pAE2r8R^YBg@I6iheR8}SvM#pUTr>)Ae}jA zIA>mv#<&Jr=EwC;E<o{TjJb3* zGPM${pX$FFuIVmSOwe>N5k?EhJH!rpnPT4gIe8|`8CH#^XPK4Y>m$3lRlq&MpTNPo zKGXK(?eRX4)by`7QohBxih)C=9e?1VU%-F@ZjqyY(SnA7BM8s@&R9%DsxkCTe1~h5 zW->}OT@w(Muse!AHA7%FMU{{G>dvQZ`>QhVs2U4I@9;rQ*{((wW~~ER;Rn_=r(f&@ zvhJ3aUZ(tJDF9O#PyMKb)N7>5fE0fOc0Rj_cuBsB8HttMD2W1s5`#B#CALETSL68sdh$L-o7QN#zDMc;`$qRl04a%_-U*WqsOzy?g0R{ zNp|v4BdSg_hd4Z0l2i~hukYcaY+{kt91Fi2fRjYN#E(_Z%5kW?qD6xHPREcCJ?B%z z^pFLrmAkA^JFox0p**D+-`~F&7rR?=PN4aF)|>rwC(z)IwUDZulORL0Ux)^X8kiV` zo!sQ43ra$ablTnXLne<-4!A{uCrQ}r{F%f~LKNtGwT|f$1V0)+8ruDQ^VcFP{p=Hh z_4L>AqAX*|;8qk_Y0&NnTwXP+8Y9+^Hrd%Zkp>x?Q$&Ap1ovtNoU>SdU6tS`VJ;cy z#rEh6-c#*kDeMo-w3?Wv{)%+^Ci(lJUKhEDVdtm%yLJ5qQI__G^D1DT(|;i~Z)KvD zJanr@JdwJO9NY&pC0}Flr%@yh9wVR$ zZ_XZSWUil11lG?-CmN?D6h}j{^O<%D`qrj|+_K8oZs9A*k_o30{|@8M#DFu?irttk zR(HSfX{<4^0P<}P!xd}PubnlD&8XZx8Lr~LL;HW#^)LPScoT4;M3m7F@D4(p(vsb45 zCv(gyziomYq-M^Wi9}EfOfG6A4yhA4B!*Z!)OSseu6Tmk12$pxYC7~mKbr-eKE6|5 z6G3BJdn?_<&09(Qu~79Nt)je`d_$jfuDuqutOwFpChm%T!RY|VC(0`7Q1bqVueRKG z$_{9K#_Ut*bSqtQxp{!5M>e%zzJQA7fH}t@Z732TZZIzu%8ZW|BNbdCFLpc*83}4!# z9d}VndJ6fksaSXDf2{eu-F-v-`bA$KYiNn@?zs=;?wIRo{qrwt-eBxm54;g9#`F`b z!V-#Dq#aA=T#u5INj#rTW%3$9{lXKD=rajnT+4n}t0MbID*)6fieqxB>t%31@c3NA*7Rz5Vc~3Ha(#Eix(y1s zmRZY(a|ohFLBLMM9s#>>(q9f1e@Q~~a#FciWa<09D~-RbVLYBzStM_dreTgUUvb2m zSDj5>`kDu_J*F*YFC|ytCOSACHqkexN-`f>l}FH8q}PN0_DX@kt)@12da$F>$e z)Q{}ab9VtF=%v=^M_-2brIF#zS42K;+V(yPs1en?^(9~slmh{ZfK5k~oq}k8zi+|( z=lG?q;7dgF${gnYgUPx+knRVdNh@b}u-P$*(CG+kfl*jjln_jGMTb9tOHp_(ucNb7 zhjN1Njb)2A^{{HbiY2cdGeIz#g*NyGsm6BU_iamrB}4|dx3k*2EKWCC|57(p%rEk+ zU_k#{G0)ZE{+Hw2r|hnCF?b_EG5vu)iK2NCRwZp@wt&hp6xYyRq@?e0RSdY%JT`k@ zN6#Oy%@^|%JF5?M>E!f4aw%(FioAS!gt9bYDwau?<|AmE+bgoLP!-A;#Db@6adJ9_ zO!SCP3q0Y~*kyKII%|KnNcR{Y3!^EN*O1v~h-;i&hJ-B}O|}m%Xg{rc;}~wd5UmH^ zIjsU?)B)P?I3~r(#xs{e#jcdhU#G;|j;e%p})(zbPu$tvMFK1hy22^y7x_aO1=ZT)A%4d0(i*=HR34NfKyFo zjHbz3z7ofPvGIckY+#MT-VKS*?OqqouaW>keY!gJ$A~N^pxCn+C?O&7z$Fw2DU{Fz z0s;CZfIe<<&~~fz$=uIt{bnsC3#A83!Gv51NtabAg@>euny@;b0CJWnH3;yR`zOyh z8E5UgY=30To;Jz?25MvE@vBM}b+q3)S`A`iVZ6Qr9v)Ck|MO>!{}69l zy7Ke86_y(om|bV)!h`8+Or}?GVIRWDMtdmA-TCIlCM_V|5mgt7dfRo6*gu=J^Llpy ze%(Ns{?xK;H?=G%Zld&vTX=ta_F4l;;TBCvR7ao;g<}{JYza51l&Wi? zw7FtoR3A-K$R7>ylhzjiaL7OHx$ViG$;-2NNk5IZ+l!k~NXI5l$LIdU#y;tfDV zYp=U^9EU1!#cpa=apu{I1OSESuf0C0ch8*UfL76|Y_m{)^mSM!kw9oBD&#%@p6gX;AG#4s`wj1p~o$03p<7{_*kSI6u7caHV*A!`_ z_#@5T93sMzv!EJpEOISFiuhwxbssr0DZ}Yjf(YQbQc-U`JrMxWHV;$@;y{%rcwrzi z=(M=L(e3qElL)>U`L6;Offw#XS`r?cX7SkXu}f!rr)DUjG8z=XSkuY%2Q|?iY%h}V zlO`3W#5y)IhS~$}Ut%IIMM}lZ8x9OdwV7aXGLy0Y{mAHKq`in$4m|c%ss5RyA!tuN z7Q>{A94I4OTOyPnvp#1?a!HR3m$c@@E!_dYsgfZjVF|IG%We386U;miVmSe`)Nr=* z<^aXx6(9rpOwMzA{sqQR*a-p*(TW7gb!Ku8nUSqzwUxwqa=>jdRc|zyczHyz3lVcR z7?%|#hM6>X(DVKTab4oWv#O*$CFZIye83{4bq>Cg$~6-gH;P@zfBjW!fpKBtZKzq& zWJN`XDL)o${w6+5h#9p66W#px_R|Ss2@?|_kOuX?BO6NTVGYd=GbAB3$5HXp~?LMno>O0~FsJg=N^1{WR<^o_p7>e}28bnFaqTLIDMq5E9L0=0{ZKdB4A zKFZFjX@!4nqOM?NC&mD}4qGQD1i*-w@zgA>6~jw2E1S@ofotx&j9W=OKv3}coGA9H zJ90+y+kdHJEiUuEysIOMt9;N$8k2jx?d9*ac_H^OjX8%k5nN9~cd4FyLfuy#q~@oh z@y!o)Rz>^8n${P7gS?K=rolyeAyt^p*$6;>bRQ4WTst%~sZoa;zF);+Z=?zrG-yjl zK=H>q61utkyVYkQA|~=svncA;pcx1Bd}iV^?0d)6+SdCc1{ICdmUtMwUVd^T-!6*M zwtJIZBq`q`{{^iU(+Qv8j%Vb=wo#%|Ok4tXip#b&v1rlu9;HGKP`qc=I7%4k%G z7?q4}3WV-Rd08zb07Wy-Ty(W78+&^D{{Aoxn_A)@1Bg=bv44f+@P#K1Uf_KRuTt36 z<7KYoE{cl^-8&r0G`eTBM`126BIuxwF`#QNVC};>Fq%iPfe$fR=Sl7!5CsUYGN$K8 zwBFbe@|S5Jb5GZIdPZ&D>azReW$xPO1auz=T;!(Y3Ap1GlL2^~!M;bYSH_^En?$9@ zw?NyHx^FT8=jDpzk*|c8kYa4Sjv(N48E3&`i%y<6wP#d*`6k6mT`t~n z37_*fFW6-DX07L?(=;$!WZl@|(k@q+oPJFz!X?h|_xxqmq2uv>bSW}k6;r+H&xC?c z;&@plLM@8h2@Bw_DEqsO!9ADte#AO_g2G!FLP3Vh%wvywwb}6IkWZB$W)^qMmCn}n zOy)`FyR7SwYqQb)WX!~q7Pj|(?3y}`Kk&xyAPFvwz+-LWsO{E`oSbKcX%gsFr4w1b zR#ls?Wlb~(Cd?XOZa+B&h4UxtJuDA@{KG%hqLMaw22%T>=;bIFIK*N{iYsAMJf^y} zHYp_I=hg|r(NJhYTy%y{5jJ)2!_6COMzZ?#Am(|rJ?`HL=ecGBQwc2>HnJ`VLV5Ih znFY>I>PjK+2F?GVg-k%-)8e#kzQ?iaYEdgftv7K=U~3T}i9$zc8X<*k%v_Fkw?W5z zD2@I@3VI@ZS{>)Ppv`Yoe(VJT%qJ0S8tD(@yH~v)VZoI_d5Z`mqxg*F5;8<@F}$Ve zK7hwFyTfUxM7GIpV6w$+ZG?H&DHmR2QEiIsX6xyqKQ-1t+iN? zE6pxt+)R`C!cr~FWeiF?pjal<@Bn!t)bfial{CaduX%>j!qmZzkcYAV134s@X`dY` z%_(KtrzH4oy*;*VCIaCPWJ4G;p@d1P+sFN4^RrbJ-ctgQSLTG=m_MTM+$N1UzNCrU z8RLtgXjn2f!Q@nw)5M_=%2IXRl6Nj_%jR@X_5qtm0p`nzC`~e3UnKr~r4{iS=T?GM ziZ?qiBUU1-#)#`)exgAJ7fH)^5oU4-g%iideimQqzPci@MeL>r0_+lNfGR9u)5V)H z`C1^t9TXW1VTJsgQgHhVH5qk0VWpEzaTCUy@CqC@Fe)gg(=dLZG5hs&*5`;LP> z9!W+pglUJqvVX&6?7I_WWGlMnD^tOh;#9lR1NNK_lc`u~>TCwA$O4kkEF|F9pxFi7 z%Immx&->q?FW$V_&uSv0a{tsd}fd{Rf>g5Fp^EbG{R>&BLkfx{+v(1H_!rvUWaSXBgiGRJtY zj1l5kj8e^U=HnfMFThJ;n2eoF;IgFW=PlTqJu+W*WMpUoGVI4d2n9uJ#=H0v>R~H6 z8-?ip8{nXLCUG#;6*-$mays zP)VMKO*op+bhjn~?*{)SEL!o6dNJs_*t04s7<)@}lNOpqw@--E!#iI!>{hIPW11y$ zF@B7uE7kH0O6eI{!%Qu*YyE^(2@?1BKJPXMc+;fxMgc=Wk$P%yQUja%<#-Gb2n^*` zn<_J~=DItHS)(4wP$&{9`I=bs*=!4iQ|v-VUb@bmaj}=5q17d#y60iQ-5VE4O3iR* zlK7{B0x7bif~*t(B+QO2{lu`pvs78OT-=4>;{NY|IwzarS;&D>V8yElxS=N}2mda5 zxGIT=EfiGZ&LYwcXYxa5e*V4=-Oeg6@33foZvuz=NAh=rDV7RYr;g%wg+9r*STA|E zXW9mB14xJXOjGCgf0u0oOf46d^q-TB}p2MhF|m#{zQ**y&3Sgm9~ zjOgUpMmz5M9LBEsDnUH%buXQM`DUHMGlhPEjSgvx**Jd&h=q($${VQoB6yynQn*C2W5(~vVIk{Dd{Ew|Keo(Q7Sv7B z$l?m(Dg5DUnQ(jcTe)q?=pn`8yN~JuLbID{;j^Y~maf;NUICAGuV+=cwtIdgpJ?I3 zKp-r9WqBFB)Amt-r-waA@tH!R?ar|6lLrcdD;UEU!fr>Rjjd?D*d=|pSmZ+FK3ts* zk`rlBrMXla0wrKH71y}mCQfwHvo%dOo3$?;JN>DUF{obW*w7A@56G$cg~jOg?u^LF z>};d+`SV@C>rh`8)v4G9@MDsLJcC{dRO^q+)#p?&c{0!^5>e^Da_P)Yg4(IfrVVLU zIzn^|Z>m1*%5Yg}(+Ko_ zoeW&4PJO+LAWOV82h)Qkq;^OiYbd2U?u0BisC)DB_({vq?L*{K@9b z%d5AG%dM1E!?_7Lf>JJ&XDIXZa+_`Teqn>AAbQ*f4uM4#TPx<1VGl4V1|}2{wC%wV za9B-08`=TuWQ_9LNEBRE9d+f=XUF`yD_QL#IX&MzFy&g_ugp1C=$&$+|?FfdG8n)NMuIhyO z0x9~=VlCZrKaa<33aL;rWA8L(R%JwQHKwy_+RRl$@^Sw0irAyq=NEk&DqV_hL?Bwk zX!!3eU76oi*Hx(t7_&*D5s@2Ck%ahlCa$-IW=VU-~@CGab2jAZ6X8Vq{Kp-f-p;2%(FK z15H}Ib+jgOYA~|meU<>S0chiOW4-lh*hL@mBz9+@-+l5Im93wqPT?(0opek;ymh}t zkoOY?jZrN)7#vQgU|cKhN{2**N`y>+L7sKNFB2mp&)A<+Z0* z^j$fm|1FJd*Cu_tfBtBOj%r~`k_tywev z7qwXZZxQ;ozsjTaIV}lgN*@&OD$C0G*Hyc@=4@B)ST*)_R(}@M@p4q%_KkkL5FzFV zS!Y1v!g+|I>%dLZD>6`tNE=(J9}`5Pr;HoMrXo$gS1Vq$-{x~7B>xdWklpuizFf~g zyIn=b8rhB(X+ZQAms4^p#CEJvxEcIYI;x+NpPN`s2zjz%ikQ`xe{!Y-STseJ_3NcL z#53*u{wDRHM1W+wheP#%#>a;jMLN9_yy)2HLS7cQFJdQXMjnT}&&ieb%FBoIvO&yx zf}MpUsgMpAtj=h-BP?0TY@S+JALuh`P`A$W{Hmeg9mFevfX>2F$c{`54ZE*oPu zv!A!s=J@?@6TKv5S!65?m0?d z>Q5f`F*cpIifuO*wT}fAD`_hb4r~AY`aA zd|%&k6Y6F&f6mW(nJDBY=*|>e5B?~x&$Cg|!O2-Yg;?9DFvp*AUu+fAH!Vf|P`IH4 zxlnSLpgZf_!5a9VIJX^x`wa`6 zc;D(gS&wy@>2odVxcOjJ%0Dr$8aU#SSy%-dmTXLkYWteD={%9{p|*=j)4O68sekKOdPm2NEST!DXM&?H^lv%?nj%Q zU)^<<3W1HppevB8@;qjtqqC7_!765V+@sbnIW9jw8@-5-c5Eg+M@;^rw;M5z>42e| zd-cHLFkZz?(n*2X_l8mV1pyovdCcIGv+tXb^fM%(&__JMfS9Z6S->WhL8w;(4{-I9 zwsinf>SS!AvmBN)Sx~uZW*f_nq-J}qC(37N(2!Iv4=%$j?$v+LAI645)H!@h4M(E1 zg%mg!XiuRu^i@$OvHyaxAYxx&RlMHPAu?_K%klBxTOsO!=diV4RD%gS579`rSZj2- z6_bcY3t8pLE^v|^>EQp>g6*SW)QMH z;Gu5$*c2U(DglGf?*oi&5W{g|fh&QBT%=Ch*5POz%8ZvejM-qg!OQT;)yA6f?rMY~ z_+{fAtiS23S@O^n`vMapI*A!~{!M`jjykD->)O~An?Aq4durTe+Xx#+MW@Ect0bE_ zJ9)I6NkuAc*(pv-Ip+aDvUbWOK(Zz6`ywsWzH2G#zp4(>3J70Il0XK zMO5MuP$B-`*TpdNO5bv&Fc2~iU>3WReIVRdKMm^}$1En;X71pjaC{cOj_d~S5zfh% zx(>QL?NtuZoQTWU9`%{Ecb@Zs(wV(7FPk`xXC;augndg5$+T4}!;>mklH|yR(7yL~ z;lk*FD6pYhM(&VWE5M@A5{@Nz1%7C%d3={$CPN0jbFuF#*(l0s7uc%Zc$}^6_Iaz! z_!;cWr;W!3S)>Wkr+#WhxWWr!gog7lR!KJ#Ig+N%R%ZnTHzHcGGmTg~Ep3R4k~uz) zo3!&Equ_=q#W%dGMq60%pcB9EPonl4bfLHu$B9?On6SZ^FaX}9QQzo4SFhnZ{x1F@L_#3z7 z28-qE^s&>`$mfZxg_X>&!zxQwz(o@Ob+Qq6qkM&MvQ}P7W2lH7cnH1EIK@SR2m+se z<;K*gSv8VW)Vu9~|61Ky7vX2RrVAy{rWwb^tNh{meDn*aQ22=6p*)R`;yM+0YV=kP zGN3}`5i5R@B$;(Tob6I0Fh4XRNH@2?cnw=ZAc=G#`c{Gq28q{?nT8~04V-76Dm&qM zeuqoMpc=$OY+gGDVx@*n#+^wX*0?XG#(m8~xY>Z4jfI2qoYZXi`2}gbV}8v$bj(s) zX2}g$B6WMm^~SlWL!sDlv*x5PcL=wtHOCeyj3L5g&vfz;a2M_;z$N&HU literal 4716 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 Date: Mon, 14 Feb 2022 20:54:45 -0600 Subject: [PATCH 79/91] Include ws.api flag --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 598c92a..22e1951 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: volumes: - "geth:/root/.ethereum" environment: - - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool" + - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool --ws.api eth,net,web3,txpool" - SYNCMODE=snap ports: - 30303/tcp From 78ffa51ce6fdefcb5c4ba09fa78628da7856465a Mon Sep 17 00:00:00 2001 From: MysticRyuujin Date: Tue, 15 Feb 2022 07:48:46 -0600 Subject: [PATCH 80/91] Update Geth Version to v1.10.16 --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 22e1951..b4018d3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.15 + UPSTREAM_VERSION: v1.10.16 volumes: - "geth:/root/.ethereum" environment: From 2b6f55cd72c6b94bec872925083145cd0cab38af Mon Sep 17 00:00:00 2001 From: eduadiez Date: Tue, 15 Feb 2022 16:28:29 +0000 Subject: [PATCH 81/91] bump ethereum/go-ethereum to v1.10.16 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 919a7ea..97cb7b6 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.15", + "upstreamVersion": "v1.10.16", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index d9c45c9..461163d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.15 + UPSTREAM_VERSION: v1.10.16 volumes: - "geth:/root/.ethereum" environment: From 81b0a1971e7107b74ba3d7b1f74b808b3a13603d Mon Sep 17 00:00:00 2001 From: eduadiez Date: Tue, 29 Mar 2022 20:21:23 +0000 Subject: [PATCH 82/91] bump ethereum/go-ethereum to v1.10.17 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 97cb7b6..a4e0840 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.16", + "upstreamVersion": "v1.10.17", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 461163d..747940e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v1.10.16 + UPSTREAM_VERSION: v1.10.17 volumes: - "geth:/root/.ethereum" environment: From d3e3fafb46b2b0caf790343fb09e4011e791065a Mon Sep 17 00:00:00 2001 From: Tropicar Date: Thu, 31 Mar 2022 18:29:24 +0200 Subject: [PATCH 83/91] Not add these changes We think if an user what to add this features , the user has to add them using extra_opts env --- build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index ddb894f..4e86b90 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -2,4 +2,4 @@ ARG UPSTREAM_VERSION FROM ethereum/client-go:${UPSTREAM_VERSION} -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.port 8545 --ws.addr 0.0.0.0 --ws.origins "*" --graphql --graphql.corsdomain "*" --graphql.vhosts "*" --syncmode ${SYNCMODE:-snap} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --syncmode ${SYNCMODE:-snap} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS From 4892ce72f35150d5c7e3513bc366ceb4a4f2cf9d Mon Sep 17 00:00:00 2001 From: Tropicar <59098811+tropicar@users.noreply.github.com> Date: Thu, 31 Mar 2022 18:39:11 +0200 Subject: [PATCH 84/91] Remove ws api by default --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b4018d3..eb5c692 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: volumes: - "geth:/root/.ethereum" environment: - - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool --ws.api eth,net,web3,txpool" + - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool eth,net,web3,txpool" - SYNCMODE=snap ports: - 30303/tcp From 29bb33438c42f419470619f241c67009a03b922c Mon Sep 17 00:00:00 2001 From: Nabsku <12911176+Nabsku@users.noreply.github.com> Date: Sun, 3 Apr 2022 17:56:25 +0200 Subject: [PATCH 85/91] Fix wrong EXTRA_OPTIONS string --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f9e0f82..7d5f085 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: volumes: - "geth:/root/.ethereum" environment: - - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool eth,net,web3,txpool" + - "EXTRA_OPTIONS=--http.api eth,net,web3,txpool" - SYNCMODE=snap ports: - 30303/tcp From f0c60abe2bd72bd3dc64903d9ea44b85b67760e7 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 18 May 2022 17:39:11 +0700 Subject: [PATCH 86/91] move build to src --- src/Dockerfile | 18 ++++++++++++++++++ {build => src/build}/Dockerfile | 0 2 files changed, 18 insertions(+) create mode 100644 src/Dockerfile rename {build => src/build}/Dockerfile (100%) diff --git a/src/Dockerfile b/src/Dockerfile new file mode 100644 index 0000000..033866d --- /dev/null +++ b/src/Dockerfile @@ -0,0 +1,18 @@ +# Build Geth in a stock Go builder container +FROM golang:1.15-alpine as builder + +ARG UPSTREAM_VERSION + +RUN apk add --no-cache make gcc musl-dev linux-headers git bash + +RUN git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ + cd go-ethereum && make geth + +# Pull Geth into a second stage deploy alpine container +FROM alpine:latest + +RUN apk add --no-cache ca-certificates + +COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin + +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTS diff --git a/build/Dockerfile b/src/build/Dockerfile similarity index 100% rename from build/Dockerfile rename to src/build/Dockerfile From ffc3ed84592f8f863a2e6fc1bb77823102a14cc4 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Thu, 19 May 2022 00:19:50 +0700 Subject: [PATCH 87/91] Add src to docker-compose --- .gitignore | 2 +- src/Dockerfile => Dockerfile | 0 docker-compose.yml | 2 +- src/build/Dockerfile | 5 ----- 4 files changed, 2 insertions(+), 7 deletions(-) rename src/Dockerfile => Dockerfile (100%) delete mode 100644 src/build/Dockerfile diff --git a/.gitignore b/.gitignore index 9b98eb1..0aabd3e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -build_* +build .env \ No newline at end of file diff --git a/src/Dockerfile b/Dockerfile similarity index 100% rename from src/Dockerfile rename to Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml index 7d5f085..c9ead31 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ services: geth.dnp.dappnode.eth: image: "geth.dnp.dappnode.eth:0.1.17" build: - context: ./build + context: . args: UPSTREAM_VERSION: v1.10.17 volumes: diff --git a/src/build/Dockerfile b/src/build/Dockerfile deleted file mode 100644 index 4e86b90..0000000 --- a/src/build/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -ARG UPSTREAM_VERSION - -FROM ethereum/client-go:${UPSTREAM_VERSION} - -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --syncmode ${SYNCMODE:-snap} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS From 6addcfc127f232894d811831204a98709536d7b2 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Thu, 19 May 2022 01:15:02 +0700 Subject: [PATCH 88/91] Revert unwanted changes --- Dockerfile | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 033866d..ca3511b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,5 @@ -# Build Geth in a stock Go builder container -FROM golang:1.15-alpine as builder - ARG UPSTREAM_VERSION -RUN apk add --no-cache make gcc musl-dev linux-headers git bash - -RUN git clone -b ${UPSTREAM_VERSION} https://github.com/ethereum/go-ethereum.git && \ - cd go-ethereum && make geth - -# Pull Geth into a second stage deploy alpine container -FROM alpine:latest - -RUN apk add --no-cache ca-certificates - -COPY --from=builder /go/go-ethereum/build/bin/geth /usr/local/bin +FROM ethereum/client-go:${UPSTREAM_VERSION} -ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --ws --ws.origins "*" --ws.addr 0.0.0.0 --syncmode ${SYNCMODE:-fast} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTS +ENTRYPOINT geth --http --http.addr 0.0.0.0 --http.corsdomain "*" --http.vhosts "*" --syncmode ${SYNCMODE:-snap} --metrics --metrics.addr 0.0.0.0 $EXTRA_OPTIONS \ No newline at end of file From dbbb21a245245a4cbe76e1b4b9036a61d1668783 Mon Sep 17 00:00:00 2001 From: eduadiez Date: Wed, 25 May 2022 16:34:44 +0000 Subject: [PATCH 89/91] bump ethereum/go-ethereum to v1.10.18 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index 3cf162e..d496187 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.17", + "upstreamVersion": "v1.10.18", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index c9ead31..796e1db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: . args: - UPSTREAM_VERSION: v1.10.17 + UPSTREAM_VERSION: v1.10.18 volumes: - "geth:/root/.ethereum" environment: From 98715154157c6fa7d1db3634fdc79aa25046243a Mon Sep 17 00:00:00 2001 From: eduadiez Date: Wed, 15 Jun 2022 16:29:37 +0000 Subject: [PATCH 90/91] bump ethereum/go-ethereum to v1.10.19 --- dappnode_package.json | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dappnode_package.json b/dappnode_package.json index d496187..ef2b30d 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "geth.dnp.dappnode.eth", "version": "0.1.17", - "upstreamVersion": "v1.10.18", + "upstreamVersion": "v1.10.19", "upstreamRepo": "ethereum/go-ethereum", "upstreamArg": "UPSTREAM_VERSION", "shortDescription": "Geth is the official Go implementation of the Ethereum protocol.", diff --git a/docker-compose.yml b/docker-compose.yml index 796e1db..55275cd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: . args: - UPSTREAM_VERSION: v1.10.18 + UPSTREAM_VERSION: v1.10.19 volumes: - "geth:/root/.ethereum" environment: From c0324e3f3a7d5ef1cedba50759cf4be487bddcab Mon Sep 17 00:00:00 2001 From: Tropicar Date: Fri, 17 Jun 2022 09:10:57 +0200 Subject: [PATCH 91/91] Update compose-version format Update to the version 3.5 --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 55275cd..a0fc26f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.4" +version: "3.5" services: geth.dnp.dappnode.eth: image: "geth.dnp.dappnode.eth:0.1.17"