-
Notifications
You must be signed in to change notification settings - Fork 96
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
Ros2 rosindex generation and deploy #568
Comments
@gavanderhoorn yes, we're referring to that. RE: Push access Re: job dependencies rosindex indexes a lot more than just the released versions so there's actually a lot of content that's updated more asynchronously. It's pulling content from the upstream repositories etc that aren't even released. I would suggest that we plan to run it periodically like we do already with the doc jobs. Being "synced" to main is not usually what we want for documentation/indexing. We usually have all documentation pull from the branch flagged by the doc tag so that a documentation fix does not require a rerelease of the package to become available. That would cause a lot of unnecessary rebuilding of packages. |
👍 The While the job has a different scope at the moment it should be fairly easy to make it work for this use case:
I am just describing this approach since I think adding a new job type requires a lot more code as well as documentation (the logic needs to run within a custom generated Docker container, there probably needs to be a configuration file, the new job needs to be documented, etc.). |
@dirk-thomas Wrapping all the logic in a makefile seems doable for |
I am not sure that is the case.
The is no "local invocation" of that job type. Also since your |
Sounds like I need to learn how to set up a new job type. Do you have a link to a past PR that added one?
It might not matter, but assume I made |
As mentioned above creating new job types is fairly "expensive" so I wouldn't suggest that. Instead the Docker container invoking these Makefiles could be updated to contain additionally required dependencies.
I would rather suggest to duplicate the job (on the existing buildfarm) and iterate on the copy (without actually pushing the results of the other packages to the server). |
Alright, we can piggyback rosindex builds on the Off the top of my head, we could either change the doc independent Dockerfile template to install these or change the |
As I mentioned in my previous comment:
|
@dirk-thomas Right, and sorry for the ignorance if I'm wrong, but doesn't that mean to add the necessary dependencies to the |
Yes.
Yes. |
Alright, dove deeper into the task and there're a couple alternatives. If we go down the "reuse the doc_independent job" route, I found some itchy details:
This applies whether we make all this changes to the A different approach would be a source side container (as suggested by @nuclearsandwich). Everything is then kept along with rosindex sources. The buildfarm becomes just an executor of a scripted build that may as well be run locally. That's quite flexible and probably easier to maintain, but it means that a new job (a clone & run or a clone, build & push one if we want to have separate explicit build and push phases) has to be created from scratch (along with documentation and everything). I wanted to reach out to you guys for some back and forth before going down the (hopefully correct) rabbit hole. Personally, I would like building and deploying to be pretty much the same whether you run it on the buildfarm or locally. That would also simplify automating all this. What do you think? |
@dirk-thomas Yes it can, I thought I had used a |
I'm looking for input about automating the generation and deployment of a ros2 rosindex equivalent website automatically. @mikaelarguedas gave me a an explanation of how this might look, and recommended opening a ticket for more comments.
Task background
rosindex is a static website using jekyll and a jekyll ruby plugin. Content is generated from ros/rosdistro. Once generated the result is pushed to a github repo to be hosted using github pages. The entire website is generated at once, meaning content for all ROS distros would be generated at the same time even if only one distro has changed. Generating bouncy + ardent takes less than a minute on my machine.
The website generation job would need to happen in a docker container that has ruby and some other dependencies installed.
Job Dependencies
The website should reflect released packages, so it would need to be regenerated any time a ROS distro is synced from testing to main. Since it generates content from all distros, something needs to be done to avoid generating content for other distros that have changed in
ros/rosdistro
but not been sync'd to main. Maybe a job could cache the ROS distro specificdistribution.yaml
file when the sync to main happens?The output of
generate ros2 rosindex
is a commit to some github pages repository, so the job needs a github user with write access. Are their other jobs that push to github which this job could be based off of?The text was updated successfully, but these errors were encountered: