Немного расскажу о том, чем продолжилась эпопея с моими github actions и как go всем помог 😄 На паре стримов я рассказывал о том, как сделать свои действия для gh и опубликовать их на маркетплейсе.
Однако проблема была, в том, что я планировал их дальше усложнять и добавлять некую дополнительную логику. К сожалению, это привело к тому, что исходники (там используются сейчас файлы sh) стали напоминать сборники чёрной магии. Вероятно, для специалистов shell это не было бы проблемой, но я не особенно хорошо этот язык знаю.
Хотелось иметь возможность писать на привычном языке, где можно делать удобную обработку ошибок, проверку параметров и тому подобное. В результате, я решил переписать всю сложную логику на go, затем скомпилировать эти файлы для линукса, положить их в bin и вызывать оттуда во время исполнения действия.
Получилось нечто вот такое https://github.com/lokalise/lokalise-pull-action/pull/3/files Сделал простую программу для компиляции (тоже на го), чтобы выходной размер файлов был как можно меньше (они дополнительно ужимаются через upx). Дальше просто дело техники - поправить шаги, чтобы запускали эти бинарники. В целом, после первых тестов полёт нормальный, работает довольно шустро.
Так что вот ещё один пример, когда го может быть чрезвычайно полезен. К примеру, какой-нибудь ruby или elixir тут были бы, видимо, не слишком оптимальны. Да, Ruby в теории можно скомпилировать, но почти наверняка размер выходного файла окажется (не)приличным. Для Elixir пришлось бы делать контейнер docker, там разворачивать виртуальную машину erlang, это бы медленнее работало (хотя если вам известно другое решение - поделитесь!).
Post #1154
2.22K