diff --git a/.gitignore b/.gitignore index 75596240f..533f32ac9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,29 +3,9 @@ *.gcda # SkaleDeps specific -SkaleDeps/build -SkaleDeps/deps_inst -SkaleDeps/*.tar.gz -SkaleDeps/*.tar.xz -SkaleDeps/*.zip -SkaleDeps/saved_environment_on_startup.txt -SkaleDeps/saved_environment_pre_configured.txt -SkaleDeps/argtable2 -SkaleDeps/boost_1_68_0 -SkaleDeps/curl -SkaleDeps/libiconv-1.15 -SkaleDeps/openssl -SkaleDeps/libuv -SkaleDeps/libwebsockets -SkaleDeps/zlib -SkaleDeps/nettle-2.0 -SkaleDeps/nettle-3.4.1 -SkaleDeps/libtasn1 -SkaleDeps/gnutls-3.6.5 -SkaleDeps/libmicrohttpd -SkaleDeps/jsoncpp -SkaleDeps/libjson-rpc-cpp -SkaleDeps/libcryptopp +SkaleDeps/* +!SkaleDeps/build.sh +!SkaleDeps/clean.sh # Compiled Object files *.slo diff --git a/.gitmodules b/.gitmodules index d539d545b..bc6c93de7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,8 +8,7 @@ branch = a4f7029371961b2ac4727e76eb721b86627a78d3 [submodule "libconsensus"] path = libconsensus - url = git@github.com:skalelabs/skale-consensus.git - branch = develop + url = https://github.com/skalenetwork/skale-consensus.git [submodule "test/jsontests"] path = test/jsontests - url = git@github.com:skalenetwork/skaled-tests.git + url = https://github.com/skalenetwork/skaled-tests.git diff --git a/.travis.yml b/.travis.yml index cd1a17dc5..303829d8c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,28 +25,89 @@ language: cpp env: global: - - TRAVIS_TESTS=On -matrix: + - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" + - TARGET=all +os: linux +dist: xenial +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-7 + - texinfo + - lcov + - clang-format-6.0 +jobs: include: - - os: linux - dist: xenial - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - - texinfo - - lcov - - clang-format-6.0 - - libboost-all-dev - - libssl-dev + - stage: test env: - - ZIP_SUFFIX=ubuntu-xenial - - CMAKE_BUILD_TYPE=Debug - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" -git: - depth: 2 + - CMAKE_BUILD_TYPE=Debug + - CODE_COVERAGE=ON + after_success: + # run tests + - cd test + - ./testeth + - cd .. + + # Create lcov report + - lcov --capture --directory . --output-file coverage.info + - lcov --remove coverage.info '/usr/*' --output-file coverage.info # filter system-files + - lcov --remove coverage.info 'SkaleDeps/*' --output-file coverage.info # filter dependency files + - lcov --remove coverage.info '.hunter/*' --output-file coverage.info # filter dependency files + - lcov --list coverage.info # debug info + + # Uploading report to CodeCov + - bash <(curl -s https://codecov.io/bash) -f coverage.info -t $CODECOV_TOKEN || echo "Codecov did not collect coverage reports" + + - stage: deploy + if: branch IN (master, release-candidate) + env: + - CMAKE_BUILD_TYPE=Debug + - CODE_COVERAGE=OFF + - TARGET=skaled + after_success: + - cp skaled/skaled ../scripts/skale_build/executable/ + - export VERSION=$(cat ../VERSION) + - export VERSION=$( (test $TRAVIS_BRANCH = "master" && echo $VERSION) || ../scripts/calculate_rc_version.sh $VERSION) + - echo "Version $VERSION" + - cd ../scripts/skale_build + - ./build_image.sh $VERSION + - cd ../../build + before_deploy: + # Set up git user name and tag this commit + - ( + test ! $TRAVIS_TAG && + git config --local user.name "skale-jenkins" && + git config --local user.email "$GITHUB_EMAIL" && + export TRAVIS_TAG=v$VERSION && + git tag "$TRAVIS_TAG" + ) || true + deploy: + - provider: releases + api_key: "$GITHUB_OAUTH_TOKEN" + skip_cleanup: true + file: + - skaled/skaled + on: + repo: skalenetwork/skaled + branch: master + - provider: releases + api_key: "$GITHUB_OAUTH_TOKEN" + skip_cleanup: true + prerelease: true + file: + - skaled/skaled + on: + repo: skalenetwork/skaled + branch: release-candidate + - provider: script + script: bash ../scripts/skale_build/deploy_image.sh $VERSION $DOCKER_USERNAME $DOCKER_PASSWORD + on: + repo: skalenetwork/skaled + branch: + - master + - release-candidate cache: ccache: true directories: @@ -66,24 +127,10 @@ script: # configure - mkdir -p build - cd build - - cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCOVERAGE=ON .. + - cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCOVERAGE=$CODE_COVERAGE .. # check code style - make format-check || travis_terminate 1; # build - - make -j$(nproc) - - # run tests - - cd test - - ./testeth - - cd .. -after_success: - # Create lcov report - - lcov --capture --directory . --output-file coverage.info - - lcov --remove coverage.info '/usr/*' --output-file coverage.info # filter system-files - - lcov --remove coverage.info 'SkaleDeps/*' --output-file coverage.info # filter dependency files - - lcov --remove coverage.info '.hunter/*' --output-file coverage.info # filter dependency files - - lcov --list coverage.info # debug info - # Uploading report to CodeCov - - bash <(curl -s https://codecov.io/bash) -f coverage.info -t $CODECOV_TOKEN || echo "Codecov did not collect coverage reports" + - cmake --build . --target $TARGET -- -j$(nproc) diff --git a/README.md b/README.md index c61bc753a..1f37138f6 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,6 @@ Learn more about the SKALE community over on [Discord](https://discord.gg/vvUtWJ All contributions are made under the [GNU General Public License v3](https://www.gnu.org/licenses/gpl-3.0.en.html). See [LICENSE](LICENSE). -All original cpp-ethereum code Copyright (C) Aleth Authors. -All cpp-ethereum modifications Copyright (C) SKALE Labs. +All original cpp-ethereum code Copyright (C) Aleth Authors. +All cpp-ethereum modifications Copyright (C) SKALE Labs. All skaled code Copyright (C) SKALE Labs. \ No newline at end of file diff --git a/libconsensus b/libconsensus index 01712dbf4..7a59f6032 160000 --- a/libconsensus +++ b/libconsensus @@ -1 +1 @@ -Subproject commit 01712dbf49d4ee097a0a73abf19990ded5f1cfdc +Subproject commit 7a59f60321a8bca677b9d0a05ad78dc2bced6d3f diff --git a/scripts/calculate_rc_version.sh b/scripts/calculate_rc_version.sh new file mode 100755 index 000000000..1cdb0e93f --- /dev/null +++ b/scripts/calculate_rc_version.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +VERSION=$1 + +if [ -z $VERSION ]; then + echo "The base version is not set." + exit 1 +fi + +git fetch --tags + +for (( RC_NUMBER=0; ; RC_NUMBER++ )) +do + RC_VERSION="$VERSION-rc.$RC_NUMBER" + if ! [ $(git tag -l ?$RC_VERSION) ]; then + echo $RC_VERSION + break + fi +done diff --git a/scripts/skale_build/Dockerfile b/scripts/skale_build/Dockerfile index 62f42a397..a4758b404 100644 --- a/scripts/skale_build/Dockerfile +++ b/scripts/skale_build/Dockerfile @@ -2,16 +2,12 @@ FROM ubuntu:16.04 RUN apt-get -q update && \ apt-get -qy install \ - software-properties-common \ - curl \ libgmp-dev \ libleveldb-dev \ - nettle-bin \ gnutls-bin \ - python3 \ python3-pip diff --git a/scripts/skale_build/README.md b/scripts/skale_build/README.md deleted file mode 100644 index 18159b942..000000000 --- a/scripts/skale_build/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Skale build - -##### How to build sChain container? - -###### 1) Install requirements - -```bash -pip install -r requirements.txt -``` - -###### 2) Copy new `skaled` executable to `scripts/skale_build/executable` directory - -###### 3) Run build script - -```bash -BUMP_VERSION=patch/minor/major python build_image.py -``` - diff --git a/scripts/skale_build/build_image.py b/scripts/skale_build/build_image.py deleted file mode 100644 index 455574608..000000000 --- a/scripts/skale_build/build_image.py +++ /dev/null @@ -1,78 +0,0 @@ -import logging -import json -import os -import semver -import docker -from docker import APIClient - -import os, sys, logging -from logging import Formatter, StreamHandler - -handlers = [] -formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') - -stream_handler = StreamHandler(sys.stderr) -stream_handler.setFormatter(formatter) -stream_handler.setLevel(logging.INFO) -handlers.append(stream_handler) - -logging.basicConfig(level=logging.DEBUG, handlers=handlers) - - -CONFIG_FILENAME = 'config.json' -HERE = os.path.dirname(os.path.realpath(__file__)) -config_path = os.path.join(HERE, CONFIG_FILENAME) -dockerfile_path = HERE - -DOCKER_USERNAME = os.environ.get('DOCKER_USERNAME') -DOCKER_PASSWORD = os.environ.get('DOCKER_PASSWORD') -BUMP_VERSION = os.environ['BUMP_VERSION'] - -with open(config_path, encoding='utf-8') as data_file: - config = json.loads(data_file.read()) - -docker_client = docker.from_env() -cli = APIClient() - -logger = logging.getLogger(__name__) - -if DOCKER_USERNAME and DOCKER_PASSWORD: - docker_client.login(username=DOCKER_USERNAME, password=DOCKER_PASSWORD) - - -def bump_version(increment): - return getattr(semver, f'bump_{increment}')(config['version']) - -def save_new_config(path, config): - with open(path, 'w') as data_file: - json.dump(config, data_file) - -def build_image(): - logger.info(f'Building container: {config["name"]}') - new_version = bump_version(BUMP_VERSION) - - logger.info(f'Bumping {config["name"]} container version: {config["version"]} => {new_version}') - - config['version'] = new_version - save_new_config(config_path, config) - - tag = f'{config["name"]}:{new_version}' - logger.info(f'Building image: {tag}') - for line in cli.build(path=dockerfile_path, tag=tag): - logger.info(line) - logger.info(f'Build done: {tag}') - -def push_image(): - fullname = construct_image_fullname(config['name'], config['version']) - logger.info(f'Pushing {fullname}') - for line in cli.push(config['name'], tag=config['version'], stream=True): - logger.info(line) - logger.info(f'Push done: {fullname}') - -def construct_image_fullname(name, version): - return f"{name}:{version}" - - -if __name__ == "__main__": - build_image() - push_image() diff --git a/scripts/skale_build/build_image.sh b/scripts/skale_build/build_image.sh new file mode 100755 index 000000000..95f9f02cb --- /dev/null +++ b/scripts/skale_build/build_image.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +VERSION=$1 +IMAGE_NAME=skalelabshub/schain:$VERSION + +echo "Build image $IMAGE_NAME" + +docker build -t $IMAGE_NAME . diff --git a/scripts/skale_build/config.json b/scripts/skale_build/config.json deleted file mode 100644 index 552857f35..000000000 --- a/scripts/skale_build/config.json +++ /dev/null @@ -1 +0,0 @@ -{"version": "0.0.40", "name": "skalelabshub/schain"} \ No newline at end of file diff --git a/scripts/skale_build/deploy_image.sh b/scripts/skale_build/deploy_image.sh new file mode 100755 index 000000000..9cb9dd155 --- /dev/null +++ b/scripts/skale_build/deploy_image.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +VERSION=$1 +DOCKER_USERNAME=$2 +DOCKER_PASSWORD=$3 +IMAGE_NAME=skalelabshub/schain:$VERSION + +docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD +docker push $IMAGE_NAME diff --git a/scripts/skale_build/requirements.txt b/scripts/skale_build/requirements.txt deleted file mode 100644 index 9e4c5dcd9..000000000 --- a/scripts/skale_build/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -semver==2.8.1 -docker