CARTAvis / carta-backend

Source code repository for the backend component of CARTA, a new visualization tool designed for the ALMA, the VLA and the SKA pathfinders.
https://cartavis.github.io/
GNU General Public License v3.0
22 stars 10 forks source link

ajm/GitHub actions icd tests #1348

Closed ajm-ska closed 6 months ago

ajm-ska commented 6 months ago

Description

This one took a lot of trial and error. It effectively moves the daily ICD tests from Jenkins to Github Actions.

The 3 macOS and 5 Linux platforms are combined in one workflow file called ICD Tests. They use local runners hosted at ASIAA. The macOS platforms run natively on the Mac hardware. The 5 Linux platforms run via Apptainer (Singularity) on three different Linux servers. It is a long story, but I found Apptainer easier to use instead of Docker and the workflow file can be a lot shorter and simpler.

To reduce the length of the workflow file, we use two different actions; run-macos/action.yml and run-apptainer/action/yml that start a carta-backend and run the ICD tests for each "job" (ICD test stage) on macOS and Linux, respectively. I don't think the workflow file can be shortened much more. Each "job" requires that long matrix block. Unless we consolidate stages. But I did not do that as I was trying to keep the layout similar to the previous Jenkins ICD tests where we can visually see each test stage.

I have put a list of the actual ICD tests per stage in the ICD-RxJS repo in ICD-RxJS/ICD_test_stages. The workflow file reads that list of tests. This means we can easily add or remove tests to existing stages without needing to make any commits to the carta-backend repo. However, we would need to make a commit to icd_tests.yml on the carta-backend repo if we were to add or remove test stages.

Just like on Jenkins, the ICD test stages run sequentially. e.g. Animator only runs after File-Browser. This was not necessary for Linux/Apptainer, but for some strange reason it is necessary for the macOS platforms. I was unable to figure out why. But is not really important. It still works fine running sequentially and would not be any faster because one runner only runs one job at a time.

The status of all the jobs and steps and the log files can be seen, for example, here: https://github.com/CARTAvis/carta-backend/actions/runs/7259363238

The final part that I have not been able to test is the schedule:

on: schedule:

  • cron: '0 0 *' # UTC time

This should allow it to run daily at 08:00 Taiwan time. I believe 'schedule' only runs on the default branch, which is 'dev' in our case. So we can not actually test this until it is merged.

I guess this is an unusual PR. It does not affect the carta-backend code base so doesn't require much review or testing.

Checklist

github-actions[bot] commented 6 months ago

Code Coverage

Package Line Rate Health
src.Cache 63%
src.DataStream 44%
src.FileList 67%
src.Frame 36%
src.HttpServer 42%
src.ImageData 28%
src.ImageFitter 83%
src.ImageGenerators 43%
src.ImageStats 72%
src.Logger 34%
src.Main 52%
src.Region 17%
src.Session 4%
src.Table 52%
src.ThreadingManager 67%
src.Timer 85%
src.Util 30%
Summary 32% (6023 / 18675)
kswang1029 commented 6 months ago

@ajm-asiaa any suggestions on testing this? or it is not possible?

ajm-ska commented 6 months ago

@kswang1029 I think the only way to test it is to merge it and see if it runs automatically tomorrow at 0800. That is the only part I'm not sure of at the moment, but it is only supposed to work when it is in the main branch ('dev' in our case). If there is a problem, I could try to issue a direct fix. It will not affect the carta-backend codebase at all. Besides that, you can see that all the ICD tests on each platform are currently capable of passing.