diff options
Diffstat (limited to '.circleci/config.yml')
-rw-r--r-- | .circleci/config.yml | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..30dccead --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,242 @@ +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: /.*/ + - setup_prerelease_commit_hash: &setup_prerelease_commit_hash + 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_build: &run_build + name: Build + command: | + mkdir -p build + cd build + cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo + make -j4 + - run_tests: &run_tests + name: Tests + command: scripts/tests.sh --junit_report test_results + - solc_artifact: &solc_artifact + path: build/solc/solc + destination: solc + - all_artifacts: &all_artifacts + root: build + paths: + - solc/solc + - test/soltest + - test/tools/solfuzzer + +version: 2 +jobs: + build_emscripten: + docker: + - image: trzeci/emscripten:sdk-tag-1.37.21-64bit + environment: + TERM: xterm + 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 + environment: + TERM: xterm + 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 + environment: + TERM: xterm + 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_linux: + docker: + - image: buildpack-deps:artful + environment: + TERM: xterm + 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 + ./scripts/install_obsolete_jsoncpp_1_7_4.sh + - run: *setup_prerelease_commit_hash + - run: *run_build + - store_artifacts: *solc_artifact + - persist_to_workspace: *all_artifacts + + build_x86_mac: + macos: + xcode: "9.0" + environment: + TERM: xterm + steps: + - checkout + - run: + name: Install build dependencies + command: | + brew update + brew upgrade + brew unlink python + brew install z3 + brew install boost + brew install cmake + brew install wget + ./scripts/install_obsolete_jsoncpp_1_7_4.sh + - run: *setup_prerelease_commit_hash + - run: *run_build + - store_artifacts: *solc_artifact + - persist_to_workspace: *all_artifacts + + test_x86_linux: + docker: + - image: buildpack-deps:artful + environment: + TERM: xterm + 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: *run_tests + - store_test_results: + path: test_results/ + + test_x86_mac: + macos: + xcode: "9.0" + environment: + TERM: xterm + steps: + - checkout + - attach_workspace: + at: build + - run: + name: Install dependencies + command: | + brew update + brew upgrade + brew unlink python + brew install z3 + - run: mkdir -p test_results + - run: *run_tests + - 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 python-pip + - run: *setup_prerelease_commit_hash + - 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_linux: *build_on_tags + - build_x86_mac: *build_on_tags + - test_x86_linux: + <<: *build_on_tags + requires: + - build_x86_linux + - test_x86_mac: + <<: *build_on_tags + requires: + - build_x86_mac + - docs: *build_on_tags |