This weekend I’ve research a bit more GA (I had done it a while back already); to see if we could use it if we wanted to.
Learnings
- The limits are pretty nice and would fit us (and it’s nice since it’s hosted and we don’t need to manage that): https://help.github.com/en/actions/getting-started-with-github-actions/about-github-actions#usage-limits
- We also 20 parallel executors which is more than what we currently have (we have 8 ATM).
- Even if GitHub change their mind in the future, there’s the ability to hav local executor machines for it which is pretty cool.
Examples of some basic workflows:
- https://github.com/vmassol/xwiki-commons/blob/master/.github/workflows
- https://github.com/vmassol/xwiki-platform/blob/master/.github/workflows
Current blockers
- It doesn’t provide any way to gather junit test results OOB (See https://github.community/t5/GitHub-Actions/Publishing-Test-Results/td-p/31242) so we need to find an action for that or create one. I’ve found 2 that could work but they both have problems:
- https://www.check-run-reporter.com/: Problem reported at https://github.com/check-run-reporter/feedback/issues/3. Results at https://github.com/vmassol/xwiki-commons/runs/618539158
- Scope: https://scope.dev/. Nice thing is that you get test results on the go + flaky test identification, test perf, etc. However 2 problems that I need to report (not done yet):
- What’s the cost?
- It got stuck when I tested it on commons and I had to kill the workflow after 1 hour.
Thoughts
- It’s very interesting and very well integrated with GH
- We could use it to build very simply our docker images. Example by junit: https://github.com/junit-team/build-env/blob/master/.github/workflows/dockerimage.yml
- Since we have a docker build image for xwiki, we don’t need that much from the CI, which is good since that allows us to depend less on it.
- The usage of remote servers for gathering tests and their history is both good and bad. Good because this allows us to go further with test analysis and handling in general (and be independent of the CI) and Bad because this ties us to another service which may not be available (fragility).
- Next steps:
- be able to gather test data and failing tests and see why they failed.
- find out if we can prevent a build at each commit and instead stack them as we do in our ci (now it’s less an issue since we don’t operate the agents).
To be continued.