Мы используем Docker, чтобы хорошо определить среду сборки и помочь с детерминистическими сборками, но на моей машине я получаю небольшое изменение в результатах сборки, используя Docker, но не тогда, когда я не использую Docker.
Я провел довольно обширное тестирование и у меня закончились идеи :(
Я тестировал на следующих системах:
- О: Мой новый ПК без докера
- AD1: Мой новый ПК с Docker, используя наш Докерфайл, основанный на ubuntu:18.04, скомпилированный год назад
- AD2: Мой новый ПК с Docker, использующий наш Докер-файл, основанный на ubuntu:19:10, скомпилированный сейчас
- В: Мой ноутбук (с которого я скопировал диск на свой новый ПК) без Docker
- БД: Мой ноутбук с Докер
- CD1: Рабочий ноутбук с Docker, использующий наш Dockerfile на основе ubuntu:18.04, составленный год назад
- CD2: Рабочий ноутбук с докером, используя наш файл докера, основанный на ubuntu:19:10, скомпилированный сейчас
- DD: Цифровой Ocean VPS с нашим Докерфайлом, основанным на ubuntu:18.04, скомпилированным сейчас
Во всех сценариях мы получили любой из двух результатов сборки, я назову вариант X и Y.
- У нас есть вариант X с использованием A, B, CD1, CD2 и DD.
- Получили вариант Y, используя AD1, AD2 и BD.
С момента выхода нескольких релизов нашего приложения для Android этот вопрос продолжает воспроизводиться на 100%. Он не пошел прочь когда я обновил мой Докер с 19.03.6 до 19.03.8 для того чтобы соответствовать версии моего коллеги. Мы оба имели Ubuntu 19.10 тогда, и теперь я продолжаю получать вопрос с Ubuntu 20.04.
Я всегда свеженько клонировал наш проект в новую папку, использовал расстройства для устранения проблем с сортировкой файловой системы и монтировал папку в докер-контейнер.
Сомневаюсь, что это имеет отношение к делу, но мы используем этот Докер-файл:
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
Также здесь инструкции по сборке, которые я запускаю и получаю разные результаты. Саму разницу можно найти здесь.
Редакция: Я также подал его как жучок на докер РЕПО.