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

Fix error related to Appium when installing dependencies in NPM version 7.5.2 #28849

Closed
wants to merge 6 commits into from

Conversation

fluiddot
Copy link
Contributor

@fluiddot fluiddot commented Feb 8, 2021

Addresses #28834

Description

Running npm install with NPM version 7.5.2 produces the following error:

npm ERR! code ENOENT
npm ERR! syscall chmod
npm ERR! path <WORKSPACE_DIR>/gutenberg/node_modules/appium/node_modules/.bin/authorize-ios
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, chmod '<WORKSPACE_DIR>/gutenberg/node_modules/appium/node_modules/.bin/authorize-ios'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     <HOME_DIR>/.npm/_logs/2021-02-08T11_26_48_383Z-debug.log

How has this been tested?

  1. Install latest NPM version 7.5.2 (with NVM: nvm install --latest-npm)
  2. Run npm install

Screenshots

N/A

Types of changes

Bug fix

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@fluiddot fluiddot added [Type] Bug An existing feature does not function as intended [Type] Build Tooling Issues or PRs related to build tooling labels Feb 8, 2021
@fluiddot fluiddot self-assigned this Feb 8, 2021
@fluiddot fluiddot changed the title Fix error when installing dependencies in NPM version 7.5.2 Fix error related to Appium when installing dependencies in NPM version 7.5.2 Feb 8, 2021
@github-actions
Copy link

github-actions bot commented Feb 8, 2021

Size Change: 0 B

Total Size: 1.36 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.78 kB 0 B
build/api-fetch/index.js 3.4 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/index.js 9.1 kB 0 B
build/block-directory/style-rtl.css 1.01 kB 0 B
build/block-directory/style.css 1.01 kB 0 B
build/block-editor/index.js 123 kB 0 B
build/block-editor/style-rtl.css 12 kB 0 B
build/block-editor/style.css 12 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 103 B 0 B
build/block-library/blocks/audio/style.css 103 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 465 B 0 B
build/block-library/blocks/button/style.css 464 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 233 B 0 B
build/block-library/blocks/buttons/editor.css 233 B 0 B
build/block-library/blocks/buttons/style-rtl.css 303 B 0 B
build/block-library/blocks/buttons/style.css 303 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 421 B 0 B
build/block-library/blocks/columns/style.css 421 B 0 B
build/block-library/blocks/cover/editor-rtl.css 390 B 0 B
build/block-library/blocks/cover/editor.css 389 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.25 kB 0 B
build/block-library/blocks/cover/style.css 1.25 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 396 B 0 B
build/block-library/blocks/embed/style.css 395 B 0 B
build/block-library/blocks/file/editor-rtl.css 199 B 0 B
build/block-library/blocks/file/editor.css 198 B 0 B
build/block-library/blocks/file/style-rtl.css 248 B 0 B
build/block-library/blocks/file/style.css 248 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.45 kB 0 B
build/block-library/blocks/freeform/editor.css 2.45 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 679 B 0 B
build/block-library/blocks/gallery/editor.css 679 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.07 kB 0 B
build/block-library/blocks/gallery/style.css 1.06 kB 0 B
build/block-library/blocks/group/editor-rtl.css 318 B 0 B
build/block-library/blocks/group/editor.css 317 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/heading/editor-rtl.css 129 B 0 B
build/block-library/blocks/heading/editor.css 129 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 717 B 0 B
build/block-library/blocks/image/editor.css 716 B 0 B
build/block-library/blocks/image/style-rtl.css 477 B 0 B
build/block-library/blocks/image/style.css 478 B 0 B
build/block-library/blocks/latest-comments/editor-rtl.css 159 B 0 B
build/block-library/blocks/latest-comments/editor.css 158 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 269 B 0 B
build/block-library/blocks/latest-comments/style.css 269 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 523 B 0 B
build/block-library/blocks/latest-posts/style.css 522 B 0 B
build/block-library/blocks/list/editor-rtl.css 65 B 0 B
build/block-library/blocks/list/editor.css 65 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 191 B 0 B
build/block-library/blocks/media-text/editor.css 191 B 0 B
build/block-library/blocks/media-text/style-rtl.css 535 B 0 B
build/block-library/blocks/media-text/style.css 532 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 392 B 0 B
build/block-library/blocks/navigation-link/editor.css 394 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 704 B 0 B
build/block-library/blocks/navigation-link/style.css 702 B 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.33 kB 0 B
build/block-library/blocks/navigation/editor.css 1.33 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 174 B 0 B
build/block-library/blocks/navigation/style.css 174 B 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/page-list/editor-rtl.css 214 B 0 B
build/block-library/blocks/page-list/editor.css 214 B 0 B
build/block-library/blocks/page-list/style-rtl.css 527 B 0 B
build/block-library/blocks/page-list/style.css 526 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 109 B 0 B
build/block-library/blocks/paragraph/editor.css 109 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 273 B 0 B
build/block-library/blocks/paragraph/style.css 273 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 250 B 0 B
build/block-library/blocks/post-comments-form/style.css 250 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 100 B 0 B
build/block-library/blocks/post-featured-image/style.css 100 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 63 B 0 B
build/block-library/blocks/preformatted/style.css 63 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 316 B 0 B
build/block-library/blocks/pullquote/style.css 316 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 90 B 0 B
build/block-library/blocks/query-loop/editor.css 89 B 0 B
build/block-library/blocks/query-loop/style-rtl.css 315 B 0 B
build/block-library/blocks/query-loop/style.css 317 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query/editor-rtl.css 159 B 0 B
build/block-library/blocks/query/editor.css 160 B 0 B
build/block-library/blocks/quote/editor-rtl.css 61 B 0 B
build/block-library/blocks/quote/editor.css 61 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 165 B 0 B
build/block-library/blocks/search/editor.css 165 B 0 B
build/block-library/blocks/search/style-rtl.css 342 B 0 B
build/block-library/blocks/search/style.css 344 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 236 B 0 B
build/block-library/blocks/separator/style.css 236 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 504 B 0 B
build/block-library/blocks/shortcode/editor.css 504 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 201 B 0 B
build/block-library/blocks/site-logo/editor.css 201 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 117 B 0 B
build/block-library/blocks/site-logo/style.css 117 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 677 B 0 B
build/block-library/blocks/social-links/editor.css 677 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB 0 B
build/block-library/blocks/social-links/style.css 1.37 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 302 B 0 B
build/block-library/blocks/spacer/editor.css 302 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/subhead/editor-rtl.css 99 B 0 B
build/block-library/blocks/subhead/editor.css 99 B 0 B
build/block-library/blocks/subhead/style-rtl.css 80 B 0 B
build/block-library/blocks/subhead/style.css 80 B 0 B
build/block-library/blocks/table/editor-rtl.css 489 B 0 B
build/block-library/blocks/table/editor.css 489 B 0 B
build/block-library/blocks/table/style-rtl.css 386 B 0 B
build/block-library/blocks/table/style.css 386 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 680 B 0 B
build/block-library/blocks/template-part/editor.css 679 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/editor-rtl.css 62 B 0 B
build/block-library/blocks/verse/editor.css 62 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 504 B 0 B
build/block-library/blocks/video/editor.css 503 B 0 B
build/block-library/blocks/video/style-rtl.css 193 B 0 B
build/block-library/blocks/video/style.css 193 B 0 B
build/block-library/common-rtl.css 1.01 kB 0 B
build/block-library/common.css 1.01 kB 0 B
build/block-library/editor-rtl.css 9.1 kB 0 B
build/block-library/editor.css 9.09 kB 0 B
build/block-library/index.js 145 kB 0 B
build/block-library/style-rtl.css 8.78 kB 0 B
build/block-library/style.css 8.78 kB 0 B
build/block-library/theme-rtl.css 748 B 0 B
build/block-library/theme.css 748 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48.2 kB 0 B
build/components/index.js 270 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/compose/index.js 11 kB 0 B
build/core-data/index.js 16.8 kB 0 B
build/data-controls/index.js 828 B 0 B
build/data/index.js 8.86 kB 0 B
build/date/index.js 31.8 kB 0 B
build/deprecated/index.js 769 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.93 kB 0 B
build/edit-navigation/index.js 10.5 kB 0 B
build/edit-navigation/style-rtl.css 1.11 kB 0 B
build/edit-navigation/style.css 1.11 kB 0 B
build/edit-post/index.js 307 kB 0 B
build/edit-post/style-rtl.css 6.79 kB 0 B
build/edit-post/style.css 6.78 kB 0 B
build/edit-site/index.js 24.2 kB 0 B
build/edit-site/style-rtl.css 4.04 kB 0 B
build/edit-site/style.css 4.04 kB 0 B
build/edit-widgets/index.js 20 kB 0 B
build/edit-widgets/style-rtl.css 3.2 kB 0 B
build/edit-widgets/style.css 3.2 kB 0 B
build/editor/editor-styles-rtl.css 543 B 0 B
build/editor/editor-styles.css 545 B 0 B
build/editor/index.js 41.8 kB 0 B
build/editor/style-rtl.css 3.89 kB 0 B
build/editor/style.css 3.89 kB 0 B
build/element/index.js 4.61 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.77 kB 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.js 2.28 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.73 kB 0 B
build/is-shallow-equal/index.js 699 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.93 kB 0 B
build/list-reusable-blocks/index.js 3.15 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/media-utils/index.js 5.36 kB 0 B
build/notices/index.js 1.85 kB 0 B
build/nux/index.js 3.41 kB 0 B
build/nux/style-rtl.css 731 B 0 B
build/nux/style.css 727 B 0 B
build/plugins/index.js 2.54 kB 0 B
build/primitives/index.js 1.42 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 2.92 kB 0 B
build/rich-text/index.js 13.4 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 3.01 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

