ros-tooling/setup-ros

Detect and use latest binary releases on Windows & macOS

Opened this issue · 3 comments

Description

We currently hardcode paths to Windows binary release archives and have to update the paths manually when new distros/distro patches are released:

const binaryReleases: { [index: string]: string } = {
dashing:
"https://github.com/ros2/ros2/releases/download/release-dashing-20210610/ros2-dashing-20210610-windows-amd64.zip",
eloquent:
"https://github.com/ros2/ros2/releases/download/release-eloquent-20200124/ros2-eloquent-20200124-windows-release-amd64.zip",
foxy: "https://github.com/ros2/ros2/releases/download/release-foxy-20210902/ros2-foxy-20210902-windows-release-amd64.zip",
galactic:
"https://github.com/ros2/ros2/releases/download/release-galactic-20210716/ros2-galactic-20210616-windows-release-amd64.zip",
};

setup-ros could try to automatically detect and use the latest binary release for a given distro.

Related Issues

This feature request includes macOS assuming that this related feature is implemented: #107

Completion Criteria

  • latest binary releases are automatically fetched and used

Implementation Notes / Suggestions

See #450 (comment)

We could fetch releases using the GitHub API and check the tags. The tag format is always release-$DISTRO-YYYYMMDD. Then we check the assets and pick the one for a given platform. This part might be a bit trickier, but it should work.

Testing Notes / Suggestions

Would you consider also adding support for "rolling" by grabbing the latest nightly artifacts from ci.ros2.org? Namely:

They are technically ahead of Rolling, since they are the latest from-source builds.

Oh yeah that's a good idea!

They are technically ahead of Rolling, since they are the latest from-source builds.

if it's the only way to get Rolling binaries for those platforms, it's fine. We can just document it.

Also, we should note that those artifacts I linked are only for the "core" packages listed in this repos file.