Skip to content

Commit

Permalink
buildsystem: simplify Makefile and ci automation (cosmos#7189)
Browse files Browse the repository at this point in the history
Move images into contrib/images/.

Replace "bad tag" cosmos-sdk/simapp with cosmos-sdk/simd-env.
'simapp' is a misnomer as the images serves only as host
environment for the binaries that are in fact built by the
developer on their machine.

Remove the build-docker-local-simapp target altogether
from the Makefile in favor of an inline conditional statement
that causes the image to be rebuilt if and only if it had not
been built before.

simd binary won't run as root anymore as root privileges
are dropped upon simd binary installation.

Co-authored-by: Marko Baricevic <[email protected]>
Co-authored-by: Alexander Bezobchuk <[email protected]>
Co-authored-by: Alessio Treglia <[email protected]>
  • Loading branch information
3 people authored Aug 31, 2020
1 parent db9b69d commit 91ff9fa
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 29 deletions.
6 changes: 2 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
id: git_diff
with:
PREFIX_FILTER: |
cosmovisor
cosmovisor
SUFFIX_FILTER: |
.go
.mod
Expand Down Expand Up @@ -204,6 +204,7 @@ jobs:
with:
file: ./coverage.txt
if: "env.GIT_DIFF != ''"

liveness-test:
runs-on: ubuntu-latest
timeout-minutes: 10
Expand All @@ -216,9 +217,6 @@ jobs:
.go
.mod
.sum
- name: build image
run: |
make build-docker-local-simapp
- name: start localnet
run: |
make clean localnet-start
Expand Down
16 changes: 10 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -395,15 +395,19 @@ proto-update-deps:
### Localnet ###
###############################################################################

build-docker-local-simapp:
docker build -t cosmos-sdk/simapp .

# Run a 4-node testnet locally
localnet-start: localnet-stop
@if ! [ -f build/node0/simd/config/genesis.json ]; then docker run --rm -v $(CURDIR)/build:/root:Z cosmos-sdk/simapp simd testnet --v 4 -o . --starting-ip-address 192.168.10.2 --keyring-backend=test ; fi
localnet-start: build-simd-linux localnet-stop
$(if $(shell docker inspect -f '{{ .Id }}' cosmossdk/simd-env 2>/dev/null),$(info found image cosmossdk/simd-env),$(MAKE) -C contrib/images simd-env)
if ! [ -f build/node0/simd/config/genesis.json ]; then docker run --rm \
--user $(shell id -u):$(shell id -g) \
-v $(BUILDDIR):/simd:Z \
-v /etc/group:/etc/group:ro \
-v /etc/passwd:/etc/passwd:ro \
-v /etc/shadow:/etc/shadow:ro \
cosmossdk/simd-env testnet --v 4 -o . --starting-ip-address 192.168.10.2 --keyring-backend=test ; fi
docker-compose up -d

localnet-stop:
docker-compose down

.PHONY: build-docker-local-simapp localnet-start localnet-stop
.PHONY: localnet-start localnet-stop
6 changes: 6 additions & 0 deletions contrib/images/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
all: simd-env

simd-env:
docker build --build-arg UID=$(shell id -u) --build-arg GID=$(shell id -g) --tag cosmossdk/simd-env simd-env

.PHONY: all simd-env
18 changes: 18 additions & 0 deletions contrib/images/simd-env/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM ubuntu:18.04

RUN apt-get update && \
apt-get -y upgrade && \
apt-get -y install curl jq file

ARG UID=1000
ARG GID=1000

USER ${UID}:${GID}
VOLUME [ /simd ]
WORKDIR /simd
EXPOSE 26656 26657
ENTRYPOINT ["/usr/bin/wrapper.sh"]
CMD ["start"]
STOPSIGNAL SIGTERM

COPY wrapper.sh /usr/bin/wrapper.sh
25 changes: 25 additions & 0 deletions contrib/images/simd-env/wrapper.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env sh

BINARY=/simd/${BINARY:-simd}
ID=${ID:-0}
LOG=${LOG:-simd.log}

if ! [ -f "${BINARY}" ]; then
echo "The binary $(basename "${BINARY}") cannot be found. Please add the binary to the shared folder. Please use the BINARY environment variable if the name of the binary is not 'simd'"
exit 1
fi

BINARY_CHECK="$(file "$BINARY" | grep 'ELF 64-bit LSB executable, x86-64')"

if [ -z "${BINARY_CHECK}" ]; then
echo "Binary needs to be OS linux, ARCH amd64"
exit 1
fi

export SIMDHOME="/simd/node${ID}/simd"

if [ -d "$(dirname "${SIMDHOME}"/"${LOG}")" ]; then
"${BINARY}" --home "${SIMDHOME}" "$@" | tee "${SIMDHOME}/${LOG}"
else
"${BINARY}" --home "${SIMDHOME}" "$@"
fi
2 changes: 1 addition & 1 deletion contrib/localnet_liveness.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ fi
docker_containers=( $(docker ps -q -f name=simd --format='{{.Names}}') )

while [ ${CNT} -lt $ITER ]; do
curr_block=$(curl -s $NODEADDR:26655/status | jq -r '.result.sync_info.latest_block_height')
curr_block=$(curl -s $NODEADDR:26657/status | jq -r '.result.sync_info.latest_block_height')

if [ ! -z ${curr_block} ] ; then
echo "Number of Blocks: ${curr_block}"
Expand Down
32 changes: 14 additions & 18 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,68 +3,64 @@ version: "3"
services:
simdnode0:
container_name: simdnode0
image: "cosmos-sdk/simapp"
image: "cosmossdk/simd-env"
ports:
- "26654-26655:26656-26657"
- "1316:1317"
- "9089:9090"
command: ["simd", "start"]
- "26656-26657:26656-26657"
- "1317:1317"
- "9090:9090"
environment:
- ID=0
- LOG=${LOG:-simd.log}
volumes:
- ./build/node0/simd/:/root/.simapp:Z
- ./build:/simd:Z
networks:
localnet:
ipv4_address: 192.168.10.2

simdnode1:
container_name: simdnode1
image: "cosmos-sdk/simapp"
image: "cosmossdk/simd-env"
ports:
- "26659-26660:26656-26657"
- "26666-26667:26656-26657"
- "1318:1317"
- "9091:9090"
command: ["simd", "start"]
environment:
- ID=1
- LOG=${LOG:-simd.log}
volumes:
- ./build/node1/simd/:/root/.simapp:Z
- ./build:/simd:Z
networks:
localnet:
ipv4_address: 192.168.10.3

simdnode2:
container_name: simdnode2
image: "cosmos-sdk/simapp"
image: "cosmossdk/simd-env"
environment:
- ID=2
- LOG=${LOG:-simd.log}
command: ["simd", "start"]
ports:
- "26661-26662:26656-26657"
- "26676-26677:26656-26657"
- "1319:1317"
- "9092:9090"
volumes:
- ./build/node2/simd/:/root/.simapp:Z
- ./build:/simd:Z
networks:
localnet:
ipv4_address: 192.168.10.4

simdnode3:
container_name: simdnode3
image: "cosmos-sdk/simapp"
image: "cosmossdk/simd-env"
environment:
- ID=3
- LOG=${LOG:-simd.log}
command: ["simd", "start"]
ports:
- "26663-26664:26656-26657"
- "26686-26687:26656-26657"
- "1320:1317"
- "9093:9090"
volumes:
- ./build/node3/simd/:/root/.simapp:Z
- ./build:/simd:Z
networks:
localnet:
ipv4_address: 192.168.10.5
Expand Down

0 comments on commit 91ff9fa

Please sign in to comment.