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

yarn_install - add optional yarn_install_directory parameter #124

Conversation

joshdholtz
Copy link
Contributor

@joshdholtz joshdholtz commented Jan 3, 2022

Motivation

Similar to pod_install's pod_install_directory parameter, this adds a yarn_install_directory to yarn_install

Description

Sometimes the package.json file isn't in the current/root directory so this option allows for project configurations where the package.json file is somewhere else

  • Defaults to an empty string which will run as previously did yarn install
  • Runs yarn --cwd <<yarn_install_directory>> if any non-empty string value is used

Example

- yarn_install:
    yarn_install_directory: examples/oneOfMyExampleApps
    cache_folder: ~/.cache/yarn

@joshdholtz joshdholtz requested a review from cortinico January 3, 2022 19:37
Copy link
Member

@vonovak vonovak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks good to me, but may I have a question?

yarn install has a bunch of parameters, and I don't think we want to support all of the parameters in the yarn_instal command - the command is just a proxy to yarn install itself.

@joshdholtz wouldn't it make more sense for people who need more customizations to just run yarn install --xyz with whichever params they need? Is there a reason that's not possible currently?

Thanks for your opinions :)

@joshdholtz
Copy link
Contributor Author

@vonovak I thought --cwd is a special parameter and actually needs to precede that yarn command. I thought I saw and tried yarn install --cwd <dir> and that didn't work and that it had to be yarn --cwd <dir> install... But I think I was wrong 😅

Are you thinking of making this parameter generic like extra_yarn_options so I could do:

- yarn_install:
    yarn_options: --cwd examples/oneOfMyExampleApps --verbose
    cache_folder: ~/.cache/yarn

Or something like that? ☝️

@vonovak
Copy link
Member

vonovak commented Jan 4, 2022

hi, thanks for explaining. What I had in mind was not relying on the yarn_install command provided by this package at all, like here:

https://github.com/react-native-datetimepicker/datetimepicker/blob/85c7a701677b60d86bef498fcd470cc67197c200/.circleci/config.yml#L21

ie. if people need special parameters, allow them to run yarn install whichever way they want.

the yarn_install command provided by this package would only be for the very simplest use cases, or perhaps could be removed altogether. But I'm not knowledgeable enough of the repo to be able to say if it makes sense and/or if it's possible... :)

@joshdholtz
Copy link
Contributor Author

joshdholtz commented Jan 4, 2022

@vonovak Ahhh, I see! 😊 That is essentially what we are doing right now 👉 https://github.com/RevenueCat/react-native-purchases/blob/purchase-tester-typescript/.circleci/config.yml#L10-L60

Usage here 👉 https://github.com/RevenueCat/react-native-purchases/blob/purchase-tester-typescript/.circleci/config.yml#L104-L120

We use other commands from the ReactNative orb and yarn_install is almost perfect for us to use (the caching built in is super nice) but doesn't work well with our example projects (because in sub directories). I figured that if we had this problem that others might have the same problem as well so just wanted to contribute back 😊

I'm totally fine if this is too much for this command but it just didn't feel write to copy it, change it, and not submit our changes upstream 🙃

@vonovak vonovak merged commit 3c659f9 into react-native-community:master Jan 4, 2022
react-native-community-bot pushed a commit that referenced this pull request Jan 4, 2022
# [6.1.0](v6.0.1...v6.1.0) (2022-01-04)

### Features

* add optional yarn_install_directory parameter ([#124](#124)) ([3c659f9](3c659f9))
@react-native-community-bot
Copy link
Collaborator

🎉 This PR is included in version 6.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

nova93 pushed a commit to levaclinic/react-native-circleci-orb that referenced this pull request Jan 8, 2024
# 1.0.0 (2024-01-08)

### Bug Fixes

* 'an unexpected storage error occurred' on multiline keys ([b9fb1bb](b9fb1bb))
* add missing CACHE_VERSION in pod_install ([b6c7e99](b6c7e99))
* leva instead of rnc ([531c8ab](531c8ab))
* quote cache keys that start with special characters ([b217d8c](b217d8c))
* removing old yarn version from PATH which hopefully fixes the issue ([cc25fff](cc25fff))
* something ([2f57788](2f57788))
* update XCode version to 12.5.1 ([react-native-community#158](https://github.com/levaclinic/react-native-circleci-orb/issues/158)) ([4bbdb75](4bbdb75))
* yaml parsing build_image_version default as double ([df23a73](df23a73))
* yaml parsing build_image_version default as double ([react-native-community#170](https://github.com/levaclinic/react-native-circleci-orb/issues/170)) ([3c8cb0f](3c8cb0f))
* **android:** Added new Android Command Line Tools for MacOS 12+ and Java 9, 10, 11 ([react-native-community#114](https://github.com/levaclinic/react-native-circleci-orb/issues/114) by [@lukebrandonfarrell](https://github.com/lukebrandonfarrell)) ([aeb45fe](aeb45fe))
* **android:** Define a max heap size for linux_android ([react-native-community#46](https://github.com/levaclinic/react-native-circleci-orb/issues/46) by [@vabanagas](https://github.com/vabanagas)) ([d029e0b](d029e0b))
* **android:** Ensure the Android emulator looks correct ([react-native-community#65](https://github.com/levaclinic/react-native-circleci-orb/issues/65) by [@vonovak](https://github.com/vonovak)) ([57744a4](57744a4))
* **android:** fix gradle build cache key ([react-native-community#130](https://github.com/levaclinic/react-native-circleci-orb/issues/130) by [@fotos](https://github.com/fotos)) ([acadf02](acadf02))
* **android:** fix JAVA_HOME path ([react-native-community#61](https://github.com/levaclinic/react-native-circleci-orb/issues/61) by [@vonovak](https://github.com/vonovak)) ([e4fa01f](e4fa01f))
* **android:** fix path to emulator ([react-native-community#60](https://github.com/levaclinic/react-native-circleci-orb/issues/60) by [@vonovak](https://github.com/vonovak)) ([8621ec9](8621ec9))
* **android:** Fix Permission denied issues when running gradlew ([react-native-community#72](https://github.com/levaclinic/react-native-circleci-orb/issues/72) by [@zpd106](https://github.com/zpd106)) ([0e22ef8](0e22ef8))
* **android:** move docker android pin to JDK11 version ([react-native-community#123](https://github.com/levaclinic/react-native-circleci-orb/issues/123)) ([d74d427](d74d427)), closes [react-native-community#122](https://github.com/levaclinic/react-native-circleci-orb/issues/122)
* **android:** pin docker image to 4.2 for JDK8 ([react-native-community#121](https://github.com/levaclinic/react-native-circleci-orb/issues/121)) ([fe2898a](fe2898a)), closes [react-native-community#120](https://github.com/levaclinic/react-native-circleci-orb/issues/120)
* **android:** Update android_emulator_start.yml to use the new  emulator ([react-native-community#64](https://github.com/levaclinic/react-native-circleci-orb/issues/64) by [@vonovak](https://github.com/vonovak)) ([73d27e2](73d27e2))
* **android:** Update gradle cache keys to match on save and restore ([react-native-community#17](https://github.com/levaclinic/react-native-circleci-orb/issues/17)) ([6e52052](6e52052))
* **android:** use JDK11 compatible JVM options ([react-native-community#122](https://github.com/levaclinic/react-native-circleci-orb/issues/122)) ([1923bcd](1923bcd)), closes [react-native-community#120](https://github.com/levaclinic/react-native-circleci-orb/issues/120)
* **android_test:** node v12 to v16 ([a9956b7](a9956b7))
* **ios:** Fix syntax errors ([aff9136](aff9136))
* **ios:** Possible fix for the NVM node version not carrying over between steps ([react-native-community#51](https://github.com/levaclinic/react-native-circleci-orb/issues/51)) ([ae71c53](ae71c53))
* **ios:** Revert changes from 4.2.0 ([2c3fa5e](2c3fa5e))
* **ios:** update default ios device to iPhone 11 ([react-native-community#127](https://github.com/levaclinic/react-native-circleci-orb/issues/127)) ([2e3b1e0](2e3b1e0))
* **ios_build:** node v12 to v16 ([f0ea6b4](f0ea6b4))
* **ios_build_and_test:** node v12 to v16 ([6347597](6347597))
* **setup_macos_executor:** bump node v12 to v16 ([a34ccec](a34ccec))
* Correct the Android java environment variables ([917129a](917129a))
* do not cache /usr/local/Homebrew ([react-native-community#119](https://github.com/levaclinic/react-native-circleci-orb/issues/119)) ([597e597](597e597))
* Do not fail then printing the fbsimctl help ([9d74ba9](9d74ba9))
* duplicated on_after_initialize  param ([react-native-community#78](https://github.com/levaclinic/react-native-circleci-orb/issues/78)) ([33ffc6b](33ffc6b))
* Ensure that the publish steps works correctly ([7e6c289](7e6c289))
* Ensure the CI works correctly ([51d7f49](51d7f49))
* Fix errors when installing NodeJS on MacOS executor ([react-native-community#40](https://github.com/levaclinic/react-native-circleci-orb/issues/40) by [@roni-castro](https://github.com/roni-castro)) ([19ac8f7](19ac8f7))
* Increase the amount of memory for Android builds ([22e8279](22e8279))
* Mac node install ([react-native-community#47](https://github.com/levaclinic/react-native-circleci-orb/issues/47) by [@vonovak](https://github.com/vonovak)) ([4a4b619](4a4b619))
* Move cache directory to the system temp folder to avoid permission issues ([react-native-community#59](https://github.com/levaclinic/react-native-circleci-orb/issues/59) by @Naturalclar) ([15f0d90](15f0d90))
* Remove deprecated cask usage from brew install ([react-native-community#85](https://github.com/levaclinic/react-native-circleci-orb/issues/85) by @CHNB128) ([de4ef76](de4ef76))
* Remove Deprecated CircleCI Spec Repo Cache ([react-native-community#82](https://github.com/levaclinic/react-native-circleci-orb/issues/82) by @BytesGuy) ([f45fcfe](f45fcfe))
* Remove FBSimulatorControl ([react-native-community#24](https://github.com/levaclinic/react-native-circleci-orb/issues/24) by [@compojoom](https://github.com/compojoom)) ([7c5b51a](7c5b51a))
* remove haxm the lack hardware acceleration support causes a crash ([9d0bb42](9d0bb42))
* remove haxm the lack hardware acceleration support causes a crash ([38ef88e](38ef88e)), closes [react-native-community#3](https://github.com/levaclinic/react-native-circleci-orb/issues/3)
* Removed the unused `build_threads` parameter in the `linux_android` executor ([97720b9](97720b9)), closes [react-native-community#19](https://github.com/levaclinic/react-native-circleci-orb/issues/19)
* **docs:** include the code repo link in the orb description ([6d97ca9](6d97ca9))
* Use project_type in ios_build_and_test job ([25c7948](25c7948))

### Features

* allow specifying build image version for android build & executor ([ee50537](ee50537))
* **node:** bump from node 12 to node 16 default ([0acc6f9](0acc6f9))
* Add `on_after_initialize` parameter to the jobs ([react-native-community#26](https://github.com/levaclinic/react-native-circleci-orb/issues/26) by [@compojoom](https://github.com/compojoom)) ([0ff6621](0ff6621))
* Add a `bundle` command ([react-native-community#8](https://github.com/levaclinic/react-native-circleci-orb/issues/8) by [@sunilchalla](https://github.com/sunilchalla)) ([464d661](464d661))
* Add a `store_artifact_path` to the Android and iOS test jobs which allow storing artifacts after a job runs ([react-native-community#54](https://github.com/levaclinic/react-native-circleci-orb/issues/54) by @MateusAndrade) ([19edf8a](19edf8a))
* add homebrew_update parameter to toggle brew update ([react-native-community#131](https://github.com/levaclinic/react-native-circleci-orb/issues/131)) ([6a7d635](6a7d635))
* Add jobs for building and testing ([2f24401](2f24401))
* add optional yarn_install_directory parameter ([react-native-community#124](https://github.com/levaclinic/react-native-circleci-orb/issues/124)) ([3c659f9](3c659f9))
* add parameter to allow configuring the android tests on build ([0569d66](0569d66))
* Add parameters to configure the executors ([7c044cb](7c044cb))
* Add parameters to disable caching ([ad81e99](ad81e99))
* Add pod cache ([react-native-community#67](https://github.com/levaclinic/react-native-circleci-orb/issues/67)) ([96b0f3f](96b0f3f))
* add pod_cache param to ios_build job ([react-native-community#140](https://github.com/levaclinic/react-native-circleci-orb/issues/140)) ([f18183f](f18183f))
* Added the `--frozen-lockfile` flag to the `yarn_install` command ([e4676c4](e4676c4)), closes [react-native-community#28](https://github.com/levaclinic/react-native-circleci-orb/issues/28)
* allow passing executor parameters to jobs ([react-native-community#133](https://github.com/levaclinic/react-native-circleci-orb/issues/133)) ([4a199fd](4a199fd))
* allow passing executor parameters to test jobs ([react-native-community#141](https://github.com/levaclinic/react-native-circleci-orb/issues/141)) ([eea6098](eea6098)), closes [react-native-community#112](https://github.com/levaclinic/react-native-circleci-orb/issues/112)
* allow passing pod_install_directory during ios_build job ([react-native-community#136](https://github.com/levaclinic/react-native-circleci-orb/issues/136)) ([faa7a01](faa7a01))
* Allow the metro packager to be started from the test jobs ([68846df](68846df))
* First major release ([81e839d](81e839d))
* Minor release ([5f401d7](5f401d7))
* pass through pod cache param from job to command ([react-native-community#138](https://github.com/levaclinic/react-native-circleci-orb/issues/138)) ([b156c1b](b156c1b))
* Skip Detox setup in ios_build job ([3fc5c53](3fc5c53))
* **android:** Add command to update the NDK to a given version ([react-native-community#91](https://github.com/levaclinic/react-native-circleci-orb/issues/91) by @CHNB128) ([64eac35](64eac35))
* **android:** Add hombrew cache param to android test job ([react-native-community#96](https://github.com/levaclinic/react-native-circleci-orb/issues/96) by @Kyonru) ([8314b6e](8314b6e))
* **android:** Pass through the `assemble_android_test` parameter from the `android_build` job to the command ([react-native-community#109](https://github.com/levaclinic/react-native-circleci-orb/issues/109) by [@ronwsmith](https://github.com/ronwsmith)) ([9f2e7fa](9f2e7fa))
* **Android:** Add optional command-running step after the emulator starts ([react-native-community#110](https://github.com/levaclinic/react-native-circleci-orb/issues/110) by [@ronwsmith](https://github.com/ronwsmith)) ([5ee8a30](5ee8a30))
* **ios:** Add Cocoapods Install Command ([react-native-community#48](https://github.com/levaclinic/react-native-circleci-orb/issues/48) by [@vonovak](https://github.com/vonovak)) ([a743bbc](a743bbc))
* **ios:** control if simulator starts in background ([react-native-community#126](https://github.com/levaclinic/react-native-circleci-orb/issues/126)) ([08338f9](08338f9))
* follow emulator best practices ([a5765a2](a5765a2))
* follow emulator best practices ([react-native-community#62](https://github.com/levaclinic/react-native-circleci-orb/issues/62)) ([ac709c1](ac709c1))
* Make yarn cache folder configurable ([react-native-community#103](https://github.com/levaclinic/react-native-circleci-orb/issues/103) by [@ronwsmith](https://github.com/ronwsmith)) ([c6ccaa1](c6ccaa1))
* Update default dependencies to meet React Native 0.64 requirements ([34ca501](34ca501))
* **ios:** Added an `ios_build` job ([react-native-community#30](https://github.com/levaclinic/react-native-circleci-orb/issues/30) by [@roni-castro](https://github.com/roni-castro)) ([b607782](b607782))
* **ios:** Ensure a simulator with the latest iOS version exists for the given name when testing ([2d614fa](2d614fa))
* **ios:** Upgrading Xcode to 11.0 ([react-native-community#45](https://github.com/levaclinic/react-native-circleci-orb/issues/45) by [@springcoil](https://github.com/springcoil)) ([78aad72](78aad72))
* First major version ([1682403](1682403))
* Use Node 10 by default ([react-native-community#37](https://github.com/levaclinic/react-native-circleci-orb/issues/37) by [@roni-castro](https://github.com/roni-castro)) ([3e7efc6](3e7efc6))

* fix!: using supported Node version with cimg/node and updating comments ([1186c41](1186c41))

### BREAKING CHANGES

* cimg/node doesn't support major Node version aliases the same way circleci/node did
* **android:** this orb is now using JDK11

See JDK8-->JDK11 migration notes here:
https://discuss.circleci.com/t/android-convenience-image-moving-to-java-v11-on-august-17th/36601/4
* The default dependencies used are now Xcode 12, CocoaPods 1.10.1, Node.js 12
* **ios:** You should confirm that your app is able to build on Xcode 11 before upgrade, however, most app will already support this.
* Node 10 is now the default version. The previous default of Node 8 is now end-of-life. Most users will have no issues with upgrading unless they use modules which rely on Node 8 behaviour. You can also now use the `node_version` parameter to set the Node version you require.
* The `yarn_install` command will now fail if there need to be changes made to your `yarn.lock` file. See [the Yarn documentation](https://yarnpkg.com/en/docs/cli/install#toc-yarn-install-frozen-lockfile) for details on this flag.
* This is the first major release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants