Summary: Phew, this took a while. Buck had some changes in how it picks up SDK/NDK configs. In order to satisfy the new demands, I'm now installing the NDK manually and no longer through the SDK manager. I'm also trying to cache as much as possible to reduce the flakiness here. Reviewed By: emilsjolander Differential Revision: D5465206 fbshipit-source-id: 61a4b9006fe96fc9a99fb9d75b822589064a9d1a
137 lines
3.6 KiB
YAML
137 lines
3.6 KiB
YAML
# Copyright (c) 2014-present, Facebook, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the BSD-style license found in the
|
|
# LICENSE file in the root directory of this source tree. An additional grant
|
|
# of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
os: osx
|
|
osx_image: xcode8.2
|
|
language: cpp
|
|
compiler: clang
|
|
cache:
|
|
directories:
|
|
- $HOME/Library/Caches/Homebrew
|
|
- $HOME/android-sdk
|
|
- $HOME/android-ndk
|
|
|
|
env:
|
|
- TARGET=c
|
|
- TARGET=java
|
|
- TARGET=net
|
|
- TARGET=ios
|
|
- TARGET=js
|
|
- TARGET=android
|
|
|
|
before_install:
|
|
- |
|
|
if [[ -n "$encrypted_d27e803291ff_iv" ]]; then
|
|
openssl aes-256-cbc -K $encrypted_d27e803291ff_key -iv $encrypted_d27e803291ff_iv -in scripts/setup-keys.enc -d >> gradle.properties;
|
|
fi
|
|
|
|
- brew update > /dev/null
|
|
- brew install --HEAD facebook/fb/buck
|
|
|
|
# Java
|
|
- |
|
|
if [[ $TARGET = "java" ]]; then
|
|
brew cask install java &&
|
|
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) &&
|
|
export PATH=$JAVA_HOME/bin:$PATH
|
|
fi
|
|
|
|
# .NET
|
|
- |
|
|
if [[ $TARGET = "net" ]]; then
|
|
brew install mono
|
|
fi
|
|
|
|
# iOS
|
|
- |
|
|
if [[ $TARGET = "ios" ]]; then
|
|
brew outdated xctool || brew upgrade xctool;
|
|
gem install xcpretty --no-document --quiet;
|
|
gem install cocoapods --pre --no-document --quiet;
|
|
pod repo update --silent;
|
|
pod install --project-directory=YogaKit/YogaKitSample/;
|
|
fi
|
|
|
|
# Emscripten (used for js tests)
|
|
# Note: cannot be ran on Linux (because it will compile Clang from its sources :|)
|
|
- |
|
|
if [[ $TARGET = "js" ]]; then
|
|
wget -O /tmp/emsdk-portable.tar.gz https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz &&
|
|
tar xf /tmp/emsdk-portable.tar.gz -C /tmp/ &&
|
|
/tmp/emsdk-portable/emsdk install latest 2>&1 | grep -v '^x ' &&
|
|
/tmp/emsdk-portable/emsdk activate latest
|
|
fi
|
|
|
|
# Android
|
|
- |
|
|
if [[ $TARGET = "android" ]]; then
|
|
brew cask install java;
|
|
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8);
|
|
export PATH=$JAVA_HOME/bin:$PATH;
|
|
export TERMINAL=dumb;
|
|
source scripts/android-setup.sh && installAndroidSDK
|
|
export ANDROID_SDK=$ANDROID_HOME
|
|
export ANDROID_NDK_REPOSITORY=$HOME/android-ndk
|
|
export ANDROID_NDK_HOME=$ANDROID_NDK_REPOSITORY/android-ndk-13b
|
|
fi
|
|
|
|
# JavaScript
|
|
- |
|
|
if [[ $TARGET = "js" ]]; then (
|
|
cd javascript &&
|
|
npm install &&
|
|
unset CC && unset CXX && unset LINK &&
|
|
source /tmp/emsdk-portable/emsdk_env.sh &&
|
|
npm run build:browser
|
|
) fi
|
|
|
|
script:
|
|
# C
|
|
- |
|
|
if [[ $TARGET = "c" ]]; then
|
|
buck test --verbose 0 //:yoga &&
|
|
buck run --verbose 0 //benchmark:benchmark &&
|
|
git checkout HEAD^ &&
|
|
buck run --verbose 0 //benchmark:benchmark
|
|
fi
|
|
|
|
# Java
|
|
- |
|
|
if [[ $TARGET = "java" ]]; then
|
|
buck test --verbose 0 //java:java
|
|
fi
|
|
|
|
# .NET
|
|
- |
|
|
if [[ $TARGET = "net" ]]; then
|
|
sh csharp/tests/Facebook.Yoga/test_macos.sh
|
|
fi
|
|
|
|
# iOS
|
|
- |
|
|
if [[ $TARGET = "ios" ]]; then
|
|
buck test --verbose 0 //YogaKit:YogaKitTests --config cxx.default_platform=iphonesimulator-x86_64 &&
|
|
set -o pipefail &&
|
|
xcodebuild build -workspace YogaKit/YogaKitSample/YogaKitSample.xcworkspace -scheme YogaKitSample -sdk iphonesimulator | xcpretty -c
|
|
fi
|
|
|
|
# Android
|
|
- |
|
|
if [[ $TARGET = "android" ]]; then
|
|
buck build --verbose 0 //android/sample:sample &&
|
|
./gradlew testDebugUnit &&
|
|
scripts/publish-snapshot.sh
|
|
fi
|
|
|
|
# JavaScript
|
|
- |
|
|
if [[ $TARGET = "js" ]]; then (
|
|
cd javascript &&
|
|
npm run test:all &&
|
|
npm run bench
|
|
) fi
|