Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build gutenberg-mobile locally without JitPack #11833

Merged
merged 30 commits into from
May 8, 2020
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
c2bd1b2
Build gutenberg-mobile locally, without JitPack
hypest May 6, 2020
0b4dea7
Rename flag to better reflect its purpose
hypest May 6, 2020
1999670
Perform git submodule checkout on CircleCI
hypest May 6, 2020
5ab10b6
Exclude gutenberg-mobile from checkstyle
hypest May 6, 2020
37cd608
Try lifting the parallel gradle execution flag
hypest May 6, 2020
7d4f79e
Update gb-mobile hash
hypest May 6, 2020
b313cd3
Have a dedicated CircleCI job to build JS bundle
hypest May 6, 2020
d4291eb
Fix config error
hypest May 6, 2020
2fdbc92
Move working_directory directive inside the commands
hypest May 6, 2020
58df58e
Remove unneeded command definition
hypest May 6, 2020
23286cf
Correct path to lock file for cache key computation
hypest May 6, 2020
11dabd8
Correct path to generated JS bundle
hypest May 6, 2020
514d673
Correct path to yarn install data to cache
hypest May 6, 2020
5c8ce70
Correct path to root path to persist
hypest May 6, 2020
19a16a0
Attach built JS artifact to all build jobs
hypest May 6, 2020
c0db18c
Update gb-mobile hash to fix styling issues
hypest May 7, 2020
3a7514f
Ignore gutenberg-mobile lint errors, not yet fixed
hypest May 7, 2020
f498448
Bump gb-mobile hash to suppress lint errors on react-native-aztec
hypest May 7, 2020
0277ce3
Fix erroneous local paths in lint-baseline
hypest May 7, 2020
cf972ee
The hermes binaries are picked up from the gb-mobile build now
hypest May 7, 2020
bc509b3
Default to building the JS bundle but not on CircleCI
hypest May 7, 2020
c4c9f8d
Try running the test job without gradle daemon
hypest May 7, 2020
376eca5
Manually add the suppression flag in the gradle command line
hypest May 7, 2020
4140cf8
Explicitly specify JVM arguments in gradle command for circle ci tests
mchowning May 7, 2020
144093d
Rely on the JVS settings in gradle.properties-example
hypest May 7, 2020
610239f
Reinstate parallel flag in gradle
hypest May 7, 2020
c05efbc
No need to pull nested gb-mobile submodules on CI
hypest May 7, 2020
e0f5444
Update gb-mobile hash, pointing to its master
hypest May 8, 2020
bb1e0a0
Bump gb-mobile hash with merged JS bundles
hypest May 8, 2020
8268e44
Update to the merged-to-master gb-mobile hash
hypest May 8, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 111 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 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
Expand All @@ -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 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
Expand All @@ -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 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)
Expand Down Expand Up @@ -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 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
Expand Down Expand Up @@ -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 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
Expand All @@ -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
Expand All @@ -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: false
# Always run connected tests on develop and release branches
filters:
Expand Down
Loading