статья скорее о моей невнимательности, и, в какой то степени, тупости
Недавно мне приспичило перенести sccl.cc с жирного Astro на Zine.
Сам Zine - прикольная штука. Быстрый, написан на Zig, шаблоны на SuperHTML. Всё собирается быстро, локально вроде всё летает.
Подробнее в статье Migration-from-Astro-to-Zine.md
Но вот deploy эт отдельная история.
Zine скомпилен в standalone-бинарник со статической линковкой. Никаких зависимостей и рантаймов - скачал, запустил. В npm его нет, из пакетных менеджеров не установишь. Значит над как-то доставлять его на раннер.
Мысли:
- качать curl-ом при каждом билде
- закоммитить в репозиторий
Первый вариант - костыль. Второй звучит надёжнее…
Пихаем в репу
Первая мысль была - закоммитить zine в репозиторий, чтоб билдилось из коробки:
cp /tmp/zine bin/zine
git add bin/zine && git commit
git push
> remote: error: File bin/zine is 152.19 MB; this exceeds GitHub's file size limitИ тут вспоминается, что GitHub не пускает больше 100 МБ.
пора хостить свой git
может быть… потом…
Ок, откатываем, делаем вид, что ничего не было. Лезем в доку Zine - там рекомендуют kristoff-it/setup-zine@v1 в GitHub Actions.
GitHub Actions
Пихаем kristoff-it/setup-zine@v1 в gh actions:
- uses: kristoff-it/setup-zine@v1
with:
version: v0.11.3
- run: zine release
- uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy public/ --project-name sccl-ccВсё логично: экшен ставит zine, zine билдит сайт, wrangler пушит на cf pages.
Из секретов нужны только CLOUDFLARE_API_TOKEN и CLOUDFLARE_ACCOUNT_ID
(права Account → Cloudflare Pages → Edit).
Над было смотреть доку сразу, но чет беглым взлглядом на неё эт инфа затерялась.