Skip to content

Merge pull request #192 from Pokled/feat/chat-composer-emoji-button #998

Merge pull request #192 from Pokled/feat/chat-composer-emoji-button

Merge pull request #192 from Pokled/feat/chat-composer-emoji-button #998

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
# Annule le run précédent sur la même branche si un nouveau push arrive
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
# Le job CI ne fait que lire les sources et exécuter les tests. Aucun besoin
# d'écrire au repo ou de toucher aux secrets autres que le GITHUB_TOKEN par
# défaut. Permission minimale pour réduire la surface en cas d'injection
# (scénario Megalodon : payload base64 dans yaml qui exfiltre le GITHUB_TOKEN).
permissions:
contents: read
jobs:
# ── 1. nodyx-core — TypeScript + Vitest ────────────────────────────────────
test-node:
name: "nodyx-core — typecheck + tests"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js 22
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: '22'
cache: 'npm'
cache-dependency-path: nodyx-core/package-lock.json
- name: Install dependencies
working-directory: nodyx-core
run: npm ci
- name: TypeScript — typecheck
working-directory: nodyx-core
run: npx tsc --noEmit
- name: Vitest — 181 tests attendus
working-directory: nodyx-core
# Valeur factice, requise par le bootstrap backend qui refuse de
# démarrer sans JWT_SECRET >= 32 chars. La prod utilise son propre
# secret dans son .env, jamais dans le repo. Cette chaîne n'a
# aucun privilège : container CI éphémère, aucune DB derrière,
# aucun JWT forgé avec ça ne sera valide ailleurs que dans le
# runner GitHub jetable.
env:
JWT_SECRET: CI_PLACEHOLDER_NOT_A_REAL_SECRET_safe_to_be_public
NODE_ENV: test
run: npm test
# ── 2. nodyx-frontend — Svelte typecheck + build ───────────────────────────
check-frontend:
name: "nodyx-frontend — typecheck + build"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js 22
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: '22'
cache: 'npm'
cache-dependency-path: nodyx-frontend/package-lock.json
- name: Install dependencies
working-directory: nodyx-frontend
run: npm ci
- name: Svelte — typecheck (svelte-check)
working-directory: nodyx-frontend
env:
PUBLIC_API_URL: http://localhost:3000/api/v1
PUBLIC_DIRECTORY_URL: https://nodyx.org
PUBLIC_SIGNET_URL: ''
PUBLIC_TURN_URL: ''
PUBLIC_TURN_USERNAME: ''
PUBLIC_TURN_CREDENTIAL: ''
PUBLIC_GIPHY_KEY: ''
PUBLIC_TENOR_KEY: ''
PRIVATE_API_SSR_URL: 'http://localhost:3000'
run: npm run check
- name: SvelteKit — build production
working-directory: nodyx-frontend
env:
PUBLIC_API_URL: http://localhost:3000/api/v1
PUBLIC_DIRECTORY_URL: https://nodyx.org
PUBLIC_SIGNET_URL: ''
PUBLIC_TURN_URL: ''
PUBLIC_TURN_USERNAME: ''
PUBLIC_TURN_CREDENTIAL: ''
PUBLIC_GIPHY_KEY: ''
PUBLIC_TENOR_KEY: ''
PRIVATE_API_SSR_URL: 'http://localhost:3000'
run: npm run build
# ── 3. nodyx-p2p — Rust build + tests ─────────────────────────────────────
test-rust:
name: "nodyx-p2p — cargo build + tests"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Rust toolchain (stable, depuis rust-toolchain.toml)
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable @ 2026-XX
- name: Cache Rust (registry + target)
uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: nodyx-p2p
- name: cargo build -p nodyx-server
working-directory: nodyx-p2p
run: cargo build -p nodyx-server
- name: cargo test -p nodyx-server — 18 tests attendus
working-directory: nodyx-p2p
run: cargo test -p nodyx-server