Снова немного забавных фактов про github actions.
Есть переменные окружения. То, что доступно в пайплайне через
А какая у них область видимости то? Сегодня вот, выяснил что их нельзя использовать в матричных билдах при объявлении матрицы. Ну, то-есть, надо например, собрать что-то в параллель, с разными параметрами. Под разных клиентов, например, или под разные архитектуры.
Вот так, например, не работает, ругается на синтаксис.
Ну, то-есть где-то выше есть джоба, которая инкрементит версию, делает тег, и суёт в GITHUB_ENV переменную APP_VERSION. Эта переменная доступна везде, но не в объявлении матрицы. Документация объясняет это следующим:
Но про то в каких частях можно, а в каких нет - ни слова. Да, можно выкрутиться, сделать output у джобы которая сетит версию, и переиспользовать этот output, но как-то это на костыль похоже.
Есть переменные окружения. То, что доступно в пайплайне через
${{ env.SMTH }}.А какая у них область видимости то? Сегодня вот, выяснил что их нельзя использовать в матричных билдах при объявлении матрицы. Ну, то-есть, надо например, собрать что-то в параллель, с разными параметрами. Под разных клиентов, например, или под разные архитектуры.
Вот так, например, не работает, ругается на синтаксис.
strategy:
matrix:
include:
- image_tag: ${{ env.APP_VERSION }}
api_base_url: https://api.some.tld
- image_tag: ${{ env.APP_VERSION }}-bm
api_base_url: https://api.another.tldi
Ну, то-есть где-то выше есть джоба, которая инкрементит версию, делает тег, и суёт в GITHUB_ENV переменную APP_VERSION. Эта переменная доступна везде, но не в объявлении матрицы. Документация объясняет это следующим:
Environment variables are always interpolated on the virtual machine runner. However, parts of a workflow are processed by GitHub Actions and are not sent to the runner. You cannot use environment variables in these parts of a workflow file.
Но про то в каких частях можно, а в каких нет - ни слова. Да, можно выкрутиться, сделать output у джобы которая сетит версию, и переиспользовать этот output, но как-то это на костыль похоже.
👍2
Вам нравятся митапы с практической частью? Воркшопы там всякие?
Мне вот тоже нравятся. Особенно когда надо не слушать, а выступать. По закону подлости, в последний вечер что-то происходит (приходит обновление, слетает конфиг, еще что-то немыслимое) и практическая часть просто отказывается работать.
Естественно, так и произошло. Только что выступал на митапе, и около 70% практической части импровизировал, потому что работающий конфиг внезапно перестал быть таковым. Что ж, благо никто не заметил и всё прошло круто.
А вообще - могу сказать что выступать перед публикой полезно. Начинаешь понимать в каких областях доклада действительно есть понимание, а в каких только его видимость. Митап к сожалению закрытый, записей не будет. Просто делюсь впечатлениями ;) А вообще, рекомендую хоть раз попробовать себя в роли докладчика. Классный экспириенс.
Мне вот тоже нравятся. Особенно когда надо не слушать, а выступать. По закону подлости, в последний вечер что-то происходит (приходит обновление, слетает конфиг, еще что-то немыслимое) и практическая часть просто отказывается работать.
Естественно, так и произошло. Только что выступал на митапе, и около 70% практической части импровизировал, потому что работающий конфиг внезапно перестал быть таковым. Что ж, благо никто не заметил и всё прошло круто.
А вообще - могу сказать что выступать перед публикой полезно. Начинаешь понимать в каких областях доклада действительно есть понимание, а в каких только его видимость. Митап к сожалению закрытый, записей не будет. Просто делюсь впечатлениями ;) А вообще, рекомендую хоть раз попробовать себя в роли докладчика. Классный экспириенс.
👍9
Под конец года в основном картинки какие-то, персональные впечатления в картинках и отсутствие технического текста. Всё время какая-то активность на работе, чаще ухожу в менеджмент и высокоуровневые процессы, но при этом не становится меньше технических задач.
Много времени уходило на написание очередной статьи (надеюсь, скоро опубликуют), подготовку к митапу, и так далее. Из актуального - пытаюсь заставить azure devops собирать мультиархитектурные имеджи (arm64 и amd64) и деплоить всё это в кубер. Как закончу - поделюсь впечатлениями и опишу технические нюансы, если будет что описывать.
Много времени уходило на написание очередной статьи (надеюсь, скоро опубликуют), подготовку к митапу, и так далее. Из актуального - пытаюсь заставить azure devops собирать мультиархитектурные имеджи (arm64 и amd64) и деплоить всё это в кубер. Как закончу - поделюсь впечатлениями и опишу технические нюансы, если будет что описывать.
👍2🐳1
Как надо писать докерфайлы? Всё очень просто.
Ни в коем случае не надо думать про кеширование слоёв. Разделение на отдельные слои сразу показывает несостоятельность проекта. Чем дольше идёт билд - тем солиднее кажется приложение. Все сразу понимают что и разработчик и девопс долго и упорно трудились.
И уж совсем нельзя выносить всё кроме запуска основного процесса за пределы CMD. Стартап приложения это продолжения деплоя. А чем дольше деплой - тем больше уважают девопса.
Ни в коем случае, код не должен собираться на этапе билда контейнера, даже если разработчики и девопсы не стремятся быть уважаемыми. Иначе все сразу, еще до деплоя в прод поймут что код собирается/не собирается (нужное подчеркнуть), и заране обрадуются исходу. В любом деплое должна быть загадка, иначе это скучный деплой.
Все что вы хотите писать в докерфайле нужно вынести в CMD через логическое "и". Иначе, CMD выглядит недостаточно внушительно. А использование ENTRYPOINT вообще под строжайшим запретом.
Ни в коем случае не надо думать про кеширование слоёв. Разделение на отдельные слои сразу показывает несостоятельность проекта. Чем дольше идёт билд - тем солиднее кажется приложение. Все сразу понимают что и разработчик и девопс долго и упорно трудились.
И уж совсем нельзя выносить всё кроме запуска основного процесса за пределы CMD. Стартап приложения это продолжения деплоя. А чем дольше деплой - тем больше уважают девопса.
Ни в коем случае, код не должен собираться на этапе билда контейнера, даже если разработчики и девопсы не стремятся быть уважаемыми. Иначе все сразу, еще до деплоя в прод поймут что код собирается/не собирается (нужное подчеркнуть), и заране обрадуются исходу. В любом деплое должна быть загадка, иначе это скучный деплой.
Все что вы хотите писать в докерфайле нужно вынести в CMD через логическое "и". Иначе, CMD выглядит недостаточно внушительно. А использование ENTRYPOINT вообще под строжайшим запретом.
🤣10🔥3🤬2🐳2