You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
471 lines
16 KiB
471 lines
16 KiB
name: Blockscout
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
MIX_ENV: test
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- name: "ELIXIR_VERSION.lock"
|
|
run: echo "${ELIXIR_VERSION}" > ELIXIR_VERSION.lock
|
|
- name: "OTP_VERSION.lock"
|
|
run: echo "${OTP_VERSION}" > OTP_VERSION.lock
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
credo:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- run: mix credo
|
|
check_formatted:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- run: mix format --check-formatted
|
|
dialyzer:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Unpack PLT cache
|
|
run: |
|
|
mkdir -p _build/test
|
|
cp plts/dialyxir*.plt _build/test/ || true
|
|
mkdir -p ~/.mix
|
|
cp plts/dialyxir*.plt ~/.mix/ || true
|
|
- run: mix dialyzer --plt
|
|
- name: Pack PLT cache
|
|
run: |
|
|
mkdir -p plts
|
|
cp _build/test/dialyxir*.plt plts/
|
|
cp ~/.mix/dialyxir*.plt plts/
|
|
- run: mix dialyzer --halt-exit-status
|
|
gettext:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- run: |
|
|
mix gettext.extract --merge | tee stdout.txt
|
|
! grep "Wrote " stdout.txt
|
|
working-directory: "apps/block_scout_web"
|
|
sobelow:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: mix deps.compile
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Scan explorer for vulnerabilities
|
|
run: mix sobelow --config
|
|
working-directory: "apps/explorer"
|
|
- name: Scan block_scout_web for vulnerabilities
|
|
run: mix sobelow --config
|
|
working-directory: "apps/block_scout_web"
|
|
eslint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
- run: ./node_modules/.bin/eslint --format=junit --output-file="test/eslint/junit.xml" js/**
|
|
working-directory: apps/block_scout_web/assets
|
|
jest:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
- run: ./node_modules/.bin/jest
|
|
working-directory: apps/block_scout_web/assets
|
|
test_parity_mox_ethereum_jsonrpc:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
# Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database
|
|
POSTGRES_DB: explorer_test
|
|
# match PGPASSWORD for elixir image above
|
|
POSTGRES_PASSWORD: postgres
|
|
# match PGUSER for elixir image above
|
|
POSTGRES_USER: postgres
|
|
# Set health checks to wait until postgres has started
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
- run: ./bin/install_chrome_headless.sh
|
|
- name: mix test --exclude no_parity
|
|
run: |
|
|
cd apps/ethereum_jsonrpc
|
|
mix test --no-start --exclude no_parity
|
|
env:
|
|
# match POSTGRES_PASSWORD for postgres image below
|
|
PGPASSWORD: postgres
|
|
# match POSTGRES_USER for postgres image below
|
|
PGUSER: postgres
|
|
ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Parity.Mox"
|
|
ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox"
|
|
test_parity_mox_explorer:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
# Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database
|
|
POSTGRES_DB: explorer_test
|
|
# match PGPASSWORD for elixir image above
|
|
POSTGRES_PASSWORD: postgres
|
|
# match PGUSER for elixir image above
|
|
POSTGRES_USER: postgres
|
|
# Set health checks to wait until postgres has started
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
- run: ./bin/install_chrome_headless.sh
|
|
- name: mix test --exclude no_parity
|
|
run: |
|
|
mix ecto.create --quiet
|
|
mix ecto.migrate
|
|
cd apps/explorer
|
|
mix test --no-start --exclude no_parity
|
|
env:
|
|
# match POSTGRES_PASSWORD for postgres image below
|
|
PGPASSWORD: postgres
|
|
# match POSTGRES_USER for postgres image below
|
|
PGUSER: postgres
|
|
ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Parity.Mox"
|
|
ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox"
|
|
test_parity_mox_indexer:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
# Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database
|
|
POSTGRES_DB: explorer_test
|
|
# match PGPASSWORD for elixir image above
|
|
POSTGRES_PASSWORD: postgres
|
|
# match PGUSER for elixir image above
|
|
POSTGRES_USER: postgres
|
|
# Set health checks to wait until postgres has started
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
- run: ./bin/install_chrome_headless.sh
|
|
- name: mix test --exclude no_parity
|
|
run: |
|
|
mix ecto.create --quiet
|
|
mix ecto.migrate
|
|
cd apps/indexer
|
|
mix test --no-start --exclude no_parity
|
|
env:
|
|
# match POSTGRES_PASSWORD for postgres image below
|
|
PGPASSWORD: postgres
|
|
# match POSTGRES_USER for postgres image below
|
|
PGUSER: postgres
|
|
ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Parity.Mox"
|
|
ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox"
|
|
test_parity_mox_block_scout_web:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
# Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database
|
|
POSTGRES_DB: explorer_test
|
|
# match PGPASSWORD for elixir image above
|
|
POSTGRES_PASSWORD: postgres
|
|
# match PGUSER for elixir image above
|
|
POSTGRES_USER: postgres
|
|
# Set health checks to wait until postgres has started
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
- run: ./bin/install_chrome_headless.sh
|
|
- name: mix test --exclude no_parity
|
|
run: |
|
|
mix ecto.create --quiet
|
|
mix ecto.migrate
|
|
cd apps/block_scout_web
|
|
mix test --no-start --exclude no_parity
|
|
env:
|
|
# match POSTGRES_PASSWORD for postgres image below
|
|
PGPASSWORD: postgres
|
|
# match POSTGRES_USER for postgres image below
|
|
PGUSER: postgres
|
|
ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Parity.Mox"
|
|
ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox"
|
|
coveralls:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
# Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database
|
|
POSTGRES_DB: explorer_test
|
|
# match PGPASSWORD for elixir image above
|
|
POSTGRES_PASSWORD: postgres
|
|
# match PGUSER for elixir image above
|
|
POSTGRES_USER: postgres
|
|
# Set health checks to wait until postgres has started
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-elixir@v1
|
|
with:
|
|
otp-version: '22.2'
|
|
elixir-version: '1.10.4'
|
|
- run: mix local.hex --force
|
|
- run: mix local.rebar --force
|
|
- run: mix deps.get
|
|
- run: npm install
|
|
working-directory: apps/explorer
|
|
- run: npm install
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: npm rebuild node-sass
|
|
working-directory: apps/block_scout_web/assets
|
|
- run: mix compile
|
|
- run: make
|
|
working-directory: "deps/libsecp256k1"
|
|
- name: Build assets
|
|
run: node node_modules/webpack/bin/webpack.js --mode development
|
|
working-directory: "apps/block_scout_web/assets"
|
|
- run: ./bin/install_chrome_headless.sh
|
|
- name: prepare DB
|
|
run: |
|
|
mix ecto.create --quiet
|
|
mix ecto.migrate
|
|
env:
|
|
# match POSTGRES_PASSWORD for postgres image below
|
|
PGPASSWORD: postgres
|
|
# match POSTGRES_USER for postgres image below
|
|
PGUSER: postgres
|
|
- name: coveralls
|
|
run: mix coveralls.github
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
# match POSTGRES_PASSWORD for postgres image below
|
|
PGPASSWORD: postgres
|
|
# match POSTGRES_USER for postgres image below
|
|
PGUSER: postgres
|
|
ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Parity.Mox"
|
|
ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox" |