<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Автоматизируем деплой TS Node.js функций на Yandex Cloud с cron: DIY-гайд 2026]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/d2/d6/1e/1774080492707-generated_1774080468261.webp" alt="Обложка: Как автоматизировать деплой TypeScript-функций Node.js на Yandex Cloud с компиляцией и cron: DIY-гайд 2026" class=" img-fluid img-markdown" /></p>
<p dir="auto">Задолбался каждый раз вручную компилить TypeScript и деплоить на Yandex Cloud Functions? Этот гайд покажет, как настроить полный пайплайн: от компиляции TS в JS до автодеплоя и cron-триггеров. Экономишь часы на релизе, функция работает по расписанию без сервака.</p>
<p dir="auto">Node.js на <strong>Yandex Cloud</strong> - топ для serverless, особенно с TypeScript. Плюс cron решает задачи типа ежедневного парсинга или бэкапов. Всё делается DIY, без лишних сервисов, на чистом yc CLI и GitHub Actions.</p>
<h2>Настраиваем проект TypeScript для Cloud Functions</h2>
<p dir="auto">TypeScript не едет на <strong>Yandex Cloud</strong> как есть - Node.js runtime жрёт только JS. Сначала компилим TS в build-директорию, пакуем в ZIP и шлём. Это базовый шаг, без него ничего не взлетит. Представь: пишешь типизированный код, npx tsc - и готов архив для деплоя.</p>
<p dir="auto"><strong>Реальный пример</strong>: функция, которая парсит API и логирует в Cloud Logging. Конфиг tsconfig.json под Node.js 22 - target ES2021, outDir build. После компиляции index.ts становится index.js в build. Yandex сам ставит deps из package.json при деплое.</p>
<p dir="auto">Вот ключевые шаги настройки:</p>
<ul>
<li>Установи TS: <code>npm i typescript --save-dev</code>.</li>
<li>Создай tsconfig: <code>npx tsc --init --target ES2021 --moduleResolution Node --outDir build --strict</code>.</li>
<li>Напиши handler: <code>export const handler = async (event) =&gt; { ... }</code>.</li>
<li>Компиль: <code>npx tsc</code> - build готов для ZIP.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Параметр tsconfig</th>
<th>Значение</th>
<th>Зачем</th>
</tr>
</thead>
<tbody>
<tr>
<td>target</td>
<td>ES2021</td>
<td>Совместимо с nodejs22</td>
</tr>
<tr>
<td>outDir</td>
<td>build</td>
<td>Отдельная папка для JS</td>
</tr>
<tr>
<td>moduleResolution</td>
<td>Node</td>
<td>Для npm-модулей</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Нюанс</em>: Если deps типа @yandex-cloud/nodejs-sdk - добавь в package.json, компиляция их не трогает.</p>
<h2>Деплой через yc CLI с автоматизацией компиляции</h2>
<p dir="auto">Ручной деплой - это <code>yc serverless function version create --source-path=build</code>. Но для автоматизации скриптуем: компиль + ZIP + yc deploy. GitHub Actions или локальный скрипт на Node.js - выбирай по вкусу. После пуша в main триггерится полный цикл.</p>
<p dir="auto"><strong>Пример скрипта <a href="http://deploy.sh" target="_blank" rel="noopener noreferrer">deploy.sh</a></strong>:</p>
<pre><code class="language-bash">#!/bin/bash
npm run build  # tsc
zip -r function.zip build/
yc serverless function version create --function-name my-ts-func --source-path=./function.zip
</code></pre>
<p dir="auto">Это деплоит версию функции. Указывай runtime <code>nodejs22</code>, entrypoint <code>build/index.handler</code>. Логи в консоли Yandex - всё видно сразу.</p>
<p dir="auto">Шаги для полного деплоя:</p>
<ol>
<li>Инициализируй yc CLI: <code>yc init</code>.</li>
<li>Создай функцию: <code>yc serverless function create --name my-ts-func --runtime nodejs22</code>.</li>
<li>Скриптуй build &amp; deploy (см. выше).</li>
<li>Тести: <code>yc serverless function invoke --name my-ts-func</code>.</li>
</ol>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Ручной деплой vs Авто</th>
<th>Время</th>
<th>Масштаб</th>
</tr>
</thead>
<tbody>
<tr>
<td>yc CLI вручную</td>
<td>5 мин</td>
<td>Пет-проект</td>
</tr>
<tr>
<td>GitHub Actions</td>
<td>1 мин</td>
<td>Команда</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Важно</em>: IAM-токен для CI - сервисный аккаунт с правами editor.</p>
<h2>Интегрируем cron-триггеры для scheduled tasks</h2>
<p dir="auto">Cron в <strong>Cloud Functions</strong> - это триггер по расписанию, типа <code>0 0 * * *</code> для ежедневного запуска. Нет нужды в серваке или Kubernetes. Функция будится, отрабатывает задачу - спит. Идеально для бэкапов, парсинга Reddit или ИИ-скриптов.</p>
<p dir="auto"><strong>Пример</strong>: Функция шлёт метрику в Yandex Monitoring по cron. Создай триггер: <code>yc serverless trigger create schedule --name cron-trigger --cron-expression="0 9 * * 1-5" --function my-ts-func</code>. Теперь по будням в 9 утра флайт.</p>
<p dir="auto">Настройка cron:</p>
<ul>
<li>Создай триггер: <code>yc serverless trigger create schedule ...</code>.</li>
<li>Свяжи с функцией: указывай function-id.</li>
<li>Тести: invoke вручную, чек логов.</li>
<li>Масштаб: до 1000 вызовов/сек, бесплатно первые 1M.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Cron выражение</th>
<th>Задача</th>
<th>Частота</th>
</tr>
</thead>
<tbody>
<tr>
<td>0 0 * * *</td>
<td>Бэкап</td>
<td>Ежедневно</td>
</tr>
<tr>
<td>0 */5 * * * *</td>
<td>Парсер</td>
<td>Каждые 5 мин</td>
</tr>
<tr>
<td>0 12 * * 1</td>
<td>Отчёт</td>
<td>По понедельникам</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Подводный камень</em>: Таймаут функции - до 10 мин, для долгих задач цепочка вызовов.</p>
<h2>Готовый пайплайн CI/CD на GitHub Actions</h2>
<p dir="auto">Полный автодеплой: push в repo -&gt; build TS -&gt; deploy на Yandex -&gt; cron активен. Используй actions/setup-node и yc CLI в workflow. Репо с .github/workflows/deploy.yml - и фича готова. Это DIY без SourceCraft, чисто на GitHub.</p>
<p dir="auto"><strong>workflow.yml</strong>:</p>
<pre><code class="language-yaml">name: Deploy TS Function
on: [push]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with: { node-version: 22 }
    - run: npm ci
    - run: npm run build
    - uses: actions/upload-artifact@v4
      with: { name: func, path: build }
    - name: Deploy
      run: | # yc CLI скрипт
</code></pre>
<p dir="auto">Деплой триггерится на push, компилит, шлёт ZIP. Добавь SDK для работы с Yandex API внутри функции.</p>
<p dir="auto">Пайплайн шаги:</p>
<ul>
<li>Checkout + npm install.</li>
<li>Build TS.</li>
<li>ZIP + yc create version.</li>
<li>Notify в Telegram (опционально).</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Инструмент</th>
<th>Плюсы</th>
<th>Минусы</th>
</tr>
</thead>
<tbody>
<tr>
<td>GitHub Actions</td>
<td>Бесплатно, легко</td>
<td>Лимит минут</td>
</tr>
<tr>
<td>SourceCraft</td>
<td>Нативно Yandex</td>
<td>Меньше флекс</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Совет</em>: Secrets для токенов - YC_OAUTH_TOKEN.</p>
<h2>Масштаб и хитрости для продакшена</h2>
<p dir="auto">Всё настроено - теперь подумай о мониторинге и версиях. Yandex Logging ловит stdout, Metrics считает вызовы. Для продакшена - A/B версий функций, роллбэки. Cron + TS/Node.js - база для пет-проекта или бизнеса.</p>
<p dir="auto">Остаётся за кадром: интеграция с Yandex AI Studio для ИИ-тасков в cron или Kubernetes для stateful. Подумай о тестовом фреймворке - Jest с ts-jest перед деплоем. В 2026 такие пайплайны - стандарт, держи runtime nodejs22 свежим.</p>
]]></description><link>https://forum.exlends.ru/topic/1797/avtomatiziruem-deploj-ts-node.js-funkcij-na-yandex-cloud-s-cron-diy-gajd-2026</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:07:22 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1797.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Mar 2026 08:08:12 GMT</pubDate><ttl>60</ttl></channel></rss>