diff --git a/.circleci/config.yml b/.circleci/config.yml index d0bfb9884066..76bda9defac1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,22 +11,80 @@ commands: - run: name: Setup gradle.properties command: cp gradle.properties-example gradle.properties + yarn-install: + steps: + - restore_cache: + name: Restore Yarn Cache + keys: + - yarn-i18n-v4-cache-v{{ .Environment.CACHE_TRIGGER_VERSION }}-job-{{ .Environment.CIRCLE_JOB }}-{{ checksum "libs/gutenberg-mobile/yarn.lock" }} + - run: + name: Yarn Install + working_directory: libs/gutenberg-mobile + command: yarn install --frozen-lockfile --prefer-offline --network-concurrency 1 + - save_cache: + name: Save Yarn Cache + key: yarn-i18n-v4-cache-v{{ .Environment.CACHE_TRIGGER_VERSION }}-job-{{ .Environment.CIRCLE_JOB }}-{{ checksum "libs/gutenberg-mobile/yarn.lock" }} + paths: + - libs/gutenberg-mobile/node_modules + - libs/gutenberg-mobile/i18n-cache/data + checkout-submodules: + steps: + - run: + name: Checkout submodules + command: git submodule update --init --recursive + checkout-gutenberg-mobile-submodule-only: + steps: + - run: + name: Checkout gutenberg-mobile submodule (no recursive) + command: git submodule update --init + yarn-bundle-android: + steps: + - run: + name: Yarn bundle Android + working_directory: libs/gutenberg-mobile + command: yarn bundle:android version: 2.1 jobs: + gutenberg-bundle-build: + docker: + - image: circleci/node:10 + steps: + - git/shallow-checkout + - checkout-submodules + - yarn-install + - yarn-bundle-android + - run: + name: Rename the JS bundle + working_directory: libs/gutenberg-mobile + command: mv bundle/android/App.js bundle/android/index.android.bundle + - persist_to_workspace: + root: libs/gutenberg-mobile/bundle/android + paths: + - index.android.bundle test: executor: name: android/default api-version: "28" steps: - git/shallow-checkout + - checkout-gutenberg-mobile-submodule-only - android/restore-gradle-cache - copy-gradle-properties + - run: + name: Ensure assets folder exists + command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + - attach_workspace: + at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets - run: name: Test WordPress - command: ./gradlew --stacktrace testVanillaRelease + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 + command: SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD=1 ./gradlew testVanillaRelease --stacktrace --no-daemon - run: name: Test WordPressUtils + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: cd libs/utils && ./gradlew --stacktrace testReleaseUnitTest - android/save-gradle-cache - android/save-test-results @@ -36,20 +94,34 @@ jobs: api-version: "28" steps: - git/shallow-checkout + - checkout-gutenberg-mobile-submodule-only - android/restore-gradle-cache - copy-gradle-properties + - run: + name: Ensure assets folder exists + command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + - attach_workspace: + at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets - run: name: Checkstyle + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: ./gradlew --stacktrace checkstyle - run: name: ktlint + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: ./gradlew --stacktrace ciktlint - run: name: Lint + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: ./gradlew --stacktrace lintVanillaRelease || (grep -A20 -B2 'severity="Error"' -r --include="*.xml" WordPress libs; exit 1) - run: name: Violations when: on_fail + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: | if [ -n "$GITHUB_API_TOKEN" ]; then ./gradlew --stacktrace violationCommentsToGitHub -DGITHUB_PULLREQUESTID=${CIRCLE_PULL_REQUEST##*/} -DGITHUB_OAUTH2TOKEN=$GITHUB_API_TOKEN @@ -64,14 +136,22 @@ jobs: api-version: "28" steps: - git/shallow-checkout + - checkout-gutenberg-mobile-submodule-only - bundle-install/bundle-install: cache_key_prefix: installable-build - run: name: Copy Secrets command: bundle exec fastlane run configure_apply - android/restore-gradle-cache + - run: + name: Ensure assets folder exists + command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + - attach_workspace: + at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets - run: name: Build APK + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: | if [ -n "$CIRCLE_PULL_REQUEST" ]; then PR_NUMBER=$(basename $CIRCLE_PULL_REQUEST) @@ -104,10 +184,18 @@ jobs: api-version: "28" steps: - git/shallow-checkout + - checkout-gutenberg-mobile-submodule-only - android/restore-gradle-cache - copy-gradle-properties + - run: + name: Ensure assets folder exists + command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + - attach_workspace: + at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets - run: name: Build + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: ./gradlew WordPress:assembleVanillaDebug WordPress:assembleVanillaDebugAndroidTest --stacktrace - run: name: Decrypt credentials @@ -138,10 +226,18 @@ jobs: api-version: "28" steps: - git/shallow-checkout + - checkout-gutenberg-mobile-submodule-only - android/restore-gradle-cache - copy-gradle-properties + - run: + name: Ensure assets folder exists + command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + - attach_workspace: + at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets - run: name: Build + environment: + SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD: 1 command: ./gradlew WordPress:assembleVanillaDebug && cd libs/utils && ./gradlew assembleAndroidTest --stacktrace - run: name: Decrypt credentials @@ -161,6 +257,7 @@ jobs: - image: circleci/ruby:2.6.4 steps: - git/shallow-checkout + - checkout-gutenberg-mobile-submodule-only - run: name: Install bundler command: gem install bundler --version 2.0.2 @@ -173,18 +270,29 @@ jobs: workflows: wordpress_android: jobs: + - gutenberg-bundle-build - strings-check - - test - - lint + - test: + requires: + - gutenberg-bundle-build + - lint: + requires: + - gutenberg-bundle-build - Installable Build: + requires: + - gutenberg-bundle-build filters: branches: ignore: /pull\/[0-9]+/ - WordPressUtils Connected Tests: + requires: + - gutenberg-bundle-build filters: branches: ignore: /pull\/[0-9]+/ - Connected Tests: + requires: + - gutenberg-bundle-build post-to-slack: true # Always run connected tests on develop and release branches filters: diff --git a/WordPress/lint-baseline.xml b/WordPress/lint-baseline.xml index 6e14796f1ffa..42c2fd629297 100644 --- a/WordPress/lint-baseline.xml +++ b/WordPress/lint-baseline.xml @@ -46,6 +46,22 @@ column="20"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/libs/editor/WordPressEditor/build.gradle b/libs/editor/WordPressEditor/build.gradle index fec439925a2d..758761e072b5 100644 --- a/libs/editor/WordPressEditor/build.gradle +++ b/libs/editor/WordPressEditor/build.gradle @@ -28,9 +28,6 @@ apply plugin: 'signing' // import the `submoduleGitHash()` function apply from: 'https://gist.githubusercontent.com/hypest/e06f6097065728b6db7b7c462f8fef1a/raw/3b91756fca76e4c2a9b573313e186c47842e1f7d/submoduleGitHash.gradle' -// import the `waitJitpack()` function -apply from: 'https://gist.githubusercontent.com/hypest/f526fe0775dedce0ce0133f1400d22a4/raw/0008b271a0d28fc79957fd3c2a027f57e98f796a/wait-jitpack.gradle' - android { compileSdkVersion 28 @@ -78,23 +75,10 @@ dependencies { api ("com.github.wordpress-mobile.WordPress-Aztec-Android:wordpress-shortcodes:$aztecVersion") api ("com.github.wordpress-mobile.WordPress-Aztec-Android:wordpress-comments:$aztecVersion") - debugImplementation files("./libs/hermes-debug.aar") - releaseImplementation files("./libs/hermes-release.aar") - - if (rootProject.ext.has("buildGutenbergFromSource") && rootProject.ext.buildGutenbergFromSource) { - implementation (project(':react-native-gutenberg-bridge')) { - exclude group: 'com.squareup.okhttp3' - exclude group: "com.android.volley" - exclude group: 'com.google.code.findbugs' - } - } else { - implementation (waitJitpack('com.github.wordpress-mobile', 'gutenberg-mobile', submoduleGitHash('../../../', 'libs/gutenberg-mobile'))) { - // Inheriting RN's okhttp version can interfere with FluxC SSL handling - // See https://github.com/wordpress-mobile/WordPress-Android/issues/9032 and https://github.com/wordpress-mobile/WordPress-FluxC-Android/issues/919 - exclude group: 'com.squareup.okhttp3' - exclude group: "com.android.volley" - exclude group: 'com.google.code.findbugs' - } + implementation (project(':react-native-gutenberg-bridge')) { + exclude group: 'com.squareup.okhttp3' + exclude group: "com.android.volley" + exclude group: 'com.google.code.findbugs' } // Required Aztec dependencies (they should be included but Jitpack seems to be stripping these out) diff --git a/libs/editor/WordPressEditor/libs/hermes-debug.aar b/libs/editor/WordPressEditor/libs/hermes-debug.aar deleted file mode 100644 index 74bd4ae5cba7..000000000000 Binary files a/libs/editor/WordPressEditor/libs/hermes-debug.aar and /dev/null differ diff --git a/libs/editor/WordPressEditor/libs/hermes-release.aar b/libs/editor/WordPressEditor/libs/hermes-release.aar deleted file mode 100644 index cc208310ea2d..000000000000 Binary files a/libs/editor/WordPressEditor/libs/hermes-release.aar and /dev/null differ diff --git a/libs/gutenberg-mobile b/libs/gutenberg-mobile index bffe9d267809..891739a9ab45 160000 --- a/libs/gutenberg-mobile +++ b/libs/gutenberg-mobile @@ -1 +1 @@ -Subproject commit bffe9d267809f1e336527ca20d805c2207751300 +Subproject commit 891739a9ab4586cce8abb69ad414f55ddd58831d diff --git a/settings.gradle b/settings.gradle index 519d72b1874e..c93240da283e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,6 +9,12 @@ include ':libs:login:WordPressLoginFlow' include ':WordPressMocks' project(':WordPressMocks').projectDir = new File(rootProject.projectDir, properties.getOrDefault('wp.wordpress_mocks_path', 'libs/mocks') + '/WordPressMocks') +include ':react-native-aztec' +project(':react-native-aztec').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/react-native-aztec/android') + +include ':react-native-gutenberg-bridge' +project(':react-native-gutenberg-bridge').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/react-native-gutenberg-bridge/android') + if (properties.getOrDefault('wp.BUILD_GUTENBERG_FROM_SOURCE', false).toBoolean()) { include ':react-native-linear-gradient' project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/node_modules/react-native-linear-gradient/android')