[NEW] Add CircleCI 2 (#57)

* Adds circle-ci script
This commit is contained in:
Rodrigo Nascimento 2017-11-06 21:45:48 -02:00 committed by Guilherme Gazzo
parent e0777a969e
commit 834cd20be9
26 changed files with 8019 additions and 1612 deletions

203
.circleci/config.yml Normal file
View File

@ -0,0 +1,203 @@
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

View File

@ -45,12 +45,12 @@ android_library(
android_build_config(
name = "build_config",
package = "com.rocketchatrn",
package = "chat.rocket.reactnative",
)
android_resource(
name = "res",
package = "com.rocketchatrn",
package = "chat.rocket.reactnative",
res = "src/main/res",
)

View File

@ -94,22 +94,22 @@ android {
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.rocketchatrn"
applicationId "chat.rocket.reactnative"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
versionCode 2
versionName "1.1"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
signingConfigs {
release {
if (project.hasProperty('ROCKETCHAT_RN_RELEASE_STORE_FILE')) {
storeFile file(ROCKETCHAT_RN_RELEASE_STORE_FILE)
storePassword ROCKETCHAT_RN_RELEASE_STORE_PASSWORD
keyAlias ROCKETCHAT_RN_RELEASE_KEY_ALIAS
keyPassword ROCKETCHAT_RN_RELEASE_KEY_PASSWORD
if (project.hasProperty('KEYSTORE')) {
storeFile file(KEYSTORE)
storePassword KEYSTORE_PASSWORD
keyAlias KEY_ALIAS
keyPassword KEY_PASSWORD
}
}
}

View File

@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rocketchatrn"
package="chat.rocket.reactnative"
android:versionCode="1"
android:versionName="1.0">

View File

@ -1,4 +1,4 @@
package com.rocketchatrn;
package chat.rocket.reactnative;
import com.facebook.react.ReactActivity;

View File

@ -1,4 +1,4 @@
package com.rocketchatrn;
package chat.rocket.reactnative;
import android.app.Application;

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

View File

@ -1,6 +1,3 @@
import 'babel-polyfill';
import 'regenerator-runtime/runtime';
import { createStore, applyMiddleware } from 'redux';
import createSagaMiddleware from 'redux-saga';
import logger from 'redux-logger';

View File

@ -1,5 +1,5 @@
// import 'babel-polyfill';
// import 'regenerator-runtime/runtime';
import 'babel-polyfill';
import 'regenerator-runtime/runtime';
import { AppRegistry } from 'react-native';

View File

@ -1,5 +1,5 @@
// import 'babel-polyfill';
// import 'regenerator-runtime/runtime';
import 'babel-polyfill';
import 'regenerator-runtime/runtime';
import { AppRegistry } from 'react-native';

View File

@ -5,6 +5,7 @@
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
@ -672,6 +673,7 @@
6533FB90166345D29F1B91C0 /* libRNFetchBlob.a */,
5A0EEFAF8AB14F5B9E796CDD /* libRNVectorIcons.a */,
DA50CE47374C4C35BE6D9D58 /* libRNSVG.a */,
3B696712EE2345A59F007A88 /* libRNImagePicker.a */,
);
name = "Recovered References";
sourceTree = "<group>";
@ -800,7 +802,8 @@
TestTargetID = 13B07F861A680F5B00A75B9A;
};
13B07F861A680F5B00A75B9A = {
ProvisioningStyle = Automatic;
DevelopmentTeam = S6UPZG7ZR3;
ProvisioningStyle = Manual;
};
2D02E47A1E0B4A5D006451C7 = {
CreatedOnToolsVersion = 8.2.1;
@ -1376,9 +1379,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = S6UPZG7ZR3;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/realm/src/**",
@ -1399,8 +1403,8 @@
);
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative;
PRODUCT_NAME = RocketChatRN;
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = "";
PROVISIONING_PROFILE = "407d153d-67a5-4dde-9d17-372484b83cc1";
PROVISIONING_PROFILE_SPECIFIER = "match Development chat.rocket.reactnative";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@ -1409,9 +1413,10 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = S6UPZG7ZR3;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/realm/src/**",
@ -1432,7 +1437,8 @@
);
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative;
PRODUCT_NAME = RocketChatRN;
PROVISIONING_PROFILE_SPECIFIER = "";
PROVISIONING_PROFILE = "4215f8b9-b4d1-4531-8a64-a1b044835516";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.rocket.reactnative";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0820"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "NO"
@ -54,6 +54,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
@ -83,6 +84,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0620"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "NO"
@ -54,6 +54,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
@ -83,6 +84,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@ -143,6 +143,11 @@
"idiom" : "ipad",
"filename" : "icon-83.5@2x.png",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {

View File

@ -9,7 +9,7 @@
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>Rocket.Chat.$(PRODUCT_NAME:rfc1034identifier)</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@ -17,11 +17,13 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<string>4</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
@ -38,7 +40,7 @@
<key>NSCameraUsageDescription</key>
<string>Upload images from camera</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string/>
<string></string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Upload images from library</string>
<key>UIAppFonts</key>

8
ios/fastlane/Appfile Normal file
View File

@ -0,0 +1,8 @@
app_identifier "chat.rocket.reactnative" # The bundle identifier of your app
apple_id "rodrigo.nascimento@rocket.chat" # Your Apple email address
team_id "S6UPZG7ZR3" # Developer Portal Team ID
itc_team_id "118376632"
# you can even provide different app identifiers, Apple IDs and team names per lane:
# More information: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md

98
ios/fastlane/Fastfile Normal file
View File

@ -0,0 +1,98 @@
# Customize this file, documentation can be found here:
# https://docs.fastlane.tools/actions/
# All available actions: https://docs.fastlane.tools/actions
# can also be listed using the `fastlane actions` command
# Change the syntax highlighting to Ruby
# All lines starting with a # are ignored when running `fastlane`
# If you want to automatically update fastlane if a new version is available:
# update_fastlane
# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "2.63.0"
default_platform :ios
platform :ios do
before_all do
# ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
# cocoapods
# carthage
create_keychain(
name: ENV["MATCH_KEYCHAIN_NAME"],
password: ENV["MATCH_KEYCHAIN_PASSWORD"],
timeout: 1200
)
end
desc "Runs all the tests"
lane :test do
scan
end
desc "Submit a new Beta Build to Apple TestFlight"
desc "This will also make sure the profile is up to date"
lane :beta do
match(
type: "appstore",
git_url: "git@github.com:RocketChat/Rocket.Chat.ReactNative.FastLane.git"
) # more information: https://codesigning.guide
gym(scheme: "RocketChatRN") # Build your app - more options available
pilot
# sh "your_script.sh"
# You can also use other beta testing services here (run `fastlane actions`)
end
desc "Deploy a new version to the App Store"
lane :release do
# match(type: "appstore")
# snapshot
match(
type: "appstore",
git_url: "git@github.com:RocketChat/Rocket.Chat.ReactNative.FastLane.git"
) # more information: https://codesigning.guide
deliver(force: true)
# frameit
end
desc "Build App"
lane :build do
# match(type: "appstore")
# snapshot
match(
type: "appstore",
git_url: "git@github.com:RocketChat/Rocket.Chat.ReactNative.FastLane.git"
) # more information: https://codesigning.guide
gym(scheme: "RocketChatRN") # Build your app - more options available
# frameit
end
# You can define as many lanes as you want
after_all do |lane|
# This block is called, only if the executed lane was successful
# slack(
# message: "Successfully deployed new App Update."
# )
delete_keychain(name: ENV["MATCH_KEYCHAIN_NAME"])
end
error do |lane, exception|
# slack(
# message: exception.message,
# success: false
# )
delete_keychain(name: ENV["MATCH_KEYCHAIN_NAME"])
end
end
# More information about multiple platforms in fastlane: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Platforms.md
# All available actions: https://docs.fastlane.tools/actions
# fastlane reports which actions are used. No personal data is recorded.
# Learn more at https://docs.fastlane.tools/#metrics

60
ios/fastlane/README.md Normal file
View File

@ -0,0 +1,60 @@
fastlane documentation
================
# Installation
Make sure you have the latest version of the Xcode command line tools installed:
```
xcode-select --install
```
## Choose your installation method:
<table width="100%" >
<tr>
<th width="33%"><a href="http://brew.sh">Homebrew</a></td>
<th width="33%">Installer Script</td>
<th width="33%">RubyGems</td>
</tr>
<tr>
<td width="33%" align="center">macOS</td>
<td width="33%" align="center">macOS</td>
<td width="33%" align="center">macOS or Linux with Ruby 2.0.0 or above</td>
</tr>
<tr>
<td width="33%"><code>brew cask install fastlane</code></td>
<td width="33%"><a href="https://download.fastlane.tools">Download the zip file</a>. Then double click on the <code>install</code> script (or run it in a terminal window).</td>
<td width="33%"><code>sudo gem install fastlane -NV</code></td>
</tr>
</table>
# Available Actions
## iOS
### ios test
```
fastlane ios test
```
Runs all the tests
### ios beta
```
fastlane ios beta
```
Submit a new Beta Build to Apple TestFlight
This will also make sure the profile is up to date
### ios release
```
fastlane ios release
```
Deploy a new version to the App Store
### ios build
```
fastlane ios build
```
Build App
----
This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).

33
ios/fastlane/report.xml Normal file
View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite name="fastlane.lanes">
<testcase classname="fastlane.lanes" name="0: Verifying required fastlane version" time="0.003408">
</testcase>
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.003022">
</testcase>
<testcase classname="fastlane.lanes" name="2: match" time="12.238978">
</testcase>
<testcase classname="fastlane.lanes" name="3: gym" time="237.52302">
</testcase>
<testcase classname="fastlane.lanes" name="4: pilot" time="72.313015">
</testcase>
</testsuite>
</testsuites>

9098
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -69,5 +69,10 @@
"preset": "react-native",
"coverageDirectory": "./coverage/",
"collectCoverage": true
},
"engines": {
"node": ">=8.x",
"npm": ">=4.x",
"yarn": ">=0.21.3"
}
}