Files
netrunner-backend/.gitea/workflows/build.yml
T
nineap c617c05233
Build & Push Image / Build and push to Gitea Registry (push) Failing after 14s
Build & Push Image / Build and push Caddy (Cloudflare DNS) image (push) Failing after 13s
CI / fmt + clippy + test (push) Has been cancelled
Переезд с ghcr.io на встроенный Container Registry Gitea
CI (build/deploy) и рантайм самого бэкенда (провижининг новых нод через
NodeService::provision_node_via_ssh — раньше читал GHCR_TOKEN, теперь
GITEA_REGISTRY_TOKEN) теперь используют gitea.netrunner-vpn.com вместо
ghcr.io. .github/workflows остались нетронутыми — та копия для настоящего
GitHub CI, там ghcr.io уместен и дальше (свой GITHUB_TOKEN, не наш секрет).
2026-07-10 20:44:03 +07:00

101 lines
4.2 KiB
YAML

# Копия .github/workflows/build.yml для Gitea Actions. Отличие от оригинала:
# реестр — встроенный Container Registry самой Gitea (gitea.netrunner-vpn.com),
# не ghcr.io — секрет secrets.GITHUB_TOKEN там валиден только на самом
# GitHub. Логин — токеном Gitea с правом write:package
# (secrets.GITEA_REGISTRY_TOKEN), один и тот же токен используется во всех
# репозиториях, где собираются образы (netrunner-backend/netrunner-landing/
# netrunner-proxy) — пакеты в Gitea принадлежат аккаунту, не конкретному
# репозиторию, заводить по секрету на каждый репозиторий не нужно, но
# значение нужно продублировать в Settings каждого из них (Gitea не даёт
# организационных секретов на уровне всего аккаунта для personal-репозиториев).
name: Build & Push Image
on:
push:
branches: [main]
tags: ["v*"]
workflow_dispatch:
env:
REGISTRY: gitea.netrunner-vpn.com
IMAGE_NAME: nineap/netrunner-control-plane
jobs:
build:
name: Build and push to Gitea Registry
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Gitea Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITEA_REGISTRY_TOKEN }}
- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=sha,format=long
type=ref,event=tag
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# Кеш слоёв между прогонами — повторные сборки в разы быстрее.
cache-from: type=gha
cache-to: type=gha,mode=max
# Кастомная сборка Caddy (модуль caddy-dns/cloudflare, нужен для TLS на
# dev-стенде — см. Caddyfile.dev). Компилировать xcaddy'ем прямо на VPS
# оказалось слишком долго и один раз реально уронило SSH-деплой по таймауту
# (компиляция go-модулей на слабой машине не укладывалась в command_timeout
# appleboy/ssh-action) — та же причина, по которой Rust вообще не собирается
# на VPS. Собираем здесь и просто тянем готовый образ, как и основной.
build-caddy:
name: Build and push Caddy (Cloudflare DNS) image
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Gitea Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITEA_REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.caddy
push: true
# Захардкожено, не ${{ github.repository_owner }}: он резолвится в
# "nineAp" (смешанный регистр), Docker такие теги отклоняет.
tags: ${{ env.REGISTRY }}/nineap/netrunner-caddy-cloudflare:latest
cache-from: type=gha,scope=caddy
cache-to: type=gha,mode=max,scope=caddy