wasmer/.circleci/config.yml

435 lines
16 KiB
YAML
Raw Normal View History

2019-03-23 23:50:09 +00:00
run_with_build_env_vars: &run_with_build_env_vars
environment:
2019-03-23 23:58:10 +00:00
LLVM_SYS_70_PREFIX: /home/circleci/project/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/
2019-03-23 23:50:09 +00:00
run_install_dependencies: &run_install_dependencies
run:
name: install dependencies
command: |
sudo apt-get install -y cmake
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
2018-11-05 17:03:09 +00:00
version: 2
jobs:
2019-04-12 18:08:20 +00:00
changelog:
docker:
- image: docker:stable-git
steps:
- checkout
- run:
2019-04-12 18:11:33 +00:00
command: ! git diff --exit-code CHANGELOG.md
2019-04-12 18:08:20 +00:00
# Job used for testing
lint:
docker:
- image: circleci/rust:latest
2019-03-23 23:50:09 +00:00
<<: *run_with_build_env_vars
steps:
- checkout
- restore_cache:
keys:
2019-04-11 18:51:28 +00:00
- v8-lint-{{ arch }}-{{ checksum "Cargo.lock" }}
2019-03-23 23:50:09 +00:00
- <<: *run_install_dependencies
- run:
name: Install lint deps
command: |
2019-03-19 17:33:23 +00:00
git config --global --unset url."ssh://git@github.com".insteadOf || true
2019-03-26 17:27:07 +00:00
rustup toolchain install nightly-2019-02-27
rustup component add rustfmt
2019-03-26 17:27:07 +00:00
rustup component add clippy --toolchain=nightly-2019-02-27 || cargo +nightly-2019-02-27 install --git https://github.com/rust-lang/rust-clippy/ --force clippy
2019-01-18 19:59:31 +00:00
- run:
name: Execute lints
2019-03-05 22:54:44 +00:00
command: |
make lint
- save_cache:
paths:
- /usr/local/cargo/registry
- target/debug/.fingerprint
- target/debug/build
- target/debug/deps
2019-04-11 18:51:28 +00:00
key: v8-lint-{{ arch }}-{{ checksum "Cargo.lock" }}
2019-03-23 23:50:09 +00:00
test:
docker:
- image: circleci/rust:latest
2019-03-25 01:19:23 +00:00
<<: *run_with_build_env_vars
steps:
- checkout
- restore_cache:
keys:
2019-04-11 18:51:28 +00:00
- v8-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }}
2019-03-25 01:19:23 +00:00
- <<: *run_install_dependencies
- run:
name: Tests
2019-03-25 01:19:23 +00:00
command: make test
- run:
name: Emscripten Tests
command: |
make test-emscripten-clif
make test-emscripten-llvm
- run:
name: Integration Tests
2019-03-25 01:19:23 +00:00
command: make integration-tests
- save_cache:
paths:
- /usr/local/cargo/registry
- target/debug/.fingerprint
- target/debug/build
- target/debug/deps
2019-04-11 18:51:28 +00:00
key: v8-test-cargo-cache-linux-stable-{{ arch }}-{{ checksum "Cargo.lock" }}
2019-01-01 20:12:48 +00:00
test-macos:
macos:
xcode: "9.0"
steps:
- checkout
2019-05-15 17:41:44 +00:00
- restore_cache:
keys:
- v8-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }}
- run:
name: Install crate dependencies
command: |
# Installing cmake outside of brew to improve speed
curl -O https://cmake.org/files/v3.4/cmake-3.4.1-Darwin-x86_64.tar.gz
tar xf cmake-3.4.1-Darwin-x86_64.tar.gz
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
# Installing LLVM outside of brew
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
tar xf clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
2019-01-01 20:12:48 +00:00
- run:
name: Install Rust
command: |
2019-04-25 20:47:58 +00:00
curl -sSf https://sh.rustup.rs | sh -s -- -y
2019-01-01 20:12:48 +00:00
export PATH="$HOME/.cargo/bin:$PATH"
cargo --version
- run:
name: Tests
2019-01-01 20:12:48 +00:00
command: |
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
2019-03-05 22:54:44 +00:00
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
2019-01-01 20:12:48 +00:00
# We increase the ulimit for fixing cargo unclosed files in mac
ulimit -n 8000
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
make test
- run:
name: Emscripten Tests
command: |
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
# We increase the ulimit for fixing cargo unclosed files in mac
ulimit -n 8000
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
make test-emscripten-clif
make test-emscripten-llvm
- run:
name: Integration Tests
command: |
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
2019-03-05 22:54:44 +00:00
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
2019-01-18 20:20:13 +00:00
make integration-tests
2019-05-15 17:41:44 +00:00
- save_cache:
paths:
- ~/.cargo/registry/
- target/debug/.fingerprint
- target/debug/build
- target/debug/deps
- target/release/.fingerprint
- target/release/build
- target/release/deps
key: v8-cargo-cache-darwin-stable-{{ arch }}-{{ checksum "Cargo.lock" }}
2019-01-01 20:12:48 +00:00
test-and-build:
2018-11-05 17:03:09 +00:00
docker:
- image: circleci/rust:latest
2018-11-05 17:03:09 +00:00
steps:
- checkout
2019-04-11 22:07:19 +00:00
- run:
name: "Pull dependencies"
command: |
git submodule init
2019-05-16 21:23:43 +00:00
git submodule update
2018-11-05 17:03:09 +00:00
- restore_cache:
keys:
2019-04-11 18:51:28 +00:00
- v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}
- run:
name: Install dependencies
command: |
sudo apt-get install -y cmake
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
2019-04-11 19:44:03 +00:00
# Use rust nightly (for singlepass, for now)
- run: rustup default nightly-2019-04-11
2018-11-13 18:28:50 +00:00
- run:
name: Tests
2019-03-05 22:54:44 +00:00
command: |
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/"
make test
2018-11-23 18:35:41 +00:00
- run:
name: Emscripten Tests
command: |
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/"
make test-emscripten-clif
make test-emscripten-llvm
- run:
name: Debug flag checked
command: |
cargo check --features "debug"
- run:
name: Release Build
2018-11-13 18:28:50 +00:00
command: |
2019-03-05 22:54:44 +00:00
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/"
2019-04-11 22:33:02 +00:00
make production-release
2019-04-23 00:22:20 +00:00
cargo build --release --manifest-path wapm-cli/Cargo.toml --features telemetry
2018-11-13 18:28:50 +00:00
mkdir -p artifacts
2018-11-13 18:51:04 +00:00
VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2)
2018-12-04 02:57:26 +00:00
# GIT_VERSION=$(git describe --exact-match --tags)
2018-11-13 18:51:04 +00:00
echo "${VERSION}" >> artifacts/version
2018-12-04 02:57:26 +00:00
echo "${CIRCLE_TAG}" >> artifacts/git_version
2019-04-11 22:00:02 +00:00
make build-install
cp ./wasmer.tar.gz ./artifacts/$(./binary-name.sh)
- run:
name: Dynamic library
command: |
cargo build --release --manifest-path lib/runtime-c-api/Cargo.toml
cp target/release/libwasmer_runtime_c_api.so ./artifacts
2018-11-13 18:28:50 +00:00
- persist_to_workspace:
root: .
paths:
- artifacts
2018-11-05 17:03:09 +00:00
- save_cache:
paths:
- /usr/local/cargo/registry
- target/debug/.fingerprint
- target/debug/build
- target/debug/deps
2018-11-13 19:36:04 +00:00
- target/release/.fingerprint
2018-11-13 18:28:50 +00:00
- target/release/build
- target/release/deps
2019-04-11 22:07:19 +00:00
- wapm-cli/target/release/.fingerprint
- wapm-cli/target/release/build
- wapm-cli/target/release/deps
2019-04-11 18:51:28 +00:00
key: v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}
2018-11-13 18:28:50 +00:00
test-and-build-macos:
2018-11-13 19:36:04 +00:00
macos:
xcode: "9.0"
steps:
- checkout
2019-04-11 22:07:19 +00:00
- run:
name: "Pull dependencies"
command: |
git submodule init
git submodule update
2018-11-13 19:36:04 +00:00
- restore_cache:
keys:
2019-04-11 18:51:28 +00:00
- v8-cargo-cache-darwin-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}
- run:
name: Install crate dependencies
command: |
# Installing cmake outside of brew to improve speed
curl -O https://cmake.org/files/v3.4/cmake-3.4.1-Darwin-x86_64.tar.gz
tar xf cmake-3.4.1-Darwin-x86_64.tar.gz
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
# Installing LLVM outside of brew
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
tar xf clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
2018-11-13 19:36:04 +00:00
- run:
2018-11-15 21:30:00 +00:00
name: Install Rust
command: |
2019-04-25 22:59:46 +00:00
curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly
export PATH="$HOME/.cargo/bin:$PATH"
cargo --version
2019-04-11 19:44:03 +00:00
# Use rust nightly (for singlepass, for now)
2019-04-11 23:54:49 +00:00
# - run:
# name: Install Rust nightly
# command: |
# export PATH="$HOME/.rustup/bin:$PATH"
# rustup default nightly-2019-04-11
2018-11-13 19:36:04 +00:00
- run:
name: Tests
2018-11-13 20:12:02 +00:00
command: |
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"
2019-03-05 22:54:44 +00:00
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
# We increase the ulimit for fixing cargo unclosed files in mac
ulimit -n 8000
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
make test
- run:
name: Emscripten Tests
command: |
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
# We increase the ulimit for fixing cargo unclosed files in mac
ulimit -n 8000
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
make test-emscripten-clif
2019-04-11 19:44:03 +00:00
make test-emscripten-singlepass
- run:
name: Release Build
2018-11-13 19:36:04 +00:00
command: |
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"
2019-03-05 22:54:44 +00:00
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
2019-04-11 22:33:02 +00:00
make production-release
2019-04-23 00:22:20 +00:00
cargo build --release --manifest-path wapm-cli/Cargo.toml --features telemetry
2018-11-13 19:36:04 +00:00
mkdir -p artifacts
2019-04-11 22:00:02 +00:00
make build-install
cp ./wasmer.tar.gz ./artifacts/$(./binary-name.sh)
2018-11-13 20:12:02 +00:00
# VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2)
# echo "${VERSION}" >> artifacts/version
- run:
name: Dynamic library
command: |
2019-05-28 22:31:19 +00:00
export PATH="$HOME/.cargo/bin:$PATH"
cargo build --release --manifest-path lib/runtime-c-api/Cargo.toml
cp target/release/libwasmer_runtime_c_api.dylib ./artifacts
2018-11-13 19:36:04 +00:00
- persist_to_workspace:
root: .
paths:
- artifacts
- save_cache:
paths:
2019-01-23 05:40:42 +00:00
- ~/.cargo/registry/
2018-11-13 19:36:04 +00:00
- target/debug/.fingerprint
- target/debug/build
- target/debug/deps
- target/release/.fingerprint
- target/release/build
- target/release/deps
2019-04-11 22:07:19 +00:00
- wapm-cli/target/release/.fingerprint
- wapm-cli/target/release/build
- wapm-cli/target/release/deps
2019-04-11 18:51:28 +00:00
key: v8-cargo-cache-darwin-nightly-{ arch }}-{{ checksum "Cargo.lock" }}
2018-11-13 18:28:50 +00:00
2018-12-24 19:38:54 +00:00
test-rust-nightly:
docker:
- image: circleci/rust:latest
steps:
- checkout
- restore_cache:
keys:
2019-04-11 18:51:28 +00:00
- v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}
- run:
2019-01-18 20:20:13 +00:00
name: Install dependencies
command: |
sudo apt-get install -y cmake
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
2019-05-17 21:08:29 +00:00
rustup toolchain install nightly
rustup target add wasm32-wasi --toolchain nightly
- run: |
2019-05-20 20:21:31 +00:00
rustup default nightly
make test-wasi-singlepass
make test-wasi-clif
- run: rustup default nightly-2019-04-11
2019-03-05 22:54:44 +00:00
- run: |
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/"
make test
2019-04-11 19:44:03 +00:00
make test-singlepass
2019-04-11 00:15:47 +00:00
make test-emscripten-clif
2019-04-11 19:44:03 +00:00
make test-emscripten-singlepass
2018-12-24 19:38:54 +00:00
- save_cache:
paths:
- /usr/local/cargo/registry
- target/debug/.fingerprint
- target/debug/build
- target/debug/deps
2019-04-11 18:51:28 +00:00
key: v8-cargo-cache-linux-nightly-{{ arch }}-{{ checksum "Cargo.lock" }}-nightly
2018-12-24 19:38:54 +00:00
2018-11-13 18:28:50 +00:00
publish-github-release:
docker:
- image: cibuilds/github
steps:
- attach_workspace:
at: .
- run:
name: "Publish Release on GitHub"
command: |
# go get github.com/tcnksm/ghr
# VERSION=$(git log -1 --pretty=%B)
2018-11-23 18:35:41 +00:00
# VERSION=$(./artifacts/ --version)
2018-11-13 18:51:04 +00:00
VERSION=$(cat ./artifacts/version)
# VERSION_TAG=${CIRCLE_TAG}
2018-12-04 02:53:48 +00:00
VERSION_TAG=$(cat ./artifacts/git_version)
2018-12-05 23:15:12 +00:00
rm ./artifacts/version
rm ./artifacts/git_version
2018-12-04 02:53:48 +00:00
# VERSION_TAG=$(git describe --exact-match --tags)
2018-12-04 03:04:25 +00:00
#if [ "$VERSION" == "$VERSION_TAG" ]; then
# echo "Versions match, publishing to Github"
ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} ${VERSION} ./artifacts/ || true
2018-12-04 03:04:25 +00:00
#else
# echo "Versions don't match. Wasmer output version (wasmer --version) is ${VERSION} while Git tag is ${VERSION_TAG}"
# exit 1
#fi
trigger-benchmark-build:
docker:
2019-03-19 00:56:48 +00:00
- image: circleci/rust:latest
steps:
- run:
name: "Trigger Benchmark Build"
command: |
if [[ -z "${CIRCLE_API_USER_TOKEN}" ]]; then
echo "CIRCLE_API_USER_TOKEN environment variable not set"
exit 1
else
echo "Triggering benchmark build"
curl -u ${CIRCLE_API_USER_TOKEN} \
-d build_parameters[CIRCLE_JOB]=bench \
https://circleci.com/api/v1.1/project/github/wasmerio/wasmer-bench/tree/master
fi
2018-11-13 18:28:50 +00:00
workflows:
version: 2
main:
jobs:
2019-04-12 18:10:55 +00:00
- changelog
2019-03-24 23:38:45 +00:00
- lint
- test:
2019-03-08 23:08:28 +00:00
filters:
branches:
only:
- trying
- staging
2019-01-01 20:12:48 +00:00
- test-macos:
2019-03-08 23:08:28 +00:00
filters:
branches:
only:
- trying
- staging
- test-and-build:
2019-03-08 23:08:28 +00:00
filters:
branches:
only:
2019-03-12 17:07:23 +00:00
- master
- test-and-build-macos:
2019-03-08 23:08:28 +00:00
filters:
branches:
only:
2019-03-12 17:07:23 +00:00
- master
2018-12-24 19:38:54 +00:00
- test-rust-nightly:
2019-03-08 23:08:28 +00:00
filters:
branches:
only:
- trying
- staging
2018-11-13 18:28:50 +00:00
- publish-github-release:
requires:
- lint
- test-and-build
- test-and-build-macos
2018-11-23 18:35:41 +00:00
filters:
branches:
only: master
2019-04-23 00:25:00 +00:00
- trigger-benchmark-build:
requires:
- test-and-build
- lint
filters:
branches:
only: master