Gitea Actions: сборка образа + деплой на список прокси-нод

- .gitea/workflows/build.yml — cargo build --release + docker build/push в
  ghcr.io/nineap/netrunner-proxy:latest (Dockerfile сам не компилирует Rust,
  ждёт уже готовый target/release/netrunner-server).
- .gitea/workflows/deploy.yml — только вручную (workflow_dispatch), параметр
  target: имя ноды из nodes.json или "all". Job "resolve" фильтрует список,
  job "deploy" — matrix по результату, каждая нода видна в прогоне отдельной
  строкой. Деплой пересоздаёт контейнер (pull+rm+run), не просто restart —
  иначе новый образ не подхватится.
- nodes.json — список нод (name/host/proxy_port/decoy_host), шаблон с
  CHANGE_ME — заполнить реальными IP.

Нужные секреты: GHCR_TOKEN (тот же, что и в остальных репо), PROXY_NODES_SSH_KEY
(общий master-ключ на все ноды), PROXY_INTERNAL_SECRET, BACKEND_URL (те же
значения, что уже настроены у бэкенда).
This commit is contained in:
2026-07-09 15:27:18 +07:00
parent e44bc4f660
commit c835ac983a
3 changed files with 165 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
# Собирает netrunner-server (release-бинарник) и пушит Docker-образ в ghcr.io.
# Dockerfile сам не компилирует Rust — он просто копирует уже готовый
# target/release/netrunner-server (см. Dockerfile), поэтому cargo build идёт
# отдельным шагом перед docker build, не внутри него.
#
# Нужен секрет GHCR_TOKEN — настоящий GitHub PAT с правом write:packages
# (автотокен Gitea для ghcr.io не годится, см. остальные .gitea/workflows/
# в других репозиториях — та же причина).
name: Build & Push Proxy Image
on:
push:
branches: [main]
tags: ["v*"]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: Swatinem/rust-cache@v2
- name: Build release binary
run: cargo build --release -p netrunner-server
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ghcr.io/nineap/netrunner-proxy:latest