204 lines
4.8 KiB
YAML
204 lines
4.8 KiB
YAML
|
defaults: &defaults
|
||
|
working_directory: ~/repo
|
||
|
|
||
|
version: 2
|
||
|
jobs:
|
||
|
lint-testunit:
|
||
|
<<: *defaults
|
||
|
docker:
|
||
|
- image: circleci/node:8
|
||
|
|
||
|
environment:
|
||
|
CODECOV_TOKEN: caa771ab-3d45-4756-8e2a-e1f25996fef6
|
||
|
|
||
|
steps:
|
||
|
- checkout
|
||
|
|
||
|
- run:
|
||
|
name: Install NPM modules
|
||
|
command: |
|
||
|
npm install
|
||
|
npm install codecov
|
||
|
|
||
|
- run:
|
||
|
name: Lint
|
||
|
command: |
|
||
|
npm run lint
|
||
|
|
||
|
- run:
|
||
|
name: Test
|
||
|
command: |
|
||
|
npm test
|
||
|
|
||
|
- run:
|
||
|
name: Codecov
|
||
|
command: |
|
||
|
npx codecov
|
||
|
|
||
|
android-build:
|
||
|
<<: *defaults
|
||
|
docker:
|
||
|
- image: circleci/android:api-26-alpha
|
||
|
|
||
|
environment:
|
||
|
GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"
|
||
|
JVM_OPTS: -Xmx2048m
|
||
|
TERM: dumb
|
||
|
BASH_ENV: "~/.nvm/nvm.sh"
|
||
|
|
||
|
steps:
|
||
|
- checkout
|
||
|
|
||
|
- run:
|
||
|
name: Install Node 8
|
||
|
command: |
|
||
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
|
||
|
source ~/.nvm/nvm.sh
|
||
|
nvm install 8
|
||
|
|
||
|
- restore_cache:
|
||
|
key: node-modules-{{ checksum ".circleci/config.yml" }}-{{ checksum "package.json" }}
|
||
|
|
||
|
- run:
|
||
|
name: Install NPM modules
|
||
|
command: |
|
||
|
npm install
|
||
|
|
||
|
- restore_cache:
|
||
|
key: android-{{ checksum ".circleci/config.yml" }}-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}
|
||
|
|
||
|
- run:
|
||
|
name: Install Android Depedencies
|
||
|
command: |
|
||
|
cd android
|
||
|
./gradlew androidDependencies
|
||
|
|
||
|
- run:
|
||
|
name: Build Android App
|
||
|
command: |
|
||
|
cd android
|
||
|
|
||
|
echo $KEYSTORE_BASE64 | base64 --decode > ./app/$KEYSTORE
|
||
|
echo -e "KEYSTORE=$KEYSTORE" > ./gradle.properties
|
||
|
echo -e "KEYSTORE_PASSWORD=$KEYSTORE_PASSWORD" >> ./gradle.properties
|
||
|
echo -e "KEY_ALIAS=$KEY_ALIAS" >> ./gradle.properties
|
||
|
echo -e "KEY_PASSWORD=$KEYSTORE_PASSWORD" >> ./gradle.properties
|
||
|
|
||
|
./gradlew assembleRelease
|
||
|
|
||
|
mkdir -p /tmp/build
|
||
|
|
||
|
mv app/build/outputs /tmp/build/
|
||
|
|
||
|
- store_artifacts:
|
||
|
path: /tmp/build/outputs
|
||
|
|
||
|
- save_cache:
|
||
|
key: node-modules-{{ checksum ".circleci/config.yml" }}-{{ checksum "package.json" }}
|
||
|
paths:
|
||
|
- ./node_modules
|
||
|
|
||
|
- save_cache:
|
||
|
key: android-{{ checksum ".circleci/config.yml" }}-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}
|
||
|
paths:
|
||
|
- ~/.gradle
|
||
|
|
||
|
ios-build:
|
||
|
macos:
|
||
|
xcode: "8.3.3"
|
||
|
|
||
|
environment:
|
||
|
BASH_ENV: "~/.nvm/nvm.sh"
|
||
|
|
||
|
steps:
|
||
|
- checkout
|
||
|
|
||
|
- run:
|
||
|
name: Install Node 8
|
||
|
command: |
|
||
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
|
||
|
source ~/.nvm/nvm.sh
|
||
|
# https://github.com/creationix/nvm/issues/1394
|
||
|
set +e
|
||
|
nvm install 8
|
||
|
|
||
|
- run:
|
||
|
name: Update Fastlane
|
||
|
command: |
|
||
|
brew update
|
||
|
brew install ruby
|
||
|
sudo gem install fastlane
|
||
|
|
||
|
- run:
|
||
|
name: Install NPM modules
|
||
|
command: |
|
||
|
npm install
|
||
|
npm install react-native
|
||
|
|
||
|
- run:
|
||
|
name: Fix known build error
|
||
|
command: |
|
||
|
# Fix error https://github.com/facebook/react-native/issues/14382
|
||
|
cd node_modules/react-native/scripts/
|
||
|
curl https://raw.githubusercontent.com/facebook/react-native/5c53f89dd86160301feee024bce4ce0c89e8c187/scripts/ios-configure-glog.sh > ios-configure-glog.sh
|
||
|
chmod +x ios-configure-glog.sh
|
||
|
|
||
|
- run:
|
||
|
name: Fastlane Build
|
||
|
no_output_timeout: 1200
|
||
|
command: |
|
||
|
cd ios
|
||
|
fastlane ios build
|
||
|
|
||
|
- store_artifacts:
|
||
|
path: ios/RocketChatRN.ipa
|
||
|
|
||
|
- persist_to_workspace:
|
||
|
root: ios
|
||
|
paths:
|
||
|
- RocketChatRN.ipa
|
||
|
|
||
|
ios-testflight:
|
||
|
macos:
|
||
|
xcode: "8.3.3"
|
||
|
|
||
|
steps:
|
||
|
- checkout
|
||
|
|
||
|
- attach_workspace:
|
||
|
at: ios
|
||
|
|
||
|
- run:
|
||
|
name: Update Fastlane
|
||
|
command: |
|
||
|
brew update
|
||
|
brew install ruby
|
||
|
sudo gem install fastlane
|
||
|
|
||
|
- run:
|
||
|
name: Fastlane Tesflight Upload
|
||
|
command: |
|
||
|
cd ios
|
||
|
fastlane pilot upload
|
||
|
|
||
|
workflows:
|
||
|
version: 2
|
||
|
build-and-test:
|
||
|
jobs:
|
||
|
- lint-testunit
|
||
|
|
||
|
- ios-build:
|
||
|
requires:
|
||
|
- lint-testunit
|
||
|
- ios-hold-testflight:
|
||
|
type: approval
|
||
|
requires:
|
||
|
- ios-build
|
||
|
- ios-testflight:
|
||
|
requires:
|
||
|
- ios-hold-testflight
|
||
|
|
||
|
- android-build:
|
||
|
requires:
|
||
|
- lint-testunit
|