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

Automated Testing: Try composer non-interactive flag for Travis #21118

Merged
merged 2 commits into from
Mar 25, 2020

Conversation

aduth
Copy link
Member

@aduth aduth commented Mar 24, 2020

This pull request seeks to attempt to resolve rate-limit errors which have become increasingly common in Travis builds lately:

GitHub API limit (0 calls/hr) is exhausted, could not fetch https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b. Create a GitHub OAuth token to go over the API rate limit. You can also wait until ? for the rate limit to reset.

It's unclear what is causing this to suddenly become an issue. There are related discussions which seem to imply that there should be no rate limit (example). The messaging in the error itself is also rather nonsensical ("0 calls/hr" limit, "wait until ? for the rate limit to reset"). It may in-fact be an issue of either Travis and/or GitHub.

The proposed changes are based upon the advice at composer/composer#1314 (comment) . Notably, this changes the behavior to fall back on a clone fallback if unable to fetch the composer dependencies (source). As implemented here, this can also be provided as an environment variable COMPOSER_NO_INTERACTION (composer/composer@83ea902). Generally speaking, it is sensible that we would configure Travis builds to run commands in a non-interactive mode when available.

Testing Instructions:

If build history is any indication, the changes here can be assumed to be effective if the build merely passes.

@aduth aduth added the [Type] Automated Testing Testing infrastructure changes impacting the execution of end-to-end (E2E) and/or unit tests. label Mar 24, 2020
@github-actions
Copy link

github-actions bot commented Mar 24, 2020

Size Change: 0 B

Total Size: 859 kB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 998 B 0 B
build/annotations/index.js 3.43 kB 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.58 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.02 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-editor/index.js 102 kB 0 B
build/block-editor/style-rtl.css 10.9 kB 0 B
build/block-editor/style.css 10.9 kB 0 B
build/block-library/editor-rtl.css 7.24 kB 0 B
build/block-library/editor.css 7.24 kB 0 B
build/block-library/index.js 110 kB 0 B
build/block-library/style-rtl.css 7.43 kB 0 B
build/block-library/style.css 7.44 kB 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-default-parser/index.js 1.65 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 57.5 kB 0 B
build/components/index.js 191 kB 0 B
build/components/style-rtl.css 15.8 kB 0 B
build/components/style.css 15.7 kB 0 B
build/compose/index.js 6.21 kB 0 B
build/core-data/index.js 10.6 kB 0 B
build/data-controls/index.js 1.04 kB 0 B
build/data/index.js 8.25 kB 0 B
build/date/index.js 5.37 kB 0 B
build/deprecated/index.js 771 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.06 kB 0 B
build/edit-post/index.js 91.2 kB 0 B
build/edit-post/style-rtl.css 8.47 kB 0 B
build/edit-post/style.css 8.46 kB 0 B
build/edit-site/index.js 6.72 kB 0 B
build/edit-site/style-rtl.css 2.88 kB 0 B
build/edit-site/style.css 2.88 kB 0 B
build/edit-widgets/index.js 4.43 kB 0 B
build/edit-widgets/style-rtl.css 2.58 kB 0 B
build/edit-widgets/style.css 2.58 kB 0 B
build/editor/editor-styles-rtl.css 428 B 0 B
build/editor/editor-styles.css 431 B 0 B
build/editor/index.js 43.8 kB 0 B
build/editor/style-rtl.css 4 kB 0 B
build/editor/style.css 3.98 kB 0 B
build/element/index.js 4.44 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 6.95 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 1.93 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.49 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.3 kB 0 B
build/keycodes/index.js 1.69 kB 0 B
build/list-reusable-blocks/index.js 2.99 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 4.84 kB 0 B
build/notices/index.js 1.57 kB 0 B
build/nux/index.js 3.01 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.54 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 781 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/rich-text/index.js 14.4 kB 0 B
build/server-side-render/index.js 2.55 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 4.01 kB 0 B
build/viewport/index.js 1.61 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@aduth
Copy link
Member Author

aduth commented Mar 24, 2020

Well, that didn't seem to help...

@aduth aduth closed this Mar 24, 2020
@aduth aduth deleted the try/fix-travis-composer-rate-limit branch March 24, 2020 20:37
@aduth aduth restored the try/fix-travis-composer-rate-limit branch March 24, 2020 20:45
@aduth aduth reopened this Mar 24, 2020
@aduth
Copy link
Member Author

aduth commented Mar 24, 2020

Not sure if the environment variable wasn't being picked up for one reason or another. The result is a bit different when passing the flag (--no-interaction) directly, although still failing:

  - Installing composer/installers (v1.6.0): Downloading (0%)    Failed to download composer/installers from dist: Could not authenticate against github.com
    Now trying to download from source
  - Installing composer/installers (v1.6.0): Cloning cfcca6b1b6
                                                                                                                                   
  [RuntimeException]                                                                                                               
  Failed to clone https://github.com/composer/installers.git, git was not found, check that it is installed and in your PATH env.  
                                                                                                                                   
  sh: 1: git: not found                                                                                                            

It seems clearer by this that it's falling back to source as expected, but presumably because the Docker image doesn't have git installed, it can't clone the source.

I'm not entirely sure, but since this setup process still uses the WordPress-based env setup and that docker-compose.yml configuration resides outside the repository, it might be a little less direct to try to make Git available, if we choose to go down this route of building from soure.

@noisysocks
Copy link
Member

noisysocks commented Mar 25, 2020

Thanks for starting to investigate this @aduth!

I think passing --no-interactive is the right thing to do here since, regardless of whether it fixes the issue, composer is operating in an environment where terminal input is not possible.

It definitely looks like we're exceeding the GitHub API rate limit which, according to their docs, is a very paltry 60 requests per hour for unauthenticated requests.

I tried creating a GitHub API token and having composer use it by setting the COMPOSER_AUTH environment variable in Gutenberg's Travis CI settings. This made the 'PHP unit tests' job succeed but for some reason it did not help with the 'PHP unit tests (PHP 5.6)' job. I tried a few different ways of passing this token but eventually gave up.

Instead I went with your suggestion to simply provide --no-interactive and rely on composer building packages from source when it is unable to make requests to GitHub. As you noted, this was failing because git is not installed in the image that we're using to run composer. Fortunately, we're using wordpressdevelop:latest for this which is an image that WordPress controls, so I was able to fix this by adding git to the relevant images in WordPress/wpdev-docker-images#23.

After merging WordPress/wpdev-docker-images#23 and waiting for the new images to be published, I re-ran the jobs on this PR and everything looks ✅ again.

@noisysocks noisysocks merged commit f4a37d5 into master Mar 25, 2020
@noisysocks noisysocks deleted the try/fix-travis-composer-rate-limit branch March 25, 2020 04:13
@github-actions github-actions bot added this to the Gutenberg 7.9 milestone Mar 25, 2020
@aduth
Copy link
Member Author

aduth commented Mar 25, 2020

Thanks for the work in seeing this through, @noisysocks ! The outcome seems quite sensible to me, and regardless whether we should be expecting to be hitting a rate limit, having the additional redundancy in our build should prove valuable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Automated Testing Testing infrastructure changes impacting the execution of end-to-end (E2E) and/or unit tests.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants