[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-jira-chto-takoe-forge-i-kak-sozdat-forge-prilozhenie":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},1064,"chto-takoe-forge-i-kak-sozdat-forge-prilozhenie",27,"jira","Jira","📋","Что такое Forge и как создать Forge-приложение?","Forge — serverless-платформа Atlassian для разработки Cloud-приложений, где код выполняется в управляемой Atlassian среде (FaaS), что обеспечивает безопасность и простоту развёртывания.\n\n> **Аналогия из жизни:** Forge — это как квартира-студия с мебелью от застройщика. Вы заезжаете и работаете (деплоите код), а управляющая компания (Atlassian) отвечает за отопление, электричество и уборку подъезда (инфраструктуру, безопасность, масштабирование).\n\n### Ключевые характеристики\n\n- Runtime: Node.js (TypeScript\u002FJavaScript)\n- Хостинг: Atlassian (не нужен свой сервер)\n- Изоляция: каждое приложение работает в sandbox\n- Ограничения: 25 секунд timeout, 512MB RAM на invocation\n\n### Создание приложения\n\n```bash\nnpm install -g @forge\u002Fcli\nforge login\nforge create\n# Выбрать: Jira → jira-issue-panel (или другой шаблон)\n```\n\n### manifest.yml\n\n\u003Cdetails>\n\u003Csummary>Полный пример manifest.yml\u003C\u002Fsummary>\n\n```yaml\nmodules:\n  jira:issuePanel:\n    - key: my-issue-panel\n      title: Дополнительная информация\n      resource: main\n      resolver:\n        function: resolver\n\n  jira:workflowPostFunction:\n    - key: my-post-function\n      name: Автоназначение\n      function: workflowFunction\n\n  function:\n    - key: resolver\n      handler: index.handler\n    - key: workflowFunction\n      handler: workflow.handler\n\n  trigger:\n    - key: issue-created-trigger\n      function: onIssueCreated\n      events:\n        - avi:jira:created:issue\n\nresources:\n  - key: main\n    path: src\u002Ffrontend\u002Findex.jsx\n\npermissions:\n  scopes:\n    - read:jira-work\n    - write:jira-work\n    - read:jira-user\n\napp:\n  runtime:\n    name: nodejs18.x\n  id: ari:cloud:ecosystem::app\u002Fxxxxxxxx\n```\n\n\u003C\u002Fdetails>\n\n### Backend (Resolver)\n\n```typescript\nimport Resolver from '@forge\u002Fresolver';\nimport api, { route } from '@forge\u002Fapi';\nimport { storage } from '@forge\u002Fapi';\n\nconst resolver = new Resolver();\n\nresolver.define('getIssueDetails', async ({ payload, context }) => {\n    const issueKey = context.extension.issue.key;\n    const response = await api.asUser().requestJira(\n        route`\u002Frest\u002Fapi\u002F3\u002Fissue\u002F${issueKey}`,\n        { headers: { 'Accept': 'application\u002Fjson' } }\n    );\n    const data = await response.json();\n    return {\n        summary: data.fields.summary,\n        status: data.fields.status.name,\n        assignee: data.fields.assignee?.displayName || 'Не назначен'\n    };\n});\n\nexport const handler = resolver.getDefinitions();\n```\n\n### Деплой и установка\n\n```bash\nforge deploy          # Деплой кода в Atlassian Cloud\nforge install         # Установка на конкретный Jira Cloud site\nforge tunnel          # Режим разработки (проксирование на локальный код)\nforge logs            # Просмотр логов приложения\n```\n\n### Частые ошибки\n\n- Превышение лимита 25 секунд на invocation — тяжёлую логику нужно разбивать на части\n- Не указать необходимые scopes в manifest.yml — API-вызовы возвращают 403\n- Использование console.log для отладки в production — логи ограничены 4 KB\n- Не обработать ошибки в resolver — пользователь видит generic error message\n\n### Как используется в 2026\n\n- Forge стал зрелой платформой: Custom UI, Storage API, Entity Storage, Async Events, Scheduled Triggers\n- Node.js 18+ — текущий runtime\n- UI Kit 2 — актуальная версия с улучшенным набором компонентов\n- Forge поддерживает multi-product apps (Jira + Confluence + Bitbucket)\n\n> **На собеседовании:** подчеркните, что Forge — рекомендуемый Atlassian фреймворк для новых Cloud-приложений. Два варианта UI: UI Kit (декларативный, проще) и Custom UI (React, полная свобода). `api.asUser()` — от имени пользователя, `api.asApp()` — от имени приложения. `forge tunnel` — незаменим при разработке.","","middle",[15,16,17,18,7],"jira-forge","serverless","jira-cloud","typescript",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":35,"featuredSnippetReady":36},"Что такое Forge и как создать Forge-приложение — Gymterview","Forge: serverless платформа Atlassian для Jira Cloud. Создание приложения, manifest.yml, resolver (backend), UI Kit, Custom UI, triggers, деплой.","Forge: serverless приложения для Jira Cloud — Gymterview","Как создать Forge-приложение: Forge CLI, manifest.yml, resolvers, UI Kit\u002FCustom UI, triggers, forge deploy\u002Ftunnel.",[27,28,16,29,30,31,32,33,34],"Forge","Atlassian Forge","Jira Cloud","manifest.yml","resolver","UI Kit","Custom UI","TypeScript","Forge — serverless-платформа Atlassian для Jira Cloud (TypeScript, Node.js 18+). Код в sandbox Atlassian, лимиты: 25s timeout, 512MB RAM. Создание: forge create, структура: manifest.yml (модули, scopes), resolvers (backend), UI Kit или Custom UI (React). Деплой: forge deploy + forge install. forge tunnel — для локальной разработки. api.asUser() и api.asApp() для REST вызовов.",true]