Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Travis CI with GitHub Actions #1815

Open
32 of 51 tasks
DaAwesomeP opened this issue Feb 9, 2023 · 6 comments
Open
32 of 51 tasks

Replace Travis CI with GitHub Actions #1815

DaAwesomeP opened this issue Feb 9, 2023 · 6 comments

Comments

@DaAwesomeP
Copy link
Member

DaAwesomeP commented Feb 9, 2023

This is a progress-tracking issue for replacing Travis CI with Github Actions as mentioned in #1813 (comment). I will begin working on one or more pulls shortly! Please assign me to this issue.

Tasks:

Current pulls:

Related issues/pulls:

A few questions:

  1. At this point can we abandon the Python 2.7 lint tasks and only move forward with the Python 3 tasks?
  2. Most of the Travis tasks appear to be running on arm64 instead of amd64. Is there a particular reason for this?
  3. I definitely understand the need for some arm64/aarch64 builds, but are we still interested in s390x builds?

cc @peternewman

@DaAwesomeP
Copy link
Member Author

The version of cpplint from Google seems to require Python 2. I'm going to look into switching to this: https://github.com/cpplint/cpplint

@kripton
Copy link
Member

kripton commented Feb 10, 2023

I would say let's bury Python 2 better sooner than later. It's EOL and most distros don't ship it anymore. Or at least make it hard to install it ;)

@peternewman
Copy link
Member

See also #1794 which I think will be unlocked by this too...

  • Flake8 (Python 3)
  • Flake8 (Python 2.7)

We've got a version of these already (although ideally they should make builtfiles first:
https://github.com/OpenLightingProject/ola/blob/master/.github/workflows/annotation.yml

  1. At this point can we abandon the Python 2.7 lint tasks and only move forward with the Python 3 tasks?

Yeah I guess, especially if it's a nightmare.

  1. Most of the Travis tasks appear to be running on arm64 instead of amd64. Is there a particular reason for this?

Yes, its a cheeky workaround, Travis charge you tokens for amd64 builds, but a company donate arm builds for free... 🤑

  1. I definitely understand the need for some arm64/aarch64 builds, but are we still interested in s390x builds?

The main benefit of this is it's big-endian, which means we know our build works on both big and little-endian and we'd avoid more of #1795 !

FWIW I think we should probably keep the travis-ci.sh file, but maybe rename it (e.g. ci.sh), so we can move more easily in future if we need to, or people can run the actual CI stuff locally (assuming they've got the dependencies). We could also put more of the other scripting into the Makefiles too.

I'd definitely be keen to get more annotation going on (Codespell, cpplint etc) when we've got stuff building in GitHub Actions, like we've already got for flake8.

Thanks for volunteering too @DaAwesomeP !

@DaAwesomeP
Copy link
Member Author

OK, I'm making good progress I think!

Rough order of what I will do next (please let me know if I should adjust any priorities!):

  1. Builds amd64 (gcc and clang)
  2. Test builds for amd64 (gcc and clang)
  3. Builds for other platforms (either cross-compile or QEMU)
  4. Tests for other platforms (QEMU)
  5. Weblint
  6. Doxygen
  7. Coverage/Coverity
  8. Refactor a new ci.sh (I am also slowly making notes and doing this in parallel)

@peternewman
Copy link
Member

OK, I'm making good progress I think!

Yeah it looks great thanks.

Rough order of what I will do next (please let me know if I should adjust any priorities!):

I think conceptually it should be a case of prioritising (based on benefit provided):

  1. make check (gcc and clang) on one arch - I don't believe we're currently running these checks and they're much better than our Debian coverage
  2. make distcheck (gcc and clang) on one arch (and our dist check script) - we're not currently checking the dist file works
  3. Weblint - For other contributors
  4. Doxygen - Again
  5. ARM (ideally QEMU I'd assume so we can do make check too, which I don't believe a cross-compile would allow) - Because most stuff will work fine on multiple architectures
  6. Presumably another arch with a different Endian should then be pretty trivial on top - this is probably more use than ARM for edge cases, but ARM is probably an easier test first and will definitely get more usage via Pi etc
  7. Mac - As above
  8. Windows - Probably hardest
  9. Coverage/Coverity - A nice to have if we can make it go again
  10. Refactor a new ci.sh (I am also slowly making notes and doing this in parallel) - Yeah I wouldn't rush on this for now

@DaAwesomeP
Copy link
Member Author

  1. make check (gcc and clang) on one arch - I don't believe we're currently running these checks and they're much better than our Debian coverage
  2. make distcheck (gcc and clang) on one arch (and our dist check script) - we're not currently checking the dist file works

These two should be complete at the same time! I'll open a pull hopefully this week.

  1. Windows - Probably hardest

I try to avoid Windows in production at all costs at this point, but it would honestly allow me to use OLA for more projects that I send out into the world. I also get a lot of issues opened in my Arduino library repo (Arduino as ENTTEC USB serial device) where I wish I could recommend OLA on all platforms to get around a pesky FTDI requirement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants