Files
euzuandGitHub fa5d3237f1 added docker ulimits, .env support, ptt fix (#867)
- **New Features**
  - Added automatic `.env` loading for secrets and environment variables, with custom file paths and existing-environment precedence.
  - Added a `--env-file` option and a sample environment configuration template.
  - Increased Docker file descriptor limits for improved reliability under high connection counts.

- **Bug Fixes**
  - Fixed title parsing for multi-byte UTF-8 characters, preventing crashes and incorrect volume extraction.

- **Documentation**
  - Added guidance for `.env` configuration, Docker usage, restart requirements, and resolving file descriptor exhaustion.
2026-09-15 12:51:09 +02:00

143 lines
3.7 KiB
YAML

name: CI
on:
# push:
# branches: []
pull_request:
branches: [develop]
# Avoid running the same CI multiple times for the same PR
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# Job 1: Check markdown files
markdown:
name: Markdown Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Lint Markdown files
uses: DavidAnson/markdownlint-cli2-action@v24
with:
globs: '**/*.md'
# Job 2: Check code style (very fast)
style:
name: Format & Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install Nightly Rust
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: nightly-2026-05-01
components: rustfmt, clippy
- name: Check Formatting
# This now works with cargo +nightly fmt
run: make fmt-check
- name: Check workspace architecture
run: make architecture-check
- name: Lint with Clippy
run: make lint
- name: Validate native Docker workspace skeleton
run: docker build --target workspace-skeleton -f docker/Dockerfile .
- name: Validate cross Docker workspace skeleton
run: docker build --target rust-toolchain -f docker/cross.Dockerfile .
docs:
name: Documentation Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install mdBook
uses: taiki-e/install-action@v2
with:
tool: mdbook
- name: Build documentation
run: make docs
frontend:
name: Frontend Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install Rust Tools
uses: taiki-e/install-action@v2
with:
tool: trunk,wasm-bindgen-cli,mdbook
- name: Install Stable Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Rust Cache
uses: Swatinem/rust-cache@v2
with:
cache-targets: "true"
- name: Install wasm tools 128
run: |
chmod +x ./bin/install_wasm_tools.sh
WASM_TOOLS_BIN="$(./bin/install_wasm_tools.sh 128)"
echo "${WASM_TOOLS_BIN}" >> "$GITHUB_PATH"
- name: Build frontend with wasm-opt
run: |
chmod +x ./bin/build_docs.sh ./bin/build_fe.sh
./bin/build_fe.sh release
windows:
name: Windows Build
runs-on: windows-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v5
with:
persist-credentials: false
- name: Install Stable Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust Cache
uses: Swatinem/rust-cache@v2
# Non-test code only. `--all-targets` would additionally compile the
# test modules, ~10 of which still use ungated `std::os::unix`
# (alias_repository, xtream_repository, bplustree/v3/publish,
# iptv/stalker/client, api_utils, api/model/download, setup_api).
# Widening this step means gating those first; the recording module
# tree is already `--all-targets`-clean on Windows.
- name: Check Windows build
run: cargo check --package tuliprox
# Job 3: Build and Test (takes longer)
test:
name: Build & Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install Stable Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust Cache
# This magic step saves compiled dependencies between runs
uses: Swatinem/rust-cache@v2
- name: Run Tests
run: make test