Using docker images other than latest increases build times


usually we use the bitrise/android-ndk:latest docker image to build our apps. Lately this caused us trouble because the golang version in the docker image went up which clashed with the golang version of our precompiled golang artifacts.
As a workaround we reverted to an older image (bitrise/android-ndk:v2017_09_30-07_11-b692 or something). This fixed our problem but led to an increase in build times from usually 5 minutes to 15 minutes because the docker image was downloaded each and every time.
Is there a way to prevent this but still use a fixed tag to avoid changes in the docker image we use?

1 Like

Hi @fsocher

Unfortunately no. These docker images are incredibly large, the three layers (the full NDK image) is about 20 GB, so we only pre-cache the latest version. Using a previous version our build machine will have to download it every time.

Can you share more about that, or create a separate issue? Asking because it’s part of why we use Go:

  1. There’s a backwards compatibility policy, new versions (at least in the current 1.x range) should NOT break any code which compiled with a previous version. In practice we never had any issue with this, a project compiled with 1.7.x always compiled with 1.8 / 1.9 too.
  2. And if these are binary artifacts then the Go version shouldn’t even matter. A compiled Go binary does not depend on Go at all. You can run it on a system where Go isn’t even installed, it’s self contained.

Of course these are just general notes, without logs etc. it’s hard to tell anything more specific for this problem. So, if you’d like us to check the error, please create a complete #issues:build-issues report and we’ll check it ASAP! :slight_smile:

If you have any questions just let us know!