Nós usamos Docker para definir bem o ambiente de construção e ajudar nas construções determinísticas, mas na minha máquina recebo uma pequena mudança nos resultados de construção usando Docker, mas não quando não estou usando Docker.
Eu fiz testes bastante extensivos e estou sem idéias :(
Eu testei nos seguintes sistemas:
- R: O meu novo PC sem Docker
- AD1: Meu novo PC com Docker, usando nosso Dockerfile baseado no ubuntu:18.04 compilado há um ano
- AD2: Meu novo PC com Docker, usando nosso Dockerfile baseado no ubuntu:19:10 compilado agora
- B: Meu laptop (do qual eu tinha copiado o disco para o meu novo PC) sem Docker
- BD: O meu portátil com Docker
- CD1: O laptop do colega de trabalho com Docker, usando nosso Dockerfile baseado no ubuntu:18.04 compilado há um ano
- CD2: O laptop do colega de trabalho com Docker, usando nosso Dockerfile baseado no ubuntu:19:10 compilado agora
- DD: Um Digital Ocean VPS com o nosso Dockerfile baseado no ubuntu:18.04 compilado agora
Em todos os cenários temos um dos dois resultados da compilação, eu vou nomear a variante X e Y.
- Temos a variante X usando A, B, CD1, CD2 e DD.
- Temos a variante Y usando AD1, AD2 e BD.
A edição continua sendo 100% reprodutível desde vários lançamentos do nosso aplicativo Android. Ele não desapareceu quando atualizei meu Docker de 19.03.6 para 19.03.8 para combinar com a versão do meu colega de trabalho. Nós dois tínhamos o Ubuntu 19.10 na época e agora eu continuo recebendo a edição com o Ubuntu 20.04.
Eu sempre clonei nosso projeto em uma nova pasta, usei desordens para eliminar problemas de ordenação do sistema de arquivos e montei a pasta no container da doca.
Duvido que seja relevante, mas estamos a usar este Dockerfile:
FROM ubuntu:18.04
RUN dpkg --add-architecture i386 && \
apt-get update -y && \
apt-get install -y software-properties-common && \
apt-get update -y && \
apt-get install -y wget \
openjdk-8-jre-headless=8u162-b12-1 \
openjdk-8-jre=8u162-b12-1 \
openjdk-8-jdk-headless=8u162-b12-1 \
openjdk-8-jdk=8u162-b12-1 \
git unzip && \
rm -rf /var/lib/apt/lists/* && \
apt-get autoremove -y && \
apt-get clean
# download and install Android SDK
ARG ANDROID_SDK_VERSION=4333796
ENV ANDROID_HOME /opt/android-sdk
RUN mkdir -p /opt/android-sdk && cd /opt/android-sdk && \
wget -q https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_VERSION}.zip && \
unzip *tools*linux*.zip && \
rm *tools*linux*.zip && \
yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses
Também aqui estão as instruções de construção que eu executo e obtenho resultados diferentes. A diferença em si pode ser encontrada aqui.
Editar: Eu também o arquivei como um bug no reporte do estivador.