Spaces:
Running
Running
Download .github/workflows/deploy-proxy.yml from SilverElixir/Lumen: direct link, hf CLI and curl.
- Browser
- Download file 4.36 kB
-
https://huggingface.co/spaces/SilverElixir/Lumen/resolve/main/.github/workflows/deploy-proxy.yml
- Command line
-
hf download hf://spaces/SilverElixir/Lumen/.github/workflows/deploy-proxy.yml
-
curl -L -o deploy-proxy.yml https://huggingface.co/spaces/SilverElixir/Lumen/resolve/main/.github/workflows/deploy-proxy.yml
4.36 kB
| name: Deploy proxy | |
| # Деплой Deno-прокси только после зелёного CI и только если менялся proxy/ | |
| # (аудит, 30.09.2026): раньше прокси выкатывался вручную из дашборда, код и | |
| # деплой рассинхронизировались. Ждём воркфлоу "CI", как sync-to-hf.yml. | |
| # Нужны секреты репозитория (только имена проектов; токен не нужен — deployctl | |
| # ходит через GitHub OIDC, нужно право id-token: write ниже): | |
| # DENO_PROXY_PROJECT — имя основного проекта прокси в Deno Deploy | |
| # DENO_PROXY_PROJECT_FALLBACK — имя резервного проекта прокси в Deno Deploy | |
| # Плюс ручной шаг в дашборде Deno (один раз на проект): Settings → Git → | |
| # подключить репозиторий, режим деплоя "GitHub Actions". | |
| on: | |
| workflow_run: | |
| workflows: ["CI"] | |
| types: [completed] | |
| branches: [main] | |
| # Ручной запуск из вкладки Actions — например, чтобы выложить текущий код | |
| # после добавления секретов, без правок в proxy/. | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| # deployctl ходит в Deno через GitHub OIDC, токен не нужен (см. denoland/deployctl). | |
| id-token: write | |
| # Два CI подряд — деплоим по очереди, идущий деплой не отменяем. | |
| concurrency: | |
| group: deno-proxy-deploy | |
| cancel-in-progress: false | |
| jobs: | |
| deploy: | |
| # Авто: только пуши в ЭТОТ репозиторий с зелёным CI (та же защита от форков, что в sync-to-hf.yml). | |
| # Вручную: всегда (для ручного запуска и нужен отдельный пункт). | |
| if: >- | |
| github.event_name == 'workflow_dispatch' || | |
| (github.event.workflow_run.conclusion == 'success' | |
| && github.event.workflow_run.event == 'push' | |
| && github.event.workflow_run.head_repository.full_name == github.repository) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| # Тот коммит, что проверялся CI (см. sync-to-hf.yml); при ручном | |
| # запуске — текущий main. | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| fetch-depth: 0 | |
| - name: Check proxy changes | |
| id: proxy_changed | |
| # При ручном запуске всегда деплоим (иначе было бы нечего запускать). | |
| if: github.event_name == 'workflow_dispatch' | |
| run: echo "changed=true" >> "$GITHUB_OUTPUT" | |
| - name: Check proxy changes on CI trigger | |
| id: proxy_changed_ci | |
| if: github.event_name != 'workflow_dispatch' | |
| run: | | |
| # Мержи — по базе слияния, а не HEAD~1: иначе мультикоммитные пуши | |
| # в main проверяли бы только последний коммит. | |
| if git rev-parse --verify HEAD^2 >/dev/null 2>&1; then | |
| base="$(git merge-base HEAD^1 HEAD^2)" | |
| else | |
| base="HEAD~1" | |
| fi | |
| if git diff --name-only "$base" HEAD | grep -q '^proxy/'; then | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Deploy to primary proxy | |
| if: steps.proxy_changed.outputs.changed == 'true' || steps.proxy_changed_ci.outputs.changed == 'true' | |
| uses: denoland/deployctl@35381c73621e1731268f80e51b54718d086f1e64 # v1 | |
| with: | |
| project: ${{ secrets.DENO_PROXY_PROJECT }} | |
| entrypoint: proxy/proxy.ts | |
| - name: Deploy to fallback proxy | |
| if: steps.proxy_changed.outputs.changed == 'true' || steps.proxy_changed_ci.outputs.changed == 'true' | |
| uses: denoland/deployctl@35381c73621e1731268f80e51b54718d086f1e64 # v1 | |
| with: | |
| project: ${{ secrets.DENO_PROXY_PROJECT_FALLBACK }} | |
| entrypoint: proxy/proxy.ts | |