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

CI for each ROS distro branch #45

Merged
merged 4 commits into from
Aug 26, 2023
Merged

Conversation

atticusrussell
Copy link
Contributor

This PR is the first step in addressing the numerous issues I have seen in the repo with users encountering unexpected errors during firmware updates, such as #37, #35, and others. I outlined my plan to address this in #39, and this PR implements it.

  • Made the main CI GitHub Action for building firmware using PlatformIO reusable and accept parameters
  • Created individual GitHub Actions workflows for each ROS distro/branch that checks out that branch and calls the reusable CI to test the compilation of firmware with that ROS distro and branch
  • Display CI firmware build status badges on README for each ROS distro / branch to both show users what they can expect to work, and alert maintainers of issues
  • Scheduled nightly CI runs on each branch to update status and test for broken dependencies

The end result will be a repo that is much easier to safely add new features to, such as support for new boards (like the ESP32 PR), and more friendly to users and maintainers.

NOTE:
Before merging this PR, @grassjelly please rename the current default branch, currently named "galactic" to master (this is in accordance with the naming of ros_control and other ROS things I looked at ) or let me know if you'd prefer main or rolling and I'll modify the PR. The reasons for this request is two-fold:

  • The default branch should be developed for ROS2 Rolling, not "galactic"
  • The galactic branch name should be available for backports to ROS2 Galactic

If this renaming is not made, this PR will behave slightly silly upon merge, (but still largely work and still be an improvement):

  • The table in the README's link to master will not be valid
  • Both the galactic and rolling actions will be run on the current default branch, "galactic", and the galactic action will fail, as the "galactic" branch's firmware/platformio.ini has a library dependency that has deprecated galactic

NOTE 2:
There will be companion PRs to the humble and foxy branches. These should all be merged at a similar time to allow the actions to work for those branches. The foxy PR also contains fixes to current deprecation issues. Upon renaming of the current "galactic" branch to something else, I will also create a PR for it.

Automatically backport to older ROS distro branches using this mergify config
* individual workflows per supported ROS distro  
* made PlatformIO firmware CI reusable and callable from other workflows  
* firmware build status badges on README for each branch  
* CI actions run nightly to test for broken dependencies
@atticusrussell
Copy link
Contributor Author

I made an oversight and have not handled the case where ~/.platformio folder isn't created upon installing it, effecting both this PR and #46. I will fix this and update the branches.

Check that PlatformIO is initialized and that the `~/.platformio` directory has been created before trying to create the `penv` virtual environment inside it.
README.md Show resolved Hide resolved
Added into the README the steps for creating a new CI build for new distros in the future.
@atticusrussell
Copy link
Contributor Author

@grassjelly what are your thoughts on names for the default branch? Do you think master, main, or Rolling? Once you change it I can make changes and get this merged (passing CI), and put in a galactic PR.

@grassjelly grassjelly merged commit 003a852 into linorobot:galactic Aug 26, 2023
@grassjelly
Copy link
Member

let me create a rolling branch based on humble

@atticusrussell
Copy link
Contributor Author

sounds good. I'll go through and make the README badges link to the correct place and double check the CI works correctly with that name (it should - I have it get the default branch)

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

Successfully merging this pull request may close these issues.

2 participants