formidablelabs / appr Goto Github PK
View Code? Open in Web Editor NEWOpen React Native PR Builds instantly on device
License: MIT License
Open React Native PR Builds instantly on device
License: MIT License
Hello,
I have followed the documentation to configure appr but the build travis stops with the following error message:"Loading dependency graph, done.".
What could this problem be? I think it's because expo is launching the application and waiting for interactions, but I don't know how to fix this problem.
Thank you
Hi, would be great if anyone could help me. I have followed all the steps but I get an error when building with Travis.
xxxxx/node_modules/appr/scripts/config.js:20
throw new Error(Missing configuration key ${key}
);
^
Error: Missing configuration key expUsername
This is the pull request/repo I am working on for reference:
TK-data/BilparkApp#18
Thanks!
It is stated in the readme that appr only works for CRNA or Expo created projects. There is a limitation and appr will not work for - React Native apps started with something other than create-react-native-app or Expo.
Are there any plans to make it work for projects created with react-native cli?
Currently the pipeline succeeds, the project appears in expo and there's a comment with QR code in the PR, but the application fails to open
All of my builds fail with CircleCI at
[exp] ERROR watch /home/ubuntu/citest2/node_modules/react-native-maps/lib/android/build/tmp/expandedArchives/classes.jar_rvtuwwbhztnbbkxi8oruhd9v/android/support/v4/hardware/fingerprint ENOSPC
I'm guessing because of the watch command? Here is the full log.
if [ "$CI_PULL_REQUEST" != "" ]; then yarn appr; fi
yarn appr v0.27.5
$ appr
[appr] Logging into Expo...
There is a new version of exp available (44.0.0).
You are currently using exp 36.0.0
Run `npm install -g exp` to get the latest version
Success.
[appr] Logged into Expo.
[appr] Preparing project for publish...
[appr] Publishing project into Expo.
There is a new version of exp available (44.0.0).
You are currently using exp 36.0.0
Run `npm install -g exp` to get the latest version
[exp] Making sure project is set up correctly...
-[exp] Warning: Not using the Expo fork of react-native. See https://docs.getexponent.com/.
-[exp] Warning: 'react' peer depencency missing. Run `npm ls` in /home/ubuntu/citest2 to see full warning.
[exp]
[exp] If there is an issue running your project, please run `npm install` in /home/ubuntu/citest2 and restart.
[exp] Your project looks good!
[exp] Unable to find an existing exp instance for this directory, starting a new one...
[exp] Warning: Not using the Expo fork of react-native. See https://docs.getexponent.com/.
[exp] Warning: 'react' peer depencency missing. Run `npm ls` in /home/ubuntu/citest2 to see full warning.
[exp]
[exp] If there is an issue running your project, please run `npm install` in /home/ubuntu/citest2 and restart.
[exp] Starting React Native packager...
[exp] Scanning 826 folders for symlinks in /home/ubuntu/citest2/node_modules (9ms)
[exp]
[exp] Running packager on port 19001
[exp]
[exp]
[exp]
[exp] Looking for JS files in
[exp] /home/ubuntu/citest2
[exp]
[exp]
[exp]
[exp]
[exp] React packager ready.
[exp]
[exp]
[exp]
[exp] Publishing...
[exp] ERROR watch /home/ubuntu/citest2/node_modules/react-native-maps/lib/android/build/tmp/expandedArchives/classes.jar_rvtuwwbhztnbbkxi8oruhd9v/android/support/v4/hardware/fingerprint ENOSPC
[exp]
[exp] {"code":"ENOSPC","errno":"ENOSPC","syscall":"watch /home/ubuntu/citest2/node_modules/react-native-maps/lib/android/build/tmp/expandedArchives/classes.jar_rvtuwwbhztnbbkxi8oruhd9v/android/support/v4/hardware/fingerprint","filename":"/home/ubuntu/citest2/node_modules/react-native-maps/lib/android/build/tmp/expandedArchives/classes.jar_rvtuwwbhztnbbkxi8oruhd9v/android/support/v4/hardware/fingerprint"}
[exp] Error: watch /home/ubuntu/citest2/node_modules/react-native-maps/lib/android/build/tmp/expandedArchives/classes.jar_rvtuwwbhztnbbkxi8oruhd9v/android/support/v4/hardware/fingerprint ENOSPC
[exp] at exports._errnoException (util.js:1022:11)
[exp] at FSWatcher.start (fs.js:1429:19)
[exp] at Object.fs.watch (fs.js:1456:11)
[exp] at NodeWatcher.watchdir (/home/ubuntu/citest2/node_modules/jest-haste-map/node_modules/sane/src/node_watcher.js:150:20)
[exp] at Walker.<anonymous> (/home/ubuntu/citest2/node_modules/jest-haste-map/node_modules/sane/src/node_watcher.js:374:12)
[exp] at emitTwo (events.js:106:13)
[exp] at Walker.emit (events.js:191:7)
[exp] at /home/ubuntu/citest2/node_modules/walker/lib/walker.js:69:16
[exp] at go$readdir$cb (/home/ubuntu/citest2/node_modules/graceful-fs/graceful-fs.js:149:14)
[exp] at FSReqWrap.oncomplete (fs.js:123:15)
[exp]
[exp] socket hang up
Error: socket hang up
at createHangUpError (_http_client.js:254:15)
at Socket.socketOnEnd (_http_client.js:346:23)
at emitNone (events.js:91:20)
at Socket.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
/home/ubuntu/citest2/node_modules/appr/index.js:22
throw new Error('Failed to publish package to Expo');
^
Error: Failed to publish package to Expo
at publishError (/home/ubuntu/citest2/node_modules/appr/index.js:22:13)
at ChildProcess.child.on.code (/home/ubuntu/citest2/node_modules/appr/scripts/spawn.js:16:5)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:877:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
error Command failed with exit code 1.
if [ "$CI_PULL_REQUEST" != "" ]; then yarn appr; fi returned exit code 1
Action failed: if [ "$CI_PULL_REQUEST" != "" ]; then yarn appr; fi
As an additional / optional config this section: https://github.com/FormidableLabs/appr#add-travisyml-to-your-project I thought the recommendation for "only PRs + master" was more canonically:
branches:
only:
- master
slug
is required in app.json.
If i set that field, appr
don't work anymore. Because if still publish to that slug.
This regexp missing flag g
so it only replaces first characters
Line 5 in 7073907
'my-app-@giautm/@signature'.replace(/[^a-zA-Z0-9\\-]/, '-')
"my-app--giautm/@signature"
I currently have a project set up to use appr by deploying pull requests (like the docs say).
Is there a way to deploy my master branch to the master Expo branch when master is updated?
Thanks!
Expo has rolled out support for official release channels. These are a lot more elegant way of what we are currently solving by namespacing the package name with a branch name.
PR #22 adds release channel support. The scope of that PR is to use release channels as separate argument, but instead we might want to just use that as the primary mechanism.
Is there a plan to introduce Appr for Gitlab CI?
appr
's current behaviour is to prefer <app>/node_modules/exp
over <app>/node_modules/appr/node_modules/exp
- a duplication that exists if the app has a newer or incompatible version of exp
as a dependency.
This is useful behaviour - e.g. to synchronise the version of exp
between appr
and any custom CI scripts used by the app. Moving exp
to peerDependencies
would simply codify it and make it explicit.
I’m using appr
with Circle CI 2.0. If there’s no good reason to document the configuration in CircleCI 1.0 on README, it would be nice to update the doc for developpers like me.
Hi there,
I'm a newbie and want to set appr up for heroku pipelines.
Any advice will be appreciated.
Thanks
I replaced exp
with recently released expo-cli
and it borke appr. Even re-adding exp
did not help. This is the part of travis log that shows the error:
$ appr
[appr] Logging into Expo...
{ Error: spawn ./node_modules/exp/bin/exp.js ENOENT
at _errnoException (util.js:1024:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:678:11)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn ./node_modules/exp/bin/exp.js',
path: './node_modules/exp/bin/exp.js',
spawnargs:
[ 'login',
'-u',
'[secure]',
'-p',
'[secure]',
'--non-interactive' ] }
/home/travis/build/hiposfer/hive/node_modules/appr/index.js:13
throw new Error('Failed to log into Expo');
^
Error: Failed to log into Expo
at loginError (/home/travis/build/hiposfer/hive/node_modules/appr/index.js:13:11)
at ChildProcess.child.on.code (/home/travis/build/hiposfer/hive/node_modules/appr/scripts/spawn.js:16:5)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at maybeClose (internal/child_process.js:925:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:678:11)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
I'm encountering a similar issue to #21 (only it's on Travis rather than CircleCI). ssh
ing into the build worker and tweaking appr/index.js
, I am able to get it to publish using exp publish --max-workers=1
(introduced in exp
v50.0.0). (I'm going to try using a quick fork of appr
to validate that this completely solves the issue, will report back)
What do you think of having a generic way to pass options to exp publish
through appr
? Or at least a way to pass --max-workers
through? Or even just defaulting to --max-workers=1
?
After the latest release a2520e3d97f08356b950fc29558dc4c49615736
I'm getting an error.
Running on Travis on OSX:
[exp] Invalid Version: undefined
[exp] TypeError: Invalid Version: undefined
at new SemVer (/Users/travis/build/companyApp/company-ui/node_modules/semver/semver.js:279:11)
at Function.major (/Users/travis/build/companyApp/company-ui/node_modules/semver/semver.js:551:10)
at /xdl/src/project/Doctor.js:629:18
at /Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:4944:15
at baseForOwn (/Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:3001:24)
at /Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:4913:18
at Function.forEach (/Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:9359:14)
at /xdl/src/project/Doctor.js:619:9
at Generator.throw (<anonymous>)
at step (/Users/travis/build/companyApp/company-ui/node_modules/exp/node_modules/xdl/build/project/Doctor.js:615:191)
at /Users/travis/build/companyApp/company-ui/node_modules/exp/node_modules/xdl/build/project/Doctor.js:615:402
at <anonymous>
/Users/travis/build/companyApp/company-ui/node_modules/appr/index.js:22
throw new Error('Failed to publish package to Expo');
^
Error: Failed to publish package to Expo
at publishError (/Users/travis/build/companyApp/company-ui/node_modules/appr/index.js:22:13)
at ChildProcess.child.on.code (/Users/travis/build/companyApp/company-ui/node_modules/appr/scripts/spawn.js:16:5)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at maybeClose (internal/child_process.js:925:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
The command "yarn appr" exited with 1.
cache.2
store build cache
what about the option that is left right now to send the link to your mail, maybe automate it?(two step instead of one, but still better than nothing)
Currently appr
will create a new comment for every build in an open PR - most commonly this means for every push, which can get a bit spammy.
Consider making the user experience better by amending existing comments, or if we still want to post a new comment every time, at least collapsing the content of older comments.
Danger does this quite well. We could see if we can use Danger internally, or more likely, just get inspiration of how it works since we may not want the full danger comment format.
Error starting tunnel: Error: {"status_code":400,"msg":"failed to deserialize request parameter","details":{"err":{"Type":{}}}}
Running yarn appr
gives an error. It publishes the pr branch to the main expo project (in this case https://exp.host/@marcdel/cheese-log), but the returned QR code is invalid because the PR branch "experience" is unavailable (exp://exp.host/@marcdel/cheese-log-add-appr).
You can see the associated build here.
https://travis-ci.org/solid-af/cheese-log#L277
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.