Skip to content

Add workflow to compare engine sync performance #78

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

Merged
merged 1 commit into from
Sep 2, 2021
Merged

Add workflow to compare engine sync performance #78

merged 1 commit into from
Sep 2, 2021

Conversation

per1234
Copy link
Contributor

@per1234 per1234 commented Aug 30, 2021

The tool must work through an ever growing list of thousands of libraries and tens of thousands of library releases every
hour. For this reason, it's important to consider the performance impact of any changes.

The workflow will run the engine through a fixed subset of the registry, comparing the performance of the engine built
from the tip of that branch against that of the engine build from the base ref.

The engine has three trigger events, each with their own base ref:

  • push: parent commit
  • pull request: PR base ref
  • manual trigger: arbitrary ref selected by the user

Demo of the workflow run against the old engine version from 921d412
https://github.com/per1234/libraries-repository-engine/runs/3462859434?check_suite_focus=true#step:3:58


Notes:

The earliest commit compatible with the workflow is c36c3d2, which added the
go:build task used to build the engine.

In order to build engine versions from commits before 7dd8f69, a repository secret named
REPO_SCOPE_TOKEN must be defined with a GitHub access token that has repo scope in order to install the
github.com/arduino/arduino-modules/git dependency the engine had at that time, which is hosted in a private repository.
All versions from then on can be built by anyone without any secrets, so it is possible to use the workflow to evaluate
the immediate effect of pull requests from forks, which do not have secrets access.

The tool must work through an ever growing list of thousands of libraries and tens of thousands of library releases every
hour. For this reason, it's important to consider the performance impact of any changes.

The workflow will run the engine through a fixed subset of the registry, comparing the performance of the engine built
from the tip of that branch against that of the engine build from the base ref.

The engine has three trigger events, each with their own base ref:

- push: parent commit
- pull request: PR base ref
- manual trigger: arbitrary ref selected by the user

Notes:

The earliest commit compatible with the workflow is c36c3d2, which added the
`go:build` task used to build the engine.

In order to build engine versions from commits before 7dd8f69, a repository secret named
`REPO_SCOPE_TOKEN` must be defined with a GitHub access token that has repo scope in order to install the
`github.com/arduino/arduino-modules/git` dependency the engine had at that time, which is hosted in a private repository.
All versions from then on can be built by anyone without any secrets, so it is possible to use the workflow to evaluate
the immediate effect of pull requests from forks, which do not have secrets access.
@per1234 per1234 added type: enhancement Proposed improvement topic: infrastructure Related to project infrastructure labels Aug 30, 2021
@per1234 per1234 merged commit 19a08e8 into arduino:main Sep 2, 2021
@per1234 per1234 self-assigned this Nov 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: infrastructure Related to project infrastructure type: enhancement Proposed improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants