Деплойте на каждый пуш официальным GitHub-экшеном: он упаковывает каталог функции, загружает его, стримит логи сборки прямо в workflow-ран и сообщает результат как статус коммита и, по желанию, комментарий к pull request с preview-URL.
Аутентификация — либо keyless через GitHub OIDC (рекомендуем: нечего ротировать), либо API-ключ воркспейса в секретах Actions.
Минимальный workflow
Функцию деплоит один шаг; в outputs доступны идентификатор деплоя, статус и живой URL для следующих шагов:
# .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. - Статус коммита становится зелёным только когда деплой дошёл до терминального успеха — упавший деплой роняет проверку и прикладывает ошибку.