middle
Что такое Forge и как создать Forge-приложение?
Forge — serverless-платформа Atlassian для разработки Cloud-приложений, где код выполняется в управляемой Atlassian среде (FaaS), что обеспечивает безопасность и простоту развёртывания.
Аналогия из жизни: Forge — это как квартира-студия с мебелью от застройщика. Вы заезжаете и работаете (деплоите код), а управляющая компания (Atlassian) отвечает за отопление, электричество и уборку подъезда (инфраструктуру, безопасность, масштабирование).
Ключевые характеристики
- Runtime: Node.js (TypeScript/JavaScript)
- Хостинг: Atlassian (не нужен свой сервер)
- Изоляция: каждое приложение работает в sandbox
- Ограничения: 25 секунд timeout, 512MB RAM на invocation
Создание приложения
Пример
npm install -g @forge/cli
forge login
forge create
# Выбрать: Jira → jira-issue-panel (или другой шаблон)
manifest.yml
Полный пример manifest.yml
modules:
jira:issuePanel:
- key: my-issue-panel
title: Дополнительная информация
resource: main
resolver:
function: resolver
jira:workflowPostFunction:
- key: my-post-function
name: Автоназначение
function: workflowFunction
function:
- key: resolver
handler: index.handler
- key: workflowFunction
handler: workflow.handler
trigger:
- key: issue-created-trigger
function: onIssueCreated
events:
- avi:jira:created:issue
resources:
- key: main
path: src/frontend/index.jsx
permissions:
scopes:
- read:jira-work
- write:jira-work
- read:jira-user
app:
runtime:
name: nodejs18.x
id: ari:cloud:ecosystem::app/xxxxxxxx
Backend (Resolver)
Пример
import Resolver from '@forge/resolver';
import api, { route } from '@forge/api';
import { storage } from '@forge/api';
const resolver = new Resolver();
resolver.define('getIssueDetails', async ({ payload, context }) => {
const issueKey = context.extension.issue.key;
const response = await api.asUser().requestJira(
route`/rest/api/3/issue/${issueKey}`,
{ headers: { 'Accept': 'application/json' } }
);
const data = await response.json();
return {
summary: data.fields.summary,
status: data.fields.status.name,
assignee: data.fields.assignee?.displayName || 'Не назначен'
};
});
export const handler = resolver.getDefinitions();
Деплой и установка
Пример
forge deploy # Деплой кода в Atlassian Cloud
forge install # Установка на конкретный Jira Cloud site
forge tunnel # Режим разработки (проксирование на локальный код)
forge logs # Просмотр логов приложения
Частые ошибки
- Превышение лимита 25 секунд на invocation — тяжёлую логику нужно разбивать на части
- Не указать необходимые scopes в manifest.yml — API-вызовы возвращают 403
- Использование console.log для отладки в production — логи ограничены 4 KB
- Не обработать ошибки в resolver — пользователь видит generic error message
Как используется в 2026
- Forge стал зрелой платформой: Custom UI, Storage API, Entity Storage, Async Events, Scheduled Triggers
- Node.js 18+ — текущий runtime
- UI Kit 2 — актуальная версия с улучшенным набором компонентов
- Forge поддерживает multi-product apps (Jira + Confluence + Bitbucket)
На собеседовании: подчеркните, что Forge — рекомендуемый Atlassian фреймворк для новых Cloud-приложений. Два варианта UI: UI Kit (декларативный, проще) и Custom UI (React, полная свобода).
api.asUser()— от имени пользователя,api.asApp()— от имени приложения.forge tunnel— незаменим при разработке.