From 7220511367364b7155098396b2ad0c3b2f4d20a4 Mon Sep 17 00:00:00 2001 From: Matt Chowning Date: Tue, 12 May 2020 18:11:28 -0400 Subject: [PATCH 1/5] Insure BUILD_GUTENBERG_FROM_SOURCE and buildGutenbergMobileJSBundle work together --- build.gradle | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index d6fdc4d453a0..15e63cf559ee 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,6 @@ buildscript { ext.kotlinVersion = '1.3.61' ext.navComponenVersion = '2.0.0' - ext.buildGutenbergMobileJSBundle = 1 repositories { google() @@ -21,13 +20,20 @@ plugins { id 'com.gradle.build-scan' version '2.0.2' } -ext { - buildGutenbergMobileJSBundle = 1 -} - apply plugin: 'com.automattic.android.fetchstyle' project.ext.buildGutenbergFromSource = project.properties.getOrDefault('wp.BUILD_GUTENBERG_FROM_SOURCE', false).toBoolean() +def suppressJSBundle = System.getenv('SUPPRESS_GUTENBERG_MOBILE_JS_BUNDLE_BUILD').asBoolean() +project.ext.buildGutenbergMobileJSBundle = !(suppressJSBundle || project.ext.buildGutenbergFromSource) + +if (project.ext.buildGutenbergFromSource) { + def nodeModulesDir = new File('libs/gutenberg-mobile/node_modules') + if (!nodeModulesDir.exists()) { + def message = "Attempting to build Gutenberg from source without a libs/gutenberg-mobile/node_modules directory. \ +Either run yarn install manually within libs/gutenberg-mobile or set wp.BUILD_GUTENBERG_FROM_SOURCE to false." + throw new GradleException(message) + } +} allprojects { apply plugin: 'checkstyle' From 23d59547f9d417264c4ea69b19507635bf63fdd7 Mon Sep 17 00:00:00 2001 From: Matt Chowning Date: Wed, 13 May 2020 08:28:00 -0400 Subject: [PATCH 2/5] Prevent CI from failing if directories already exist --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 64027cabd5e1..76bda9defac1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -73,7 +73,7 @@ jobs: - copy-gradle-properties - run: name: Ensure assets folder exists - command: mkdir libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + 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: @@ -99,7 +99,7 @@ jobs: - copy-gradle-properties - run: name: Ensure assets folder exists - command: mkdir libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + 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: @@ -145,7 +145,7 @@ jobs: - android/restore-gradle-cache - run: name: Ensure assets folder exists - command: mkdir libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + 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: @@ -189,7 +189,7 @@ jobs: - copy-gradle-properties - run: name: Ensure assets folder exists - command: mkdir libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + 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: @@ -231,7 +231,7 @@ jobs: - copy-gradle-properties - run: name: Ensure assets folder exists - command: mkdir libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + 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: From 599730e634d8b1bc5a7cc5e8ee67fad62c9ffedd Mon Sep 17 00:00:00 2001 From: Matt Chowning Date: Thu, 14 May 2020 09:32:17 -0400 Subject: [PATCH 3/5] Clarify error message when building gb from source with node_modules is missing --- build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 15e63cf559ee..89908d08b20c 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,8 @@ if (project.ext.buildGutenbergFromSource) { def nodeModulesDir = new File('libs/gutenberg-mobile/node_modules') if (!nodeModulesDir.exists()) { def message = "Attempting to build Gutenberg from source without a libs/gutenberg-mobile/node_modules directory. \ -Either run yarn install manually within libs/gutenberg-mobile or set wp.BUILD_GUTENBERG_FROM_SOURCE to false." +Either run `yarn install` manually within libs/gutenberg-mobile or disable building Gutenberg from source by \ +setting wp.BUILD_GUTENBERG_FROM_SOURCE to false." throw new GradleException(message) } } From bdf3354a1173683801af2e39737d327fe0eed131 Mon Sep 17 00:00:00 2001 From: Matt Chowning Date: Thu, 14 May 2020 15:44:24 -0400 Subject: [PATCH 4/5] Use Circle CI cache to avoid rebuilding Gutenberg JS bundle wip CircleCI --- .circleci/config.yml | 75 +++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 76bda9defac1..b12ec8e483e3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,6 +43,28 @@ commands: name: Yarn bundle Android working_directory: libs/gutenberg-mobile command: yarn bundle:android + save-gutenberg-bundle-cache: + steps: + - run: + name: Save Gutenberg-Mobile Submodule Hash + command: | + git rev-parse @:./libs/gutenberg-mobile > gutenberg_submodule_hash + cat gutenberg_submodule_hash + - save_cache: + name: Cache JS Bundle + key: android-js-bundle-{{ checksum "gutenberg_submodule_hash" }} + paths: + - libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets/index.android.bundle + restore-gutenberg-bundle-cache: + steps: + - run: + name: Save Gutenberg-Mobile Submodule Hash + command: | + git rev-parse @:./libs/gutenberg-mobile > gutenberg_submodule_hash + cat gutenberg_submodule_hash + - restore_cache: + name: Restore JS Bundle From Cache + key: android-js-bundle-{{ checksum "gutenberg_submodule_hash" }} version: 2.1 jobs: @@ -51,17 +73,26 @@ jobs: - image: circleci/node:10 steps: - git/shallow-checkout + - restore-gutenberg-bundle-cache + - run: + name: Abort If JS Bundle Exists + command: | + if [ -f "libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets/index.android.bundle" ]; then + echo "Gutenberg-Mobile bundle already in cache, no need to create a new one." + circleci-agent step halt + else + echo "Gutenberg-Mobile bundle not found in cache. Proceeding to generate new bundle" + fi - 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 + name: Ensure assets folder exists + command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + - run: + name: Move bundle to assets folder + command: mv libs/gutenberg-mobile/bundle/android/App.js libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets/index.android.bundle + - save-gutenberg-bundle-cache test: executor: name: android/default @@ -71,11 +102,7 @@ jobs: - 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 + - restore-gutenberg-bundle-cache - run: name: Test WordPress environment: @@ -97,11 +124,7 @@ jobs: - 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 + - restore-gutenberg-bundle-cache - run: name: Checkstyle environment: @@ -143,11 +166,7 @@ jobs: 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 + - restore-gutenberg-bundle-cache - run: name: Build APK environment: @@ -187,11 +206,7 @@ jobs: - 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 + - restore-gutenberg-bundle-cache - run: name: Build environment: @@ -229,11 +244,7 @@ jobs: - 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 + - restore-gutenberg-bundle-cache - run: name: Build environment: From afb45aa38701f446d12adb489ca8a4d0f1d7d867 Mon Sep 17 00:00:00 2001 From: Matt Chowning Date: Fri, 15 May 2020 13:56:39 -0400 Subject: [PATCH 5/5] Update gutenberg ref with new JS bundle location --- .circleci/config.yml | 8 ++++---- libs/gutenberg-mobile | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b12ec8e483e3..25d91ec3a4f5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -54,7 +54,7 @@ commands: name: Cache JS Bundle key: android-js-bundle-{{ checksum "gutenberg_submodule_hash" }} paths: - - libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets/index.android.bundle + - libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets/index.android.bundle restore-gutenberg-bundle-cache: steps: - run: @@ -77,7 +77,7 @@ jobs: - run: name: Abort If JS Bundle Exists command: | - if [ -f "libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets/index.android.bundle" ]; then + if [ -f "libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets/index.android.bundle" ]; then echo "Gutenberg-Mobile bundle already in cache, no need to create a new one." circleci-agent step halt else @@ -88,10 +88,10 @@ jobs: - yarn-bundle-android - run: name: Ensure assets folder exists - command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets - run: name: Move bundle to assets folder - command: mv libs/gutenberg-mobile/bundle/android/App.js libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets/index.android.bundle + command: mv libs/gutenberg-mobile/bundle/android/App.js libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets/index.android.bundle - save-gutenberg-bundle-cache test: executor: diff --git a/libs/gutenberg-mobile b/libs/gutenberg-mobile index 49df355cda1e..755671661f15 160000 --- a/libs/gutenberg-mobile +++ b/libs/gutenberg-mobile @@ -1 +1 @@ -Subproject commit 49df355cda1ea472b09c9b7fe3f3a109c562e29d +Subproject commit 755671661f1509c75384d908686e33ac6c6bc0b0