Spaces:
Running
Running
Merge pull request #12 from S1lverElixir/agent/deno-deploy
Browse files
.github/workflows/deploy-proxy.yml
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Deploy proxy
|
| 2 |
+
|
| 3 |
+
# Деплой Deno-прокси только после зелёного CI и только если менялся proxy/
|
| 4 |
+
# (аудит, 30.09.2026): раньше прокси выкатывался вручную из дашборда, код и
|
| 5 |
+
# деплой рассинхронизировались. Ждём воркфлоу "CI", как sync-to-hf.yml.
|
| 6 |
+
# Нужны секреты репозитория:
|
| 7 |
+
# DENO_DEPLOY_TOKEN — токен из Deno Deploy (проект → Settings → Access Tokens)
|
| 8 |
+
# DENO_PROXY_PROJECT — имя основного проекта прокси в Deno Deploy
|
| 9 |
+
# DENO_PROXY_PROJECT_FALLBACK — имя резервного проекта прокси в Deno Deploy
|
| 10 |
+
on:
|
| 11 |
+
workflow_run:
|
| 12 |
+
workflows: ["CI"]
|
| 13 |
+
types: [completed]
|
| 14 |
+
branches: [main]
|
| 15 |
+
# Ручной запуск из вкладки Actions — например, чтобы выложить текущий код
|
| 16 |
+
# после добавления секретов, без правок в proxy/.
|
| 17 |
+
workflow_dispatch:
|
| 18 |
+
|
| 19 |
+
permissions:
|
| 20 |
+
contents: read
|
| 21 |
+
|
| 22 |
+
# Два CI подряд — деплоим по очереди, идущий деплой не отменяем.
|
| 23 |
+
concurrency:
|
| 24 |
+
group: deno-proxy-deploy
|
| 25 |
+
cancel-in-progress: false
|
| 26 |
+
|
| 27 |
+
jobs:
|
| 28 |
+
deploy:
|
| 29 |
+
# Авто: только пуши в ЭТОТ репозиторий с зелёным CI (та же защита от форков, что в sync-to-hf.yml).
|
| 30 |
+
# Вручную: всегда (для ручного запуска и нужен отдельный пункт).
|
| 31 |
+
if: >-
|
| 32 |
+
github.event_name == 'workflow_dispatch' ||
|
| 33 |
+
(github.event.workflow_run.conclusion == 'success'
|
| 34 |
+
&& github.event.workflow_run.event == 'push'
|
| 35 |
+
&& github.event.workflow_run.head_repository.full_name == github.repository)
|
| 36 |
+
runs-on: ubuntu-latest
|
| 37 |
+
steps:
|
| 38 |
+
- uses: actions/checkout@v7
|
| 39 |
+
with:
|
| 40 |
+
# Тот коммит, что проверялся CI (см. sync-to-hf.yml); при ручном
|
| 41 |
+
# запуске — текущий main.
|
| 42 |
+
ref: ${{ github.event.workflow_run.head_sha || github.sha }}
|
| 43 |
+
fetch-depth: 0
|
| 44 |
+
|
| 45 |
+
- name: Check proxy changes
|
| 46 |
+
id: proxy_changed
|
| 47 |
+
# При ручном запуске всегда деплоим (иначе было бы нечего запускать).
|
| 48 |
+
if: github.event_name == 'workflow_dispatch'
|
| 49 |
+
run: echo "changed=true" >> "$GITHUB_OUTPUT"
|
| 50 |
+
|
| 51 |
+
- name: Check proxy changes on CI trigger
|
| 52 |
+
id: proxy_changed_ci
|
| 53 |
+
if: github.event_name != 'workflow_dispatch'
|
| 54 |
+
run: |
|
| 55 |
+
# Мержи в main — merge-коммиты: дифф с первым родителем показывает весь PR.
|
| 56 |
+
if git diff --name-only HEAD~1 HEAD | grep -q '^proxy/'; then
|
| 57 |
+
echo "changed=true" >> "$GITHUB_OUTPUT"
|
| 58 |
+
else
|
| 59 |
+
echo "changed=false" >> "$GITHUB_OUTPUT"
|
| 60 |
+
fi
|
| 61 |
+
|
| 62 |
+
- name: Deploy to primary proxy
|
| 63 |
+
if: steps.proxy_changed.outputs.changed == 'true' || steps.proxy_changed_ci.outputs.changed == 'true'
|
| 64 |
+
uses: denoland/deployctl@v1
|
| 65 |
+
with:
|
| 66 |
+
project: ${{ secrets.DENO_PROXY_PROJECT }}
|
| 67 |
+
entrypoint: proxy/proxy.ts
|
| 68 |
+
|
| 69 |
+
- name: Deploy to fallback proxy
|
| 70 |
+
if: steps.proxy_changed.outputs.changed == 'true' || steps.proxy_changed_ci.outputs.changed == 'true'
|
| 71 |
+
uses: denoland/deployctl@v1
|
| 72 |
+
with:
|
| 73 |
+
project: ${{ secrets.DENO_PROXY_PROJECT_FALLBACK }}
|
| 74 |
+
entrypoint: proxy/proxy.ts
|