diff --git a/.github/workflows/docker-ci-test.yaml b/.github/workflows/docker-ci-test.yaml
index 4534271f..3de75f3e 100644
--- a/.github/workflows/docker-ci-test.yaml
+++ b/.github/workflows/docker-ci-test.yaml
@@ -13,6 +13,11 @@ jobs:
deploy-test:
runs-on: ubuntu-latest
steps:
+ - name: Cancel Previous Runs
+ uses: styfle/cancel-workflow-action@0.6.0
+ with:
+ access_token: ${{ secrets.GITHUB_TOKEN }}
+
- name: Login to Artifact Registry/GCR
uses: docker/login-action@v2
with:
@@ -30,6 +35,8 @@ jobs:
- name: Create .env file
run: |
+ GIT_BRANCH=${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}}
+ echo "GIT_BRANCH=$GIT_BRANCH" >> $GITHUB_ENV
touch .env
echo WEB3_JWT=${{ secrets.WEB3_JWT }} >> .env
echo IPFS_PINNER_URL=${{ secrets.IPFS_PINNER_URL }} >> .env
@@ -37,6 +44,13 @@ jobs:
echo NODE_ETHEREUM_MAINNET=${{ secrets.NODE_ETHEREUM_MAINNET }} >> .env
echo BLOCK_RESULT_OPERATOR_PRIVATE_KEY=${{ secrets.BLOCK_RESULT_OPERATOR_PRIVATE_KEY }} >> .env
echo EVM_SERVER_URL=${{ secrets.EVM_SERVER_URL }} >> .env
+ echo CI=${{ secrets.CI }} >> .env
+ echo CODECOV_TOKEN=${{ secrets.CODECOV_TOKEN }} >> .env
+ echo GITHUB_REF=${{ github.ref_name }} >> .env
+ echo CODECOV_SLUG=covalenthq/rudder >> .env
+ echo GITHUB_SHA=$GITHUB_SHA >> .env
+ echo GITHUB_HEAD_REF=$GITHUB_HEAD_REF >> .env
+ echo GITHUB_ENV=$GITHUB_ENV >> .env
cat .env
- name: Load .env file
diff --git a/Dockerfile b/Dockerfile
index 6569de57..ece656a3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -29,27 +29,27 @@ FROM elixir:1.14.3-otp-24 as deployer
RUN apt-get update && apt-get install -y git bash curl netcat-traditional && apt-get clean && rm -rf /var/lib/apt/lists/*
-RUN mkdir -p /app/_build /app/config /app/deps /app/lib /app/priv node/test /app/test-data
+RUN mkdir -p /mix/_build /mix/config /mix/deps /mix/lib /mix/priv node/test /mix/test-data
# used in case alpine image are used
# RUN apk update && apk add --no-cache git=2.36.3-r0 bash=5.1.16-r2 curl=7.83.1-r4 go=1.18.7-r0 make=4.3-r0 gcc=11.2.1_git20220219-r2
WORKDIR /app
RUN mix local.hex --force
RUN mix local.rebar --force
-COPY --from=builder-elixir /mix/_build /app/_build
-COPY --from=builder-elixir /mix/config /app/config
-COPY --from=builder-elixir /mix/deps /app/deps
-COPY --from=builder-elixir /mix/lib /app/lib
-COPY --from=builder-elixir /mix/priv /app/priv
-COPY --from=builder-elixir /mix/mix.exs /app/
-COPY --from=builder-elixir /mix/mix.lock /app/
-# COPY --from=builder-elixir /mix/_build/dev/rel/rudder/ /app/prod/
-COPY --from=builder-elixir /mix/test/ /app/test
-COPY --from=builder-elixir /mix/test-data/ /app/test-data
+COPY --from=builder-elixir /mix/_build /mix/_build
+COPY --from=builder-elixir /mix/config /mix/config
+COPY --from=builder-elixir /mix/deps /mix/deps
+COPY --from=builder-elixir /mix/lib /mix/lib
+COPY --from=builder-elixir /mix/priv /mix/priv
+COPY --from=builder-elixir /mix/mix.exs /mix/
+COPY --from=builder-elixir /mix/mix.lock /mix/
+# COPY --from=builder-elixir /mix/_build/dev/rel/rudder/ /mix/prod/
+COPY --from=builder-elixir /mix/test/ /mix/test
+COPY --from=builder-elixir /mix/test-data/ /mix/test-data
# Used only for testing in compose
# CMD [ "mix", "test", "./test/block_specimen_decoder_test.exs", "./test/block_result_uploader_test.exs"]
-CMD ["/app/prod/bin/rudder", "start"]
+CMD ["/mix/prod/bin/rudder", "start"]
EXPOSE 9568
\ No newline at end of file
diff --git a/README.md b/README.md
index c02b3cc7..2461c71b 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,9 @@
+
+
+
diff --git a/docker-compose-ci.yml b/docker-compose-ci.yml
index f94d4e0a..bcf713a1 100644
--- a/docker-compose-ci.yml
+++ b/docker-compose-ci.yml
@@ -87,6 +87,7 @@ services:
echo "hardhat-node-address:" $NODE_ETHEREUM_MAINNET;
echo "brp-op-pk:" $BLOCK_RESULT_OPERATOR_PRIVATE_KEY;
echo "evm-server-address:" $EVM_SERVER_URL;
+ echo "code-test-coverage:" $CODECOV_TOKEN;
echo Waiting for proof-chain to be deployed...;
while ! nc -v -l -k -p 8008;
do
@@ -97,14 +98,19 @@ services:
curl -F "filedata=@/app/test-data/codec-0.35/encoded/1-17090940-replica-0x7b8e1d463a0fbc6fce05b31c5c30e605aa13efaca14a1f3ba991d33ea979b12b" http://ipfs-pinner:3001/upload;
curl -F "filedata=@/app/test-data/codec-0.35/encoded/1-17090960-replica-0xc95d44182ee006e79f1352ef32664210f383baa016988d5ab2fd950b52bf22ff" http://ipfs-pinner:3001/upload;
echo Test bsp files uploaded!;
- cd /app;
- MIX_ENV=docker mix test --trace --slowest 10;
- exit $?;"
+ cd /mix;
+ MIX_ENV=docker mix coveralls.json;
+ curl -Os https://uploader.codecov.io/latest/linux/codecov;
+ chmod +x codecov;
+ ./codecov -t $CODECOV_TOKEN -C $GITHUB_SHA -r $CODECOV_SLUG -B $GITHUB_HEAD_REF;
+ exit 0; "
environment:
- NODE_ETHEREUM_MAINNET=${NODE_ETHEREUM_MAINNET}
- BLOCK_RESULT_OPERATOR_PRIVATE_KEY=${BLOCK_RESULT_OPERATOR_PRIVATE_KEY}
- EVM_SERVER_URL=${EVM_SERVER_URL}
- IPFS_PINNER_URL=${IPFS_PINNER_URL}
+ - CODECOV_TOKEN=${CODECOV_TOKEN}
+ - CI=${CI}
networks:
- cqt-net
diff --git a/docker-compose-mbase.yml b/docker-compose-mbase.yml
index 21776ccd..9738e072 100644
--- a/docker-compose-mbase.yml
+++ b/docker-compose-mbase.yml
@@ -1,4 +1,4 @@
-version: '3'
+version: "3"
# runs the entire rudder pipeline with all supporting services (including rudder) in docker
# set .env such that all services in docker are talking to each other only
@@ -53,7 +53,7 @@ services:
echo "moonbase-node:" $NODE_ETHEREUM_MAINNET;
echo "evm-server:" $EVM_SERVER_URL;
echo "ipfs-node:" $IPFS_PINNER_URL;
- cd /app;
+ cd /mix;
MIX_ENV=dev mix release --overwrite;
MIX_ENV=dev mix run --no-halt --eval 'Rudder.ProofChain.BlockSpecimenEventListener.start()';"
environment:
@@ -64,16 +64,16 @@ services:
networks:
- cqt-net
ports:
- - "9568:9568" # prometheus metrics will be exported at http://localhost:9568/metrics etc.
+ - "9568:9568" # prometheus metrics will be exported at http://localhost:9568/metrics etc.
autoheal:
image: willfarrell/autoheal
container_name: autoheal
volumes:
- - '/var/run/docker.sock:/var/run/docker.sock'
+ - "/var/run/docker.sock:/var/run/docker.sock"
environment:
- AUTOHEAL_INTERVAL=10
- CURL_TIMEOUT=30
networks:
- cqt-net:
\ No newline at end of file
+ cqt-net:
diff --git a/docker-compose-mbeam.yml b/docker-compose-mbeam.yml
index d5aa1d75..c15a0bf8 100644
--- a/docker-compose-mbeam.yml
+++ b/docker-compose-mbeam.yml
@@ -1,4 +1,4 @@
-version: '3'
+version: "3"
# runs the entire rudder pipeline with all supporting services (including rudder) in docker
# set .env such that all services in docker are talking to each other only
services:
@@ -54,7 +54,7 @@ services:
echo "moonbeam-node:" $NODE_ETHEREUM_MAINNET;
echo "evm-server:" $EVM_SERVER_URL;
echo "ipfs-node:" $IPFS_PINNER_URL;
- cd /app;
+ cd /mix;
MIX_ENV=prod mix release --overwrite;
MIX_ENV=prod mix run --no-halt --eval 'Rudder.ProofChain.BlockSpecimenEventListener.start()';"
environment:
@@ -71,7 +71,7 @@ services:
image: willfarrell/autoheal
container_name: autoheal
volumes:
- - '/var/run/docker.sock:/var/run/docker.sock'
+ - "/var/run/docker.sock:/var/run/docker.sock"
environment:
- AUTOHEAL_INTERVAL=10
- CURL_TIMEOUT=30
diff --git a/mix.exs b/mix.exs
index 71740afb..a8906684 100644
--- a/mix.exs
+++ b/mix.exs
@@ -7,7 +7,14 @@ defmodule Rudder.MixProject do
version: "0.2.15",
elixir: "~> 1.14.3",
start_permanent: Mix.env() == :prod,
- deps: deps()
+ deps: deps(),
+ test_coverage: [tool: ExCoveralls, export: "cov"],
+ preferred_cli_env: [
+ coveralls: :docker,
+ "coveralls.detail": :docker,
+ "coveralls.post": :docker,
+ "coveralls.html": :docker
+ ]
]
end
@@ -64,6 +71,7 @@ defmodule Rudder.MixProject do
# static code analysis
{:dialyxir, "~> 1.0", only: [:dev], runtime: false},
{:credo, "~> 1.6", only: [:dev, :test], runtime: false},
+ {:excoveralls, "~> 0.10", only: [:test, :docker], runtime: false},
# avro tools
{:avrora, "~> 0.21"},
diff --git a/mix.lock b/mix.lock
index 74556deb..c86f9a55 100644
--- a/mix.lock
+++ b/mix.lock
@@ -23,6 +23,7 @@
"ex_keccak": {:hex, :ex_keccak, "0.7.3", "33298f97159f6b0acd28f6e96ce5ea975a0f4a19f85fe615b4f4579b88b24d06", [:mix], [{:rustler, ">= 0.0.0", [hex: :rustler, repo: "hexpm", optional: true]}, {:rustler_precompiled, "~> 0.6.1", [hex: :rustler_precompiled, repo: "hexpm", optional: false]}], "hexpm", "4c5e6d9d5f77b64ab48769a0166a9814180d40ced68ed74ce60a5174ab55b3fc"},
"ex_rlp": {:hex, :ex_rlp, "0.6.0", "985391d2356a7cb8712a4a9a2deb93f19f2fbca0323f5c1203fcaf64d077e31e", [:mix], [], "hexpm", "7135db93b861d9e76821039b60b00a6a22d2c4e751bf8c444bffe7a042f1abaf"},
"ex_secp256k1": {:hex, :ex_secp256k1, "0.7.2", "33398c172813b90fab9ab75c12b98d16cfab472c6dcbde832b13c45ce1c01947", [:mix], [{:rustler, ">= 0.0.0", [hex: :rustler, repo: "hexpm", optional: true]}, {:rustler_precompiled, "~> 0.6", [hex: :rustler_precompiled, repo: "hexpm", optional: false]}], "hexpm", "f3b1bf56e6992e28b9d86e3bf741a4aca3e641052eb47d13ae4f5f4d4944bdaf"},
+ "excoveralls": {:hex, :excoveralls, "0.16.1", "0bd42ed05c7d2f4d180331a20113ec537be509da31fed5c8f7047ce59ee5a7c5", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "dae763468e2008cf7075a64cb1249c97cb4bc71e236c5c2b5e5cdf1cfa2bf138"},
"expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"finch": {:hex, :finch, "0.16.0", "40733f02c89f94a112518071c0a91fe86069560f5dbdb39f9150042f44dcfb1a", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5"},