From f9942f3321b829e1010af54b76dc309dc66686cf Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Sun, 5 Nov 2017 21:01:29 -0200 Subject: [PATCH] Improve CircleCI cache --- .circleci/config.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++ circle.yml | 55 ------------------------------- 2 files changed, 78 insertions(+), 55 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 circle.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..5674badcb --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,78 @@ +defaults: &defaults + working_directory: ~/repo + +version: 2 +jobs: + 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 + npm install + + - 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 + +workflows: + version: 2 + build-and-test: + jobs: + - build diff --git a/circle.yml b/circle.yml deleted file mode 100644 index d009c6c48..000000000 --- a/circle.yml +++ /dev/null @@ -1,55 +0,0 @@ -machine: - node: - version: 8 - environment: - YARN_VERSION: 0.18.1 - # Needed for Android SDK installation bash script (see below) - PATH: "${PATH}:${HOME}/.yarn/bin:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin" - GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' -dependencies: - pre: - # Install YARN - - node -v - - echo $KEYSTORE_BASE64 | base64 --decode > ./android/app/rocketchat-rn.keystore - - echo -e "KEYSTORE=$KEYSTORE" >> ./android/gradle.properties - - echo -e "KEYSTORE_PASSWORD=$KEYSTORE_PASSWORD" >> ./android/gradle.properties - - echo -e "KEY_ALIAS=$KEY_ALIAS" >> ./android/gradle.properties - - echo -e "KEY_PASSWORD=$KEYSTORE_PASSWORD" >> ./android/gradle.properties - - override: - # The Android Gradle build will need the Android signing keystore keys setup - - echo y | android update sdk --no-ui --all --filter tools,platform-tools,build-tools-23.0.3,build-tools-25.0.2,build-tools-26.0.1,android-23,extra-google-m2repository,extra-google-google_play_services,extra-android-m2repository - - echo y | $ANDROID_HOME/tools/bin/sdkmanager --update - - echo y | $ANDROID_HOME/tools/bin/sdkmanager --licenses - # Install node modules - - yarn - # - ./node_modules/.bin/react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ - - cd android && ./gradlew assembleRelease - - mv ./android/app/build/outputs/ $CIRCLE_ARTIFACTS - - cache_directories: - # Let's speed up the next build by cacheing installed dependencies - - ~/.yarn - - ~/.cache/yarn - - vendor/bundle - - node_modules - - ~/Library/Caches/CocoaPods - - /usr/local/android-sdk-linux/platforms/android-25 - - /usr/local/android-sdk-linux/build-tools/25.0.0 - - /usr/local/android-sdk-linux/extras/android/m2repository - -deployment: - production: # just a label; label names are completely up to you - branch: master - commands: - - ./gradlew assembleRelease - -Dorg.gradle.project.track=production - beta: - branch: develop - commands: - - ./gradlew assembleRelease - -Dorg.gradle.project.track=beta - alpha: - branch: circle-ci - commands: - - android/gradlew publishApkProductionRelease