Skip to content

refactor: refactors jormungandr entrypoint script #3640

refactor: refactors jormungandr entrypoint script

refactor: refactors jormungandr entrypoint script #3640

Workflow file for this run

name: CI
on:
push:
branches:
- master
paths:
- doc/api/**.yaml
- jormungandr-lib/**
- jormungandr/**
- jcli/**
- modules/**
- testing/**
- Cargo.*
- '!**.md'
- .github/workflows/test.yml
pull_request:
paths:
- doc/api/**.yaml
- jormungandr-lib/**
- jormungandr/**
- jcli/**
- modules/**
- testing/**
- Cargo.*
- '!**.md'
- .github/workflows/test.yml
jobs:
cache_info:
name: Bootstrap cache
runs-on: ubuntu-latest
outputs:
crates-io-index-head: ${{ steps.ls-crates-io-index.outputs.head }}
cargo-lock-hash: ${{ steps.hash-cargo-lock.outputs.hash }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- id: ls-crates-io-index
name: Get head commit hash of crates.io registry index
run: |
commit=$(
git ls-remote --heads https://github.com/rust-lang/crates.io-index.git master |
cut -f 1
)
echo "$commit"
echo "::set-output name=head::$commit"
- id: hash-cargo-lock
name: Calculate dependency cache key
run: |
hash=$(
ci/strip-own-version-from-cargo-lock.pl Cargo.lock |
sha1sum | cut -d ' ' -f 1
)
echo "$hash"
echo "::set-output name=hash::$hash"
update_deps:
name: Update dependencies
needs: cache_info
runs-on: ubuntu-latest
steps:
# This is only needed because a crate manifest uses edition2021
# that has been stabilized in a very recent Rust release.
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
default: true
- name: Cache cargo registry index
uses: actions/cache@v2
with:
path: ~/.cargo/registry/index
key: cargo-index-${{ needs.cache_info.outputs.crates-io-index-head }}
restore-keys: cargo-index-
- id: cargo-deps
name: Cache cargo dependencies
uses: actions/cache@v2
with:
path: |
~/.cargo/registry/cache
~/.cargo/git/db
key: cargo-deps-v1-${{ needs.cache_info.outputs.cargo-lock-hash }}
- name: Check out the repository
uses: actions/checkout@v2
with:
submodules: true
- name: Fetch dependencies and update cargo registry
run: cargo fetch --locked
tests:
name: Tests
needs: [cache_info, update_deps]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
profile: [debug, release]
toolchain: [stable]
include:
- os: ubuntu-latest
profile: debug
toolchain: nightly
env:
RUSTFLAGS: -D warnings
RUST_BACKTRACE: 1
CARGO_FLAGS: --verbose --locked
CARGO_INCREMENTAL: 0
steps:
- name: Set up environment variables and cargo config
shell: bash
run: |
if [ '${{ matrix.profile }}' == release ]; then
echo "CARGO_FLAGS=$CARGO_FLAGS --release" >> $GITHUB_ENV
fi
case '${{ matrix.os }}' in
ubuntu-latest) features=systemd,gelf ;;
*) features=gelf ;;
esac
echo "JORMUNGANDR_FEATURES=$features" >> $GITHUB_ENV
if [ '${{ matrix.profile }}' == debug ] && [ '${{ matrix.os }}' == windows-latest ]; then
echo "RUSTFLAGS=$RUSTFLAGS -C link-args=/STACK:2000000" >> $GITHUB_ENV
fi
mkdir .cargo
cat > .cargo/config.toml <<EOF
[profile.release]
lto = "thin"
EOF
- name: Allow long paths on Windows
if: ${{ matrix.os == 'windows-latest' }}
shell: powershell
run: |
reg add HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f
git config --system core.longpaths true
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
default: true
components: rustfmt
- name: Checkout code
uses: actions/checkout@v2
- name: Restore cargo registry index
uses: actions/cache@v2
with:
path: ~/.cargo/registry/index
key: cargo-index-${{ needs.cache_info.outputs.crates-io-index-head }}
# Caches on Windows and Unix do not interop:
# https://github.com/actions/cache/issues/362
restore-keys: cargo-index-
- name: Restore cargo dependencies
uses: actions/cache@v2
with:
path: |
~/.cargo/registry/cache
~/.cargo/git/db
key: cargo-deps-v1-${{ needs.cache_info.outputs.cargo-lock-hash }}
- name: Build jormungandr
uses: actions-rs/cargo@v1
timeout-minutes: 30
with:
command: build
args: |
--manifest-path jormungandr/Cargo.toml
--no-default-features
--features ${{ env.JORMUNGANDR_FEATURES }}
${{ env.CARGO_FLAGS }}
- name: Build jcli
uses: actions-rs/cargo@v1
timeout-minutes: 30
with:
command: build
args: -p jcli ${{ env.CARGO_FLAGS }}
- name: Build tests
uses: actions-rs/cargo@v1
timeout-minutes: 30
with:
command: build
args: --tests --all-features ${{ env.CARGO_FLAGS }}
- name: Build explorer
uses: actions-rs/cargo@v1
timeout-minutes: 30
with:
command: build
args: -p explorer ${{ env.CARGO_FLAGS }}
- name: Run tests
uses: actions-rs/cargo@v1
timeout-minutes: 90
with:
command: test
args: --tests ${{ env.CARGO_FLAGS }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# TMPDIR and TMP are used respectively on unix and windows
TMPDIR: ${{ runner.temp }}
TMP: ${{ runner.temp }}
- name: Run network tests
# Network tests are a bit flaky when run on debug builds
if: ${{ matrix.profile == 'release' }}
uses: actions-rs/cargo@v1
timeout-minutes: 90
with:
command: test
args: --tests ${{ env.CARGO_FLAGS }} --features network
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# TMPDIR and TMP are used respectively on unix and windows
TMPDIR: ${{ runner.temp }}
TMP: ${{ runner.temp }}
- name: Pack logs from failed tests
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.os }}-${{ matrix.profile }}-${{ matrix.toolchain }}-node-logs-from-failed-tests
path: ${{ runner.temp }}/jormungandr_*
retention-days: 30
lints:
name: Lints
needs: [cache_info, update_deps]
runs-on: ubuntu-latest
steps:
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
default: true
components: rustfmt, clippy
- name: Checkout code
uses: actions/checkout@v2
- name: rustfmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: -- --check
- name: Restore cargo registry index
uses: actions/cache@v2
with:
path: ~/.cargo/registry/index
key: cargo-index-${{ needs.cache_info.outputs.crates-io-index-head }}
- name: Restore cargo dependencies
uses: actions/cache@v2
with:
path: |
~/.cargo/registry/cache
~/.cargo/git/db
key: cargo-deps-v1-${{ needs.cache_info.outputs.cargo-lock-hash }}
- name: clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features --all-targets -- -D warnings
test_coverage:
name: Test Coverage
needs: update_deps
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Restore cargo registry index
uses: actions/cache@v2
with:
path: ~/.cargo/registry/index
key: cargo-index-v2-${{ needs.update_deps.outputs.crates-io-index-head }}
- name: Restore dependency crates
uses: actions/cache@v2
with:
path: ~/.cargo/registry/cache
key: cargo-deps-v2-${{ hashFiles('Cargo.lock') }}
- name: Build jormungandr
uses: actions-rs/cargo@v1
timeout-minutes: 30
with:
command: build
args: --release --all
- name: Run cargo-tarpaulin
uses: actions-rs/tarpaulin@v0.1
with:
args: '--ignore-tests --out Lcov --features network --release --skip-clean --exclude-files testing'
timeout: 3600
- name: upload to Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: './lcov.info'