aboutsummaryrefslogtreecommitdiffstats
path: root/.circleci
diff options
context:
space:
mode:
Diffstat (limited to '.circleci')
-rw-r--r--.circleci/config.yml242
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