Files
netrunner-backend/.gitea/workflows/build.yml
T
nineap e6c81bf8fd
Build & Push Image / Build and push to GHCR (push) Failing after 3m1s
Build & Push Image / Build and push Caddy (Cloudflare DNS) image (push) Failing after 11s
CI / fmt + clippy + test (push) Failing after 21m4s
Дублирует пайплайны для Gitea Actions (.gitea/workflows/)
Копии .github/workflows/{ci,build,deploy}.yml — Gitea Actions синтаксически
совместим с GitHub Actions, поэтому большая часть 1:1. Отличие: логин на
ghcr.io в build.yml теперь через secrets.GHCR_TOKEN (настоящий GitHub PAT),
не secrets.GITHUB_TOKEN — автотокен Gitea валиден только для самого Gitea,
на ghcr.io им не залогиниться. deploy.yml уже использовал GHCR_TOKEN,
не тронут в этой части.

Нужно завести в Gitea: секрет GHCR_TOKEN (write:packages), плюс все
остальные секреты, что уже есть в GitHub Actions (отдельное хранилище,
не шарится автоматически). Триггер workflow_run в deploy.yml поддержан не
во всех версиях Gitea Actions — см. комментарий в файле.
2026-07-09 14:28:05 +07:00

99 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Копия .github/workflows/build.yml для Gitea Actions. Отличие от оригинала:
# логин на ghcr.io использует secrets.GHCR_TOKEN (настоящий GitHub PAT с
# правами write:packages), а не secrets.GITHUB_TOKEN — автотокен Gitea валиден
# только для самого Gitea (API/пакеты этого инстанса), на ghcr.io им не
# залогиниться. Секрет GHCR_TOKEN нужно завести отдельно в настройках этого
# репозитория/организации в Gitea.
name: Build & Push Image
on:
push:
branches: [main]
tags: ["v*"]
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository_owner }}/netrunner-control-plane
jobs:
build:
name: Build and push to GHCR
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 GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GHCR_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 GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.caddy
push: true
# Захардкожено, не ${{ github.repository_owner }}: он резолвится в
# "nineAp" (смешанный регистр), Docker такие теги отклоняет — та же
# причина, по которой deploy.yml тоже хардкодит "nineap" для
# основного образа вместо репозиторного контекста.
tags: ${{ env.REGISTRY }}/nineap/netrunner-caddy-cloudflare:latest
cache-from: type=gha,scope=caddy
cache-to: type=gha,mode=max,scope=caddy