Skip to content

introduce a version.txt for ament_python #125

Description

@chrisdonlan

Hey, onboarding to ros2. This avent_python template looks really good/standard for operational use from my perspective as a drone/embedded/hardware/IoT fleet CI/CD and C2 guy. It looks almost identical to the model templates I set up for employers actually, which has motivated me to make a comment :-).

Saw that the team here is still pretty small, and I'll be adapting this template with version.txt, thought I'd propose it here or at least start the conversation.

I really like the use of version.txt next to setup.py which I typically recommend referencing in the module's __init__.py file dynamically (along with other changes so that setup.py is standard and copy-able from one project to the next). I pulled this concept from java libraries, but it is something I've seen in production in IoT industry. I make use of it in my infra, and it's useful for allowing CI/CD + shell routines to easily hook into changes in the version.txt file in addition to Cxx sidecar libraries and other add ins that accumulate IRL.

Further, it is very easy to increment a semver in a version.txt rather than either pyproject.toml, setup.py, or module_name/__init__.py via normal git and CICD workflows (written in shell or abbreviated shell environments in alpine linux, for example), whereas jumping into any of those other file types can require extra work and packages in the build container to support whatever one liner we come up with (using perl/awk/sed, jq, etc.). It's also pretty fragile when not using version.txt and supporting many teams, as these python packaging approaches tend to be trendy rather than good, changing every 18 months (the versioning methods wind up being as numerous as the projects we support).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions