Щоб навести практичний приклад спроби створення справді повторюваної збірки, розглянемо наступне -
Конвеєр побудови, який починається з сховища git, для якого жоден користувач ніколи не може переписати історію чи видалити нерозміщені гілки.
Перший крок "побудови" після перевірки вихідного коду - це розкручування контейнера, який містить усі залежності часу побудови.
Виведенням запущеного контейнера часу збірки є контейнер, який містить скомпільований двійковий файл.
Більш важливі для повторюваності збірки наступні теги додаються до кінцевого контейнера:
- Точний хеш-код вихідного коду в оригінальному сховищі та URL-адресу як git repo, так і знімка кульки з дьогтем коду, який завантажується у сховище артефактів.
- Точна версія контейнера збірки, яка використовувалася для запуску збірки.
- Точна версія вихідного базового зображення, в яке було завантажено двійковий файл.
- Значення всіх змінних часу нарощування, які використовуються для створення бінарних даних.
- Версія докера, що всі три контейнери, де побудовані, а також версія, де вони працюють, коли вони побудували.
Додаючи всі ці метадані, ми можемо гарантувати, що в будь-який момент в майбутньому ми можемо витягнути точний набір залежностей збірки (через контейнер збірки), скласти двійковий файл із точним відомим набором кроків (закріпленим на контейнері збірки ) і упакуйте це в інше відоме базове зображення з усіма залежностями часу виконання (використовуючи тег базового зображення), і все це може базуватися на точно правильній версії вихідного коду на основі тегу на контейнері.
Теоретично це повинно дати нам можливість точно відтворювати версію збірки.
Важливість цього полягає в тому, що воно дозволяє нам подивитися на те, що працює у виробництві, і, навіть якщо все значно прогресувало версії, повернутися назад і витягнути версію коду, базовий образ і створити спочатку використаний контейнер, щоб ми могли, наприклад, , застосуйте гарячу виправлення до цієї версії перед повторною перебудовою точно так само, як і раніше, щоб ми могли повторно розмістити, знаючи, що це точно той самий артефакт, з єдиною дельтою, яка є гарячим виправленням.