mirror of https://github.com/status-im/evmc.git
138 lines
3.8 KiB
YAML
138 lines
3.8 KiB
YAML
version: 2
|
|
jobs:
|
|
|
|
lint:
|
|
docker:
|
|
- image: ethereum/cpp-build-env
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: "Check code format"
|
|
command: |
|
|
find examples include lib test -name '*.hpp' -o -name '*.cpp' -o -name '*.h' -o -name '*.c' | xargs clang-format -i
|
|
git diff --color --exit-code
|
|
|
|
build: &build
|
|
docker:
|
|
- image: ethereum/cpp-build-env
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: "Configure"
|
|
working_directory: ~/build
|
|
command: cmake ../project -DCMAKE_INSTALL_PREFIX=~/install -DBUILD_SHARED_LIBS=ON -DEVMC_EXAMPLES=ON -DEVMC_TESTING=ON
|
|
- run:
|
|
name: "Build"
|
|
command: cmake --build ~/build
|
|
- run:
|
|
name: "Unit tests"
|
|
working_directory: ~/build/test
|
|
command: ./evmc-test
|
|
- run:
|
|
name: "Test"
|
|
command: cmake --build ~/build --target test
|
|
- run:
|
|
name: "Install"
|
|
command: cmake --build ~/build --target install
|
|
- run:
|
|
name: "Package"
|
|
command: |
|
|
cmake --build ~/build --target package
|
|
mkdir ~/package
|
|
mv ~/build/evmc-*.tar.gz ~/package
|
|
- store_artifacts:
|
|
path: ~/package
|
|
destination: package
|
|
- run:
|
|
name: "Test CMake package config"
|
|
command: |
|
|
mkdir ~/build-example-evmc && cd ~/build-example-evmc
|
|
cmake ~/project/examples/use_evmc_in_cmake -DCMAKE_PREFIX_PATH=~/install
|
|
cmake --build .
|
|
|
|
mkdir ~/build-example-instructions && cd ~/build-example-instructions
|
|
cmake ~/project/examples/use_instructions_in_cmake -DCMAKE_PREFIX_PATH=~/install
|
|
cmake --build .
|
|
- run:
|
|
name: "Run evmc-vmtester libevmc-examplevm.so"
|
|
command: ~/install/bin/evmc-vmtester ~/install/lib/libevmc-examplevm.so
|
|
|
|
build-clang-3.8:
|
|
<<: *build
|
|
environment:
|
|
CC: clang-3.8
|
|
CXX: clang++-3.8
|
|
|
|
test-docs:
|
|
docker:
|
|
- image: ethereum/cpp-build-env
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: "Test documentation"
|
|
command: |
|
|
cat Doxyfile | sed 's/HTML_OUTPUT = ./HTML_OUTPUT = ..\/docs/' | doxygen - > doxygen.log 2> doxygen.warnings
|
|
if [ -s doxygen.warnings ]; then
|
|
printf '\n\nDoxygen warnings:\n\n'
|
|
cat doxygen.warnings
|
|
exit 1
|
|
fi
|
|
cat doxygen.log
|
|
- store_artifacts:
|
|
path: ~/docs
|
|
destination: docs
|
|
|
|
upload-docs:
|
|
docker:
|
|
- image: ethereum/cpp-build-env
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: "Generate documentation"
|
|
command: doxygen Doxyfile
|
|
- run:
|
|
name: "Upload documentation"
|
|
command: |
|
|
git config user.email "docs-bot@ethereum.org"
|
|
git config user.name "Documentation Bot"
|
|
git add --all
|
|
git commit -m "Update docs"
|
|
git push -f "https://$GITHUB_TOKEN@github.com/ethereum/evmc.git" HEAD:gh-pages
|
|
|
|
bindings-go-1.10:
|
|
docker:
|
|
- image: circleci/golang:1.10
|
|
steps: &bindings-go-steps
|
|
- checkout
|
|
- run:
|
|
name: "Go Build"
|
|
command: |
|
|
go get -v github.com/ethereum/go-ethereum/common
|
|
go build -v ./bindings/go/evmc
|
|
go vet -v ./bindings/go/evmc
|
|
|
|
bindings-go-1.9:
|
|
docker:
|
|
- image: circleci/golang:1.9
|
|
steps: *bindings-go-steps
|
|
|
|
|
|
workflows:
|
|
version: 2
|
|
evmc:
|
|
jobs:
|
|
- lint
|
|
- build
|
|
- build-clang-3.8
|
|
- bindings-go-1.10
|
|
- bindings-go-1.9
|
|
- test-docs
|
|
- upload-docs:
|
|
requires:
|
|
- test-docs
|
|
filters:
|
|
branches:
|
|
only:
|
|
- master
|
|
- docs
|