Разделы

CI/CD с GitHub Actions

Деплойте на каждый пуш официальным GitHub-экшеном: он упаковывает каталог функции, загружает его, стримит логи сборки прямо в workflow-ран и сообщает результат как статус коммита и, по желанию, комментарий к pull request с preview-URL.

Аутентификация — либо keyless через GitHub OIDC (рекомендуем: нечего ротировать), либо API-ключ воркспейса в секретах Actions.

Минимальный workflow

Функцию деплоит один шаг; в outputs доступны идентификатор деплоя, статус и живой URL для следующих шагов:

deploy.yml
# .github/workflows/deploy.yml — keyless (OIDC) deploy on push, previews on PRs
name: Deploy to Inquir Compute

on:
  push:
    branches: [main]
  pull_request:

permissions:
  contents: read
  id-token: write       # GitHub OIDC token for keyless auth
  deployments: write    # GitHub Deployment records
  statuses: write       # commit status checks
  pull-requests: write  # sticky preview comment on PRs

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: inquir-compute/deploy-action@v2
        id: deploy
        with:
          path: ./functions/hello
          environment: ${{ github.event_name == 'pull_request'
            && format('preview-pr-{0}', github.event.number) || 'production' }}
      - run: echo "URL ${{ steps.deploy.outputs.url }}"

Keyless-авторизация через OIDC

С OIDC workflow обменивает короткоживущий GitHub-токен на деплой-токен со сроком жизни 15 минут — долгоживущего секрета не существует нигде. Настройка — три шага:

  • В настройках воркспейса добавьте репозиторий в Trusted Repositories, при желании закрепив шаблон ссылки вроде refs/heads/main.
  • Дайте workflow разрешение id-token: write (см. пример выше).
  • Не передавайте api-key — экшен включает OIDC сам (oidc: auto); параметр tenant нужен, только если репозиторию доверяют несколько воркспейсов.

Авторизация по API-ключу

Там, где OIDC недоступен, создайте API-ключ воркспейса, положите его в секреты Actions и передайте как api-key: {'${{ secrets.INQUIR_API_KEY }}'}. Ограничьте ключ деплоями и ротируйте, как любой другой секрет.

Preview-окружения на каждый PR

Параметр environment разводит деплои по пространствам имён, поэтому pull request может выкатывать изолированные preview, не касаясь продакшна:

  • На push в main пример деплоит в production; на pull_request — в preview-pr-N.
  • С comment-on-pr: true (по умолчанию) экшен ведёт один «липкий» комментарий с актуальным preview-URL.
  • Статус коммита становится зелёным только когда деплой дошёл до терминального успеха — упавший деплой роняет проверку и прикладывает ошибку.