حالت headless / CI

اجرای AiraCode از job‌های CI، کانتینرهای Docker، و اتوماسیون سرور.

پایه‌ها

  • برای یک پرامپت و یک جواب از -p <prompt> یا --print استفاده کن.
  • به‌جای اجرای aira login مرورگری، AIRA_API_KEY رو ست کن.
  • برای خروجی قابل‌خواندن توسط ماشین از --output-format json یا --output-format stream-json استفاده کن.
  • برای حالت hermetic بدون keychain، کانفیگ global، hook‌ها، یا sync پلاگین از --bare استفاده کن.
  • --dangerously-skip-permissions رو فقط داخل یک job از CI که sandbox شده و در کنترل خودته استفاده کن.

GitHub Actions

name: review
on: pull_request

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: curl -fsSL https://airacode.ir/install.sh | bash
      - run: |
          export PATH="$HOME/.airacode/bin:$PATH"
          aira -p "Review this PR for bugs and security issues." \
            --output-format json > review.json
        env:
          AIRA_API_KEY: ${{ secrets.AIRA_API_KEY }}
      - run: gh pr comment "$GITHUB_HEAD_REF" --body-file review.json

GitLab CI

review:
  image: oven/bun:latest
  script:
    - curl -fsSL https://airacode.ir/install.sh | bash
    - export PATH=$HOME/.airacode/bin:$PATH
    - aira -p "Run a code review and return JSON." --output-format json
  variables:
    AIRA_API_KEY: $AIRA_API_KEY

امنیت روی CI

  • AIRA_API_KEY رو به‌عنوان secret رمزنگاری‌شده ذخیره کن، نه YAML خام.
  • برای هر محیط CI توکن جداگانه استفاده کن.
  • پرامپت‌های فقط‌خواندنی رو ترجیح بده، مگه اینکه job توی یک checkout ایزوله و یک‌بارمصرف اجرا بشه.
  • قبل از اجازه‌دادن به ابزارهای نوشتن یا shell توی CI، پرچم‌های permission رو مرور کن.

داخل Docker

FROM oven/bun:1.3
RUN curl -fsSL https://airacode.ir/install.sh | bash
ENV PATH="/root/.airacode/bin:${PATH}"
ENV AIRA_REMOTE_MEMORY=0
COPY . /app
WORKDIR /app
CMD ["aira", "-p", "/app/prompts/review.txt", "--output-format", "json"]

AIRA_REMOTE_MEMORY=0 اختیاریه. برای کانتینرهای یک‌بارمصرف که می‌خوای همهٔ خوندن و نوشتن حافظه محلی بمونه مفیده.