Feature #30069
openUse GitHub Actions as a secondary CI solution to run tests through the existing mirroring
0%
Description
On my local development box, I've a lot of branches with my entire work for Redmine. These branches contain features or bug fixes in a stable phase that are already posted on Redmine.org or my work in progress for future features or bug fixes that are not public yet.
Most of the time, before posting a patch on Redmine.org, I'm running the entire test suite just to be sure that I do not break any existing test. If the tests pass, I'm uploading the patch/patches. I assume that when reviews a patch uploaded by me, Go Maeda runs the tests on his local environment (from the same reason). So there are at least 2 times in this happy scenario. If the patch needs some changes after the initial review, we run the tests more than 2 times in total. The same situation when I need to check the patch against master and other stable branch (for ex: 3.4-stable).
Other case is when some commits were been made on the trunk and the patches that I've posted need to be rechecked against the new trunk in order to be sure that they still apply cleanly and the tests pass. Here is the most consuming time for me because I need to run the tests on my local environment for each patch/branch.
I'm saying time consuming because even if the total time to run the tests is ~6 minutes, in that time my local development is blocked (I cannot touch the code). And if I need to do the same operation 5 times => 40 minutes while I cannot touch Redmine development box.
What it will be very useful for me is to integrate Redmine with an open source CI service (GitLab or Travis) in order to delegate all these tests there. I think that it will be useful also for other contributors. I'm not saying that I want to change the current workflow, I just want to have the possibility to run the tests there and if everything is ok, to upload the patch here as we currently do.
I made a branch on GitLab to prove this integration, it can be found here:- https://gitlab.com/marius-balteanu/redmine/blob/feature/gitlab_integration/.gitlab-ci.yml which is the gitlab file that enables the integrations
- https://gitlab.com/marius-balteanu/redmine/pipelines: test results for each commit.
The code is automatically fetch by GitLab from the GitHub repository and because I'm member and the owner of the repo, I can push additional branches on the repository. If the file is committed to Redmine, I won't have to add the file each time when I'm pushing branch that I make and also, I won't need to pay attention to exclude the file from the patch before uploading it to Redmine.org.
I chose GitLab because I'm using it at work and have some integrations/features that we can benefit from in the future. Also, I'm very ok with any other service.
Files