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

CI performance impovements #82

Merged
merged 11 commits into from
Jun 4, 2019
Merged

CI performance impovements #82

merged 11 commits into from
Jun 4, 2019

Conversation

rzadp
Copy link
Contributor

@rzadp rzadp commented May 31, 2019

The following has been done in order to improve CI performance:

  • Introduced an Initialize job that initializes the project with dependencies and compiles the contracts
    • The result, saved in CI cache, is used by subsequent build, lint, test and cover jobs
  • Yarn's cache is saved in CI cache to use in every Initialize run
  • Compiled contracts are saved in CI cache to use in every Initialize run
    • The cache is based on a key with commit hash of the contracts, so if we update contracts submodule then the cache will be invalidated
  • Saving yarn install:deploy output in a CI artifact in order to get rid of large wall of text in CI logs coming from node-gyp that does not conform to --silent switch

E2E

  • The e2e sub-projects cannot make use of the Initialize job because all of the initialization, installing dependencies, compiling contracts happens in the docker build system.
  • Enabling docker layer caching allows to cache built docker layers in the e2e jobs run
    • Apparently the docker layer caching performance varies, not always the layers are taken from cache. I have included slower and quicker runs in the results

Notes

  • From what I've read the docker layer caching feature might become a paid feature in the future
  • I didn't find any more improvements, also I don't think that we can share pulling parity, redis etc. docker images between the e2e jobs. I'd say we close Duplicated actions in the run of e2e tests on CircleCI #65 but keep eye on further opportunities for improvement

Results

Before (current master)

Screenshot 2019-05-31 at 15 36 43

After, slowest run

Screenshot 2019-05-31 at 15 37 22

After, quicker oracle-e2e run

Screenshot 2019-05-31 at 15 37 39

After, quicker ui-e2e run

Screenshot 2019-05-31 at 15 48 43

@rzadp rzadp added the shared shared components label May 31, 2019
@rzadp rzadp requested review from patitonar and akolotov May 31, 2019 14:10
@rzadp rzadp merged commit 1013f69 into master Jun 4, 2019
@rzadp rzadp deleted the ci-performance branch June 4, 2019 07:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
shared shared components
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Duplicated actions in the run of e2e tests on CircleCI
3 participants