Open mcdurdin opened 1 year ago
Developer build time, rounded, things that could be eliminated during a shorter test build:
Time (min) | Process |
---|---|
26:30 | regression tests against keyboards repo (additional flag required?) |
4:30 | build installer |
0:45 | signcode |
0:15 | design-time packages |
2:30 | excess npm ci calls |
1:15 | upload artifacts |
36:45 | total skippable steps |
47:45 | total build time |
11:00 | new build time! |
The commands could be:
no -- don't build anything for this target
I was hoping we could reuse skip
like with the test-bot. Otherwise, I can easily see my future self mixing up no/skip in my PRs...
Suggest doing this as a commit message trailer instead of as a PR command. Ties the implementation to looking at the last commit which avoids a bunch of potential conflicts.
Keyman-build-bot: <command>
It would be useful to be able to skip certain builds or do only builds without artifacts etc. Rationale: many of our minor changes are triggering many builds, and while this is a good default, we can reduce the burden on the build agents by being a little more circumspect when we know certain platforms will not be impacted. We can also reduce the artifact burden and build times by skipping release builds when they are not needed.
These commands would override the defaults -- so you could force a build where it would not automatically run otherwise, for example. The following commands would be supported:
skip
: Skip build altogether for a given target:build
: Just compile but don't test given target:test
: To just compile and run tests, but not produce release artifacts:installer
: Make a full installer for a given target and make it available as an artifact on the PR:QUESTION: Do we need to support additional commands or parameters for commands? For example, Developer has a set of low-cost unit tests, plus a very long regression test suite (25+ minutes), which we could do with
test(quick)
,test(full)
and the default (test
) would betest(quick)
. Something like that?test-quick
vstest-full
vstest
perhaps, and we may be able to pass that into build.sh in the future as well.Multiple commands in a comment should be supported.
The following build targets should be defined:
android
common
(TBD, this one does not yet exist but kinda needs to)core
developer
ios
linux
mac
web
windows
QUESTION: Am I missing any? Perhaps the ability to specify platform for common + core would be helpful?
Multiple targets should be comma separated, suggest no spaces between to support future parameters.
The commands could be:
@keymanapp-build skip [target[,...]]
-- don't build anything for these target(s)@keymanapp-build test [target[,...]]
-- only compile and run automated tests for these target(s)@keymanapp-build release [target[,...]]
--test
+ build an installable artifact for these target(s), if applicable (i.e.release common
would not be an error but would only run tests forcommon
)QUESTION: Should these commands be checked only on the initial comment on a PR, or on any comment? How do we resolve conflicting commands?
IDEA: reduce set of default builds, e.g. don't build Developer,Android,iOS if Web builds?