Community build progress report (August 2019)

I’ve recently made some changes to improve the maintainability of the community build:

  • All projects are now built from fixed SHAs.
    • This is so results are deterministic and don’t change every day as the included projects evolve.
    • This makes maintenance easier because the number of possible causes of a failure is much reduced.
  • New script advance moves projects to new fixed SHAs.
    • This updates the SHAs either build-wide (./advance), or for selected projects only (./advance akka akka-http playframework).
    • (Unlike the old freeze script, it talks to GitHub directly rather than using the results from a previous Jenkins run, which was awkward.)
  • Each included project now has its own separate config file.
    • Example: https://github.com/scala/community-build/blob/2.12.x/proj/playframework.conf
    • This makes it easier to involve project maintainers in maintenance and troubleshooting.
    • It also makes my job easier by making it possible to use git and other command line tools (that handle multiple files well) in more maintenance tasks, rather than having to do everything in a text editor.
    • Note that the file shows both the current fixed SHA, and the branch or tag that will be used to advance the SHA.
  • New script narrow shrinks the build to just one or more projects and their dependencies.
    • Example: e.g. if you’re working on Play, you might ./narrow play-webgoat
    • …and now you don’t have to wait for 200 repos to extract. That takes an hour or more the first time, and 5 minutes subsequent times. Even 5 minutes is painful when you’re testing changes. Now, you can just extract (and then build) the 20 repos actually needed.
    • Enabling this was one of the big reasons I gave each project its own config file.
  • Build logs are now per-project, too.
10 Likes