Система CI/CD
Some checks failed
Build G365SFU / build (push) Has been cancelled

This commit is contained in:
set
2026-03-20 19:24:03 +02:00
parent 6364253c6f
commit 625a7acfb7
6 changed files with 105 additions and 2 deletions

27
.env Normal file
View File

@@ -0,0 +1,27 @@
###########
# GATEWAY #
###########
#Секретный ключ по которому авторизуются бекенды при подключении к SFU шлюзу
SECRET=SFU_TEST_SECRET
#PORT SFU шлюза (для приема соединений от бекендов)
PORT=1001
###############
# SFU SECTION #
###############
#Публичный IP адрес, который будет использоваться для ICE кандидатов (если SFU работает за NAT)
SFU_PUBLIC_IP=192.168.6.82
#Диапазон портов для ICE кандидатов
SFU_PORT_RANGE_FROM=30000
SFU_PORT_RANGE_TO=39999
################
# TURN SECTION #
################
#Разрешить использовать этот SFU как TURN сервер тоже (для ретрансляции медиа трафика на сам SFU)
TURN_ALLOW=true
#TURN имя пользователя и пароль для аутентификации на TURN сервере (если используется)
TURN_PUBLIC_IP=192.168.6.82
TURN_USER=user
TURN_PASS=pass
#Диапазон занимемых TURN сервером портов (tcp/udp)
TURN_PORT_RANGE_FROM=40000
TURN_PORT_RANGE_TO=50000

View File

@@ -0,0 +1,39 @@
name: Build G365SFU
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install Node.js
run: |
if command -v apt-get &> /dev/null; then
sudo apt-get update && sudo apt-get install -y nodejs npm
elif command -v brew &> /dev/null; then
brew install node
fi
- name: Checkout code
uses: actions/checkout@v6
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 1.20
- name: Build G365SFU
run: |
make build
- name: Deploy to server via SSH
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.SFU_SSH_HOST }}
username: ${{ secrets.SFU_SSH_USER }}
password: ${{ secrets.SFU_SSH_PASSWORD }}
port: ${{ secrets.SFU_SSH_PORT }}
source: "build/*"
target: ${{ secrets.SFU_DEPLOY_PATH }}
strip_components: 1
rm: false
debug: true
flatten: true

5
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.env
.vscode .vscode
__debug* __debug*
build/.env
build/g365sfu

5
Makefile Normal file
View File

@@ -0,0 +1,5 @@
.PHONY: build
build:
mkdir -p build
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/g365sfu .

18
build/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
WORKDIR /app
# Бинарь должен быть собран заранее в ./build/g365sfu
COPY g365sfu /app/g365sfu
COPY .env /app/.env
RUN chmod +x /app/g365sfu
EXPOSE 1001
EXPOSE 3478/tcp
EXPOSE 3478/udp
ENTRYPOINT ["/app/g365sfu"]

13
build/docker-compose.yml Normal file
View File

@@ -0,0 +1,13 @@
services:
g365sfu:
container_name: g365sfu
build:
context: .
dockerfile: Dockerfile
image: g365sfu:latest
restart: unless-stopped
env_file:
- .env
#Поддерживается только в Linux (на Windows и MacOS нужно использовать bridge сеть и проброс портов, но нельзя пробрасывать большие
#диапазоны портов, это может вызывать проблемы с работой Docker)
network_mode: host