colcon / colcon-bundle

A colcon extension to create portable application bundles
Apache License 2.0
38 stars 24 forks source link

colcon bundle command is always pulling the dependencies from internet #218

Open Rohita83 opened 3 years ago

Rohita83 commented 3 years ago

Hi,

When we are using "colcon bundle" command our build server to generate ROS bundle but I have observed the below screenshot that it is downloading package dependencies for the internet to make ROS bundle every time. Is there any better solution to store package dependencies in any storage such as an AWS S3 bucket or other location so that it can fetch from there instead of download from the internet. Please suggest us. Any better approach will be appreciated. i am using Ubuntu 18.04 X86 machin.

image

emersonknapp commented 3 years ago

I think it's just using apt for the downloads, perhaps you could try running a local apt cache like https://wiki.debian.org/AptCacherNg - there is a container image on docker hub of it https://hub.docker.com/r/sameersbn/apt-cacher-ng/

Rohita83 commented 3 years ago

I think it's just using apt for the downloads, perhaps you could try running a local apt cache like https://wiki.debian.org/AptCacherNg - there is a container image on docker hub of it https://hub.docker.com/r/sameersbn/apt-cacher-ng/

@emersonknapp Thanks for the quick response. Actually, I am using AWS code-build service wherein buildspec.yml is calling our (custom docker image) Elastic Container Registry (ECR) & called "colcon bundle" command to generate the ROS bundle but here it is downloading package dependencies in the new codeBuild container every time (codepieline).

Rohita83 commented 3 years ago

When we are using "colcon bundle" command our build server to generate ROS bundle but I have observed the below screenshot that it is downloading package dependencies for the internet to make ROS bundle every time. Is there any better solution to store package dependencies in any storage such as an AWS S3 bucket or other location so that it can fetch from there instead of download from the internet. Please suggest us.

can anyone assist me for the above issue?

murphm8 commented 3 years ago

If you don't want to download from the public internet, you could host your own snapshot of all your dependencies in S3, and access S3 via a private endpoint.

Aptly[1] is a tool which can help you set up an S3 bucket as an apt repository. This also has the advantage that you can version lock all your packages and control when version bumps happen.

[1] https://www.aptly.info/