defaults: # The default for tags is to not run, so we have to explicitly match a filter. - build_on_tags: &build_on_tags filters: tags: only: /.*/ version: 2 jobs: build_emscripten: docker: - image: trzeci/emscripten:sdk-tag-1.37.21-64bit steps: - checkout - restore_cache: name: Restore Boost build key: &boost-cache-key emscripten-boost-{{ checksum "scripts/travis-emscripten/install_deps.sh" }}{{ checksum "scripts/travis-emscripten/build_emscripten.sh" }} - run: name: Bootstrap Boost command: | scripts/travis-emscripten/install_deps.sh - run: name: Build command: | scripts/travis-emscripten/build_emscripten.sh - save_cache: name: Save Boost build key: *boost-cache-key paths: - boost_1_57_0 - store_artifacts: path: build/libsolc/soljson.js destination: soljson.js - run: mkdir -p workspace - run: cp build/libsolc/soljson.js workspace/soljson.js - run: scripts/get_version.sh > workspace/version.txt - persist_to_workspace: root: workspace paths: - soljson.js - version.txt test_emscripten_solcjs: docker: - image: trzeci/emscripten:sdk-tag-1.37.21-64bit steps: - checkout - attach_workspace: at: /tmp/workspace - run: name: Install external tests deps command: | apt-get -qq update apt-get -qy install netcat curl curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | NVM_DIR=/usr/local/nvm bash export NVM_DIR="/usr/local/nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm nvm --version nvm install 8 node --version npm --version - run: name: Test solcjs command: | . /usr/local/nvm/nvm.sh test/solcjsTests.sh /tmp/workspace/soljson.js $(cat /tmp/workspace/version.txt) test_emscripten_external: docker: - image: trzeci/emscripten:sdk-tag-1.37.21-64bit steps: - checkout - attach_workspace: at: /tmp/workspace - run: name: Install external tests deps command: | apt-get -qq update apt-get -qy install netcat curl curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | NVM_DIR=/usr/local/nvm bash export NVM_DIR="/usr/local/nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm nvm --version nvm install 8 node --version npm --version - run: name: External tests command: | . /usr/local/nvm/nvm.sh test/externalTests.sh /tmp/workspace/soljson.js || test/externalTests.sh /tmp/workspace/soljson.js build_x86: docker: - image: buildpack-deps:artful steps: - checkout - run: name: Install build dependencies command: | apt-get -qq update apt-get -qy install cmake libboost-regex-dev libboost-filesystem-dev libboost-test-dev libboost-system-dev libboost-program-options-dev libz3-dev - run: name: Store commit hash and prerelease command: | if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" ]; then echo -n > prerelease.txt; else date -u +"nightly.%Y.%-m.%-d" > prerelease.txt; fi echo -n "$CIRCLE_SHA1" > commit_hash.txt - run: name: Build command: | mkdir -p build cd build cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo make -j4 - store_artifacts: path: build/solc/solc destination: solc - persist_to_workspace: root: build paths: - solc/solc - test/soltest - test/tools/solfuzzer test_x86: docker: - image: buildpack-deps:artful steps: - checkout - attach_workspace: at: build - run: name: Install dependencies command: | apt-get -qq update apt-get -qy install libz3-dev libleveldb1v5 - run: mkdir -p test_results - run: name: Tests command: scripts/tests.sh --junit_report test_results - store_test_results: path: test_results/ docs: docker: - image: buildpack-deps:artful steps: - checkout - run: name: Install build dependencies command: | apt-get -qq update apt-get -qy install python-sphinx - run: name: Store commit hash and prerelease command: | if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" ]; then echo -n > prerelease.txt; else date -u +"nightly.%Y.%-m.%-d" > prerelease.txt; fi echo -n "$CIRCLE_SHA1" > commit_hash.txt - run: name: Build documentation command: ./scripts/docs.sh - store_artifacts: path: docs/_build/html/ destination: docs-html workflows: version: 2 build_all: jobs: - build_emscripten: *build_on_tags - test_emscripten_solcjs: <<: *build_on_tags requires: - build_emscripten - test_emscripten_external: <<: *build_on_tags requires: - build_emscripten - build_x86: *build_on_tags - test_x86: <<: *build_on_tags requires: - build_x86 - docs: *build_on_tags