@fluiddot fluiddot mentioned this pull request Feb 8, 2021
6 tasks
@ockham
Copy link
Contributor

ockham commented Feb 8, 2021

I've merged #28824, will rebase this PR now.

@ockham
Copy link
Contributor

ockham commented Feb 8, 2021

BTW @fluiddot, I'm not really seeing any errors/warnings about the git+ssh protocol issues that you mentioned in #28824 (comment) 🤔

Instead, I'm still getting the other error (about chmod 'gutenberg/node_modules/appium/build/lib/main.js'):

npm ERR! code ENOENT
npm ERR! syscall chmod
npm ERR! path gutenberg/node_modules/appium/build/lib/main.js
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, chmod 'gutenberg/node_modules/appium/build/lib/main.js'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 8, 2021

BTW @fluiddot, I'm not really seeing any errors/warnings about the git+ssh protocol issues that you mentioned in #28824 (comment) 🤔

Instead, I'm still getting the other error (about chmod 'gutenberg/node_modules/appium/build/lib/main.js'):

npm ERR! code ENOENT
npm ERR! syscall chmod
npm ERR! path gutenberg/node_modules/appium/build/lib/main.js
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, chmod 'gutenberg/node_modules/appium/build/lib/main.js'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

Yeah I had that too, I'm not sure what's causing it, the only way I got it fixed was by running npm install with npm@6 and then switch to npm@7. After that even removing the node_modules folder and installing all dependencies again worked.

I though that it could be related to the new package-lock format, are you having this error with the changes from this branch?

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 8, 2021

Regarding the errors with git+ssh, this is only happening on CI jobs (an example), I think it can't be reproduced locally.

There's an opened issue on npm/cli repository about this.

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 8, 2021

I checked in the NPM 7 release post that now npm install will always resolve dependencies with git+ssh:

From "Changes in npm v7":

Git dependencies on known git hosts (GitHub, BitBucket, etc.) will always attempt to fetch package contents from the relevant tarball CDNs if possible, falling back to git+ssh for private packages. resolved value in package-lock.json will always reflect the git+ssh url value. Saved value in package.json dependencies will always reflect the canonical shorthand value.

Unless we find a workaround for this, one option would be to update the CI workflows so they have access by SSH to the forks.

@ockham
Copy link
Contributor

ockham commented Feb 8, 2021

I checked in the NPM 7 release post that now npm install will always resolve dependencies with git+ssh:

From "Changes in npm v7":

Git dependencies on known git hosts (GitHub, BitBucket, etc.) will always attempt to fetch package contents from the relevant tarball CDNs if possible, falling back to git+ssh for private packages. resolved value in package-lock.json will always reflect the git+ssh url value. Saved value in package.json dependencies will always reflect the canonical shorthand value.

Unless we find a workaround for this, one option would be to update the CI workflows so they have access by SSH to the forks.

Hmm, still sounds like a bug to me. I mean npm is now part of GitHub, certainly they should make sure that an npm upgrade won't break GitHub Actions workflows that attempt to fetch npm dependencies from GitHub? 🤔

@ockham
Copy link
Contributor

ockham commented Feb 8, 2021

BTW @fluiddot, I'm not really seeing any errors/warnings about the git+ssh protocol issues that you mentioned in #28824 (comment) thinking
Instead, I'm still getting the other error (about chmod 'gutenberg/node_modules/appium/build/lib/main.js'):

npm ERR! code ENOENT
npm ERR! syscall chmod
npm ERR! path gutenberg/node_modules/appium/build/lib/main.js
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, chmod 'gutenberg/node_modules/appium/build/lib/main.js'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

Yeah I had that too, I'm not sure what's causing it, the only way I got it fixed was by running npm install with npm@6 and then switch to npm@7. After that even removing the node_modules folder and installing all dependencies again worked.

I though that it could be related to the new package-lock format, are you having this error with the changes from this branch?

Ah! Seems like I don't! I removed my node_modules (and packages/*/node_modules), checked out this branch, enabled node 14 + npm 7, and was able to run npm i 🎉

I'm getting a package-lock.json diff from that tho -- with the git+https -> git+ssh changes 😬

diff --git a/package-lock.json b/package-lock.json
index 1fb46604ba..379e505aaf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -72915,11 +72915,11 @@
 			"integrity": "sha512-ng6Tm537E/M42GjE4TRUxQyL8sRfClcL7bQWblOCoxPZzJ2J3bdALsjeG3vDnVCIfI/R0AeFalN9KjMt0+Z/Zg=="
 		},
 		"@react-native-community/masked-view": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-masked-view.git#f65a51a3320e58404d7f38d967bfd1f42b439ca9",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-masked-view.git#f65a51a3320e58404d7f38d967bfd1f42b439ca9",
 			"from": "@react-native-community/masked-view@git+https://github.com/wordpress-mobile/react-native-masked-view.git#f65a51a3320e58404d7f38d967bfd1f42b439ca9"
 		},
 		"@react-native-community/slider": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-slider.git#d263ff16cdd9fb7352b354342522ff030f220f42",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-slider.git#d263ff16cdd9fb7352b354342522ff030f220f42",
 			"from": "@react-native-community/slider@git+https://github.com/wordpress-mobile/react-native-slider.git#d263ff16cdd9fb7352b354342522ff030f220f42"
 		},
 		"@react-navigation/core": {
@@ -103911,7 +103911,7 @@
 			}
 		},
 		"jsdom-jscore-rn": {
-			"version": "git+https://git@github.com/iamcco/jsdom-jscore-rn.git#a562f3d57c27c13e5bfc8cf82d496e69a3ba2800",
+			"version": "git+ssh://git@github.com/iamcco/jsdom-jscore-rn.git#a562f3d57c27c13e5bfc8cf82d496e69a3ba2800",
 			"from": "jsdom-jscore-rn@git+https://github.com/iamcco/jsdom-jscore-rn.git#a562f3d57c27c13e5bfc8cf82d496e69a3ba2800",
 			"requires": {
 				"htmlparser2-without-node-native": "^3.9.2",
@@ -113333,7 +113333,7 @@
 			}
 		},
 		"react-native-dark-mode": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-dark-mode.git#f09bf1480e7b34536413ab3300f29e4375edb2c6",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-dark-mode.git#f09bf1480e7b34536413ab3300f29e4375edb2c6",
 			"from": "react-native-dark-mode@git+https://github.com/wordpress-mobile/react-native-dark-mode.git#f09bf1480e7b34536413ab3300f29e4375edb2c6",
 			"requires": {
 				"@types/events": "^3.0.0",
@@ -113351,7 +113351,7 @@
 			}
 		},
 		"react-native-gesture-handler": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-gesture-handler.git#b80e959908b383a26d6e35d992d6d529efad0b16",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-gesture-handler.git#b80e959908b383a26d6e35d992d6d529efad0b16",
 			"from": "react-native-gesture-handler@git+https://github.com/wordpress-mobile/react-native-gesture-handler.git#b80e959908b383a26d6e35d992d6d529efad0b16",
 			"requires": {
 				"@egjs/hammerjs": "^2.0.17",
@@ -113361,14 +113361,14 @@
 			}
 		},
 		"react-native-get-random-values": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-get-random-values.git#f03f2c16414aff4ea76064dcd00a9e3c6efc838d",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-get-random-values.git#f03f2c16414aff4ea76064dcd00a9e3c6efc838d",
 			"from": "react-native-get-random-values@git+https://github.com/wordpress-mobile/react-native-get-random-values.git#f03f2c16414aff4ea76064dcd00a9e3c6efc838d",
 			"requires": {
 				"fast-base64-decode": "^1.0.0"
 			}
 		},
 		"react-native-hr": {
-			"version": "git+https://git@github.com/Riglerr/react-native-hr.git#2d01a5cf77212d100e8b99e0310cce5234f977b3",
+			"version": "git+ssh://git@github.com/Riglerr/react-native-hr.git#2d01a5cf77212d100e8b99e0310cce5234f977b3",
 			"from": "react-native-hr@git+https://github.com/Riglerr/react-native-hr.git#2d01a5cf77212d100e8b99e0310cce5234f977b3"
 		},
 		"react-native-hsv-color-picker": {
@@ -113385,7 +113385,7 @@
 			"integrity": "sha512-+/bcZWFeZt0xSS/+3CHM5K7qPL4vDO/3ARLIowzFpUPGZiPsv9+NET+XNqqseRYwFJwYMmtX+Q4TZKxAVy09ew=="
 		},
 		"react-native-keyboard-aware-scroll-view": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-keyboard-aware-scroll-view.git#678a4d459caa2f7f448202574dddc6a19954500c",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-keyboard-aware-scroll-view.git#678a4d459caa2f7f448202574dddc6a19954500c",
 			"from": "react-native-keyboard-aware-scroll-view@git+https://github.com/wordpress-mobile/react-native-keyboard-aware-scroll-view.git#gb-v0.8.8",
 			"requires": {
 				"prop-types": "^15.6.2",
@@ -113393,7 +113393,7 @@
 			}
 		},
 		"react-native-linear-gradient": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-linear-gradient.git#52bf43077171cff8714ce3e0155f3ebb7f55bc37",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-linear-gradient.git#52bf43077171cff8714ce3e0155f3ebb7f55bc37",
 			"from": "react-native-linear-gradient@git+https://github.com/wordpress-mobile/react-native-linear-gradient.git#52bf43077171cff8714ce3e0155f3ebb7f55bc37"
 		},
 		"react-native-modal": {
@@ -113406,7 +113406,7 @@
 			}
 		},
 		"react-native-reanimated": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-reanimated.git#ed48f510fba751cd75da7629e92276166766be91",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-reanimated.git#ed48f510fba751cd75da7629e92276166766be91",
 			"from": "react-native-reanimated@git+https://github.com/wordpress-mobile/react-native-reanimated.git#ed48f510fba751cd75da7629e92276166766be91",
 			"requires": {
 				"fbjs": "^1.0.0"
@@ -113443,7 +113443,7 @@
 			}
 		},
 		"react-native-safe-area-context": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-safe-area-context.git#1e3c0d34f31b59fb79f71ec0b4c39c513f684871",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-safe-area-context.git#1e3c0d34f31b59fb79f71ec0b4c39c513f684871",
 			"from": "react-native-safe-area-context@git+https://github.com/wordpress-mobile/react-native-safe-area-context.git#1e3c0d34f31b59fb79f71ec0b4c39c513f684871"
 		},
 		"react-native-sass-transformer": {
@@ -113464,11 +113464,11 @@
 			}
 		},
 		"react-native-screens": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-screens.git#b3d907bda2695743f35fd874261dcd27e0912eca",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-screens.git#b3d907bda2695743f35fd874261dcd27e0912eca",
 			"from": "react-native-screens@git+https://github.com/wordpress-mobile/react-native-screens.git#b3d907bda2695743f35fd874261dcd27e0912eca"
 		},
 		"react-native-svg": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-svg.git#a628e92990a2404e30a0086f168bd2b5b7b4ce96",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-svg.git#a628e92990a2404e30a0086f168bd2b5b7b4ce96",
 			"from": "react-native-svg@git+https://github.com/wordpress-mobile/react-native-svg.git#a628e92990a2404e30a0086f168bd2b5b7b4ce96",
 			"requires": {
 				"css-select": "^2.0.2",
@@ -113550,7 +113550,7 @@
 			}
 		},
 		"react-native-video": {
-			"version": "git+https://git@github.com/wordpress-mobile/react-native-video.git#1b964b107863351ed744fc104d7952bbec3e2d4f",
+			"version": "git+ssh://git@github.com/wordpress-mobile/react-native-video.git#1b964b107863351ed744fc104d7952bbec3e2d4f",
 			"from": "react-native-video@git+https://github.com/wordpress-mobile/react-native-video.git#1b964b107863351ed744fc104d7952bbec3e2d4f",
 			"requires": {
 				"prop-types": "^15.5.10"

@ockham
Copy link
Contributor

ockham commented Feb 8, 2021

We might try setting persist-credentials to false for our checkout actions, see https://stackoverflow.com/a/62124409 🤔

@ockham
Copy link
Contributor

ockham commented Feb 8, 2021

We might try setting persist-credentials to false for our checkout actions, see https://stackoverflow.com/a/62124409

Trying in ceee13c for the unit test workflow 🤞

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 8, 2021

We might try setting persist-credentials to false for our checkout actions, see https://stackoverflow.com/a/62124409

Trying in ceee13c for the unit test workflow 🤞

I'm afraid it still fails 😭 .

I was checking the documentation from actions/checkout and I think persist-credential should be true if we want to use the SSH key generated to fetch other repositories.

@ockham
Copy link
Contributor

ockham commented Feb 8, 2021

I'm afraid it still fails 😭 .

Yeah, I saw that 😕

I was checking the documentation from actions/checkout and I think persist-credential should be true if we want to use the SSH key generated to fetch other repositories.

That's the default setting I think (so that's what we've been implicitly trying prior to my change).
I actually did mean to not use the SSH key, since those other repos are public, so they should be available without a key. That was my line of thinking at least -- we've now seen that that doesn't work either.

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 9, 2021

That's the default setting I think (so that's what we've been implicitly trying prior to my change).

Right, I forced the value just in case but we should remove it since it's the default one.

I actually did mean to not use the SSH key, since those other repos are public, so they should be available without a key. That was my line of thinking at least -- we've now seen that that doesn't work either.

Yeah but even for public repos I think you need a SSH key if you checkout via SSH, I think that's the cause for the forked repos to fail in the CI.

In previous projects what I did was to have a GitHub user (like a Bot) with minimum permissions and add the SSH key as a secret to be used in the workflow. In that case it was required for private repos, I'm surprised that it could be required also for public ones 🤔 .

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 9, 2021

I've created an example repository for reproducing the problem with CI in an empty project.

The created repository is named github-actions-test and only contains a package.json file that includes React, React native and one of dependencies that are causing CI to fail (@react-native-community/masked-view).

I created a PR that includes a simple workflow for testing NPM install. Unfortunately the jobs are failing with exactly the same error:

npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@github.com/wordpress-mobile/react-native-masked-view.git
npm ERR! 
npm ERR! Warning: Permanently added the RSA host key for IP address '140.82.114.3' to the list of known hosts.
npm ERR! git@github.com: Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR! 
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR! 
npm ERR! exited with error code: 128

Looks like that GitHub actions can't checkout repositories via SSH unless we explicitly add an SSH key for it. I found an issue related to this in actions/setup-node.

I'm thinking about different solutions for this but all of them would imply to change the way we reference them, instead of using commit hash we should use versions and therefore create releases for each one. This way we could reference the tarball URL from the release or publish it to NPM.

Example of tarball URL:

"@react-native-community/masked-view": "https://github.com/wordpress-mobile/react-native-masked-view/archive/v0.1.10-wp.tar.gz",

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 9, 2021

By the time I was testing I spotted that there's a new version of NPM 7.5.3 that fixes the problem of changing git+https urls to git+ssh 🎊.

@ockham
Copy link
Contributor

ockham commented Feb 9, 2021

By the time I was testing I spotted that there's a new version of NPM 7.5.3 that fixes the problem of changing git+https urls to git+ssh .

Yesss! That's great to hear!

(And TBH, from your description of the underlying issue and potential workarounds, this is the only solution that makes sense IMO -- People can't be assumed to suddenly add GitHub bots with minimum permissions just to be able to install npm dependencies because of an npm bug 😅 )

@ockham
Copy link
Contributor

ockham commented Feb 9, 2021

Anyway, I'll:

  • Revert the unit test workflow changes.
  • Try this again locally (with npm 7.5.3).
  • If it works, I'll also revert the git+https -> git+ssh changes in the package lock, and will push those.
  • If all goes well, the PR should then go green 🤞

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 9, 2021

By the time I was testing I spotted that there's a new version of NPM 7.5.3 that fixes the problem of changing git+https urls to git+ssh .

Yesss! That's great to hear!

(And TBH, from your description of the underlying issue and potential workarounds, this is the only solution that makes sense IMO -- People can't be assumed to suddenly add GitHub bots with minimum permissions just to be able to install npm dependencies because of an npm bug 😅 )

Yeah it didn't make sense for public repos. Now the problem I'm facing is that running npm install doesn't change the URL format from git+ssh to git+https if it's already included in the package-lock.json file. So I need to uninstall and install again those dependencies to leave the correct URL format 😅 .

@ockham
Copy link
Contributor

ockham commented Feb 9, 2021

  • If it works, I'll also revert the git+https -> git+ssh changes in the package lock, and will push those.

Ah I see you've already done that in ae4ee0c 🎉

@ockham
Copy link
Contributor

ockham commented Feb 9, 2021

Yeah it didn't make sense for public repos.

👍

Now the problem I'm facing is that running npm install doesn't change the URL format from git+ssh to git+https if it's already included in the package-lock.json file. So I need to uninstall and install again those dependencies to leave the correct URL format .

Hmm, maybe it'd be easier to start from a clean slate (i.e. fresh branch) in that case?

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 9, 2021

Yeah it didn't make sense for public repos.

👍

Now the problem I'm facing is that running npm install doesn't change the URL format from git+ssh to git+https if it's already included in the package-lock.json file. So I need to uninstall and install again those dependencies to leave the correct URL format .

Hmm, maybe it'd be easier to start from a clean slate (i.e. fresh branch) in that case?

Yep, I'm thinking to rebase this branch and start from scratch.

@ockham
Copy link
Contributor

ockham commented Feb 9, 2021

Yep, I'm thinking to rebase this branch and start from scratch.

Not sure it's worth rebasing? Looking at the PR, there are basically only two changes we'd like to keep:

  • The appium upgrade (which we need for npm 7 to work with this repo), and
  • The npm 7 specific changes to package-lock.json (are there any? 😬 )

We might be able to file a new PR with the appium upgrade only (performed using npm 6). This should then unblock the npm 7 upgrade, which we could even do in a separate PR 🤔

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 9, 2021

Not sure it's worth rebasing? Looking at the PR, there are basically only two changes we'd like to keep:

  • The appium upgrade (which we need for npm 7 to work with this repo), and
  • The npm 7 specific changes to package-lock.json (are there any? 😬 )

Yeah the reference for the dependencies with format git+https need to be updated to prevent NPM to change them to git+ssh.

We might be able to file a new PR with the appium upgrade only (performed using npm 6). This should then unblock the npm 7 upgrade, which we could even do in a separate PR 🤔

Yeah, makes sense to make it in two separate PRs, one for updating the package-lock.json file to version 2 and another one for the appium upgrade.

@fluiddot
Copy link
Contributor Author

fluiddot commented Feb 9, 2021

I'm closing this PR because this issue will be addressed with the following PRs:

This is the status of this fix so far:

CI failures due to not having access to some repositories

This has been fixed in NPM version 7.5.3 and by updating the references of the forked dependencies from react-native-editor package.

Dependencies install error

The original error related to #28834 has been fixed by upgrading appium dependency, however a new error is now thrown quite similar but referencing a new file:

npm ERR! code ENOENT
npm ERR! syscall chmod
npm ERR! path /home/runner/work/gutenberg/gutenberg/node_modules/appium/build/lib/main.js
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, chmod '/home/runner/work/gutenberg/gutenberg/node_modules/appium/build/lib/main.js'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

I've created an issue in Appium repository just in case they can fix it, although this issue is already reported in npm/cli.

@fluiddot fluiddot closed this Feb 9, 2021
@fluiddot fluiddot deleted the fix/npm-7-appium branch February 9, 2021 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Bug An existing feature does not function as intended [Type] Build Tooling Issues or PRs related to build tooling
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants