env per instance
This commit is contained in:
parent
a0d5a1ef6a
commit
2a7e6937e5
5 changed files with 100 additions and 43 deletions
43
.env.sample
43
.env.sample
|
|
@ -1,43 +0,0 @@
|
||||||
# Service Configuration
|
|
||||||
PORT=4100
|
|
||||||
NODE_ENV=development
|
|
||||||
|
|
||||||
# Gateway WebSocket Connection
|
|
||||||
GATEWAY_WS_URL=wss://gateway-int.poweron-center.net/api/teamsbot/ws
|
|
||||||
|
|
||||||
# Bot Configuration
|
|
||||||
BOT_NAME=PowerOn AI
|
|
||||||
BOT_HEADLESS=true
|
|
||||||
|
|
||||||
# Static avatar tile (replaces Teams' green/spinning "no video" placeholder
|
|
||||||
# with a quiet, single-color surface + the bot's display name in the
|
|
||||||
# center). Recommended for the anonymous bot. Colors are CSS values.
|
|
||||||
# BOT_USE_CANVAS_VIDEO=true
|
|
||||||
# BOT_AVATAR_BG_COLOR=#a8d4f0
|
|
||||||
# BOT_AVATAR_TEXT_COLOR=#1a3552
|
|
||||||
|
|
||||||
# DEBUG ONLY - leave commented in normal operation.
|
|
||||||
# Set to true to skip BOTH media wrappers (RTCPeerConnection wrapper +
|
|
||||||
# getUserMedia override) for isolating Teams' anonymous lobby preheating
|
|
||||||
# crash (rejectMediaDescriptionsUpdateAsync). With this on the bot has
|
|
||||||
# no audio in/out, no captions, no greeting - it sits silently.
|
|
||||||
# BOT_DISABLE_MEDIA_WRAPPERS=true
|
|
||||||
|
|
||||||
# DEBUG ONLY - bisect the Teams anonymous preheated-PC crash by running
|
|
||||||
# anon with the auth Chromium args (minimal flags) AND no stealth init.
|
|
||||||
# BOT_ANON_USE_AUTH_BROWSER_SETUP=true
|
|
||||||
|
|
||||||
# Playwright browser channel. Empty = bundled Chromium (default).
|
|
||||||
# Set to 'chrome' or 'msedge' to use the locally installed real browser.
|
|
||||||
# Strongly recommended for anonymous Teams joins: Playwright's bundled
|
|
||||||
# Chromium gets detected as automation and forced into a lobby + the
|
|
||||||
# buggy preheated-PC code path; real Chrome bypasses both.
|
|
||||||
# BOT_BROWSER_CHANNEL=chrome
|
|
||||||
|
|
||||||
# Logging
|
|
||||||
LOG_LEVEL=info
|
|
||||||
LOG_DIR=./output/logs
|
|
||||||
|
|
||||||
# Screenshots (for debugging)
|
|
||||||
SCREENSHOT_DIR=./output/screenshots
|
|
||||||
SCREENSHOT_ON_ERROR=true
|
|
||||||
21
.github/workflows/build-deploy.yml
vendored
21
.github/workflows/build-deploy.yml
vendored
|
|
@ -4,8 +4,14 @@ on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
- dev
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# Cancel in-progress runs when a new run is triggered (saves logs/storage)
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
IMAGE_NAME: teams-browser-bot
|
IMAGE_NAME: teams-browser-bot
|
||||||
RESOURCE_GROUP: resource-core
|
RESOURCE_GROUP: resource-core
|
||||||
|
|
@ -19,6 +25,20 @@ jobs:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
|
- name: Determine environment
|
||||||
|
id: env
|
||||||
|
run: |
|
||||||
|
if [ "${{ github.ref }}" == "refs/heads/dev" ]; then
|
||||||
|
echo "env_file=env-teamsbot-dev.env" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "env_file=env-teamsbot-main.env" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Set environment
|
||||||
|
run: |
|
||||||
|
cp ${{ steps.env.outputs.env_file }} .env
|
||||||
|
rm -f env-teamsbot-*.env
|
||||||
|
|
||||||
- name: Log in to Azure Container Registry
|
- name: Log in to Azure Container Registry
|
||||||
uses: docker/login-action@v4
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
|
|
@ -109,3 +129,4 @@ jobs:
|
||||||
echo "### Deployed successfully! :rocket:" >> $GITHUB_STEP_SUMMARY
|
echo "### Deployed successfully! :rocket:" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "Image: \`${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
|
echo "Image: \`${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "Env: \`${{ steps.env.outputs.env_file }}\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ RUN apt-get update && apt-get install -y xvfb && rm -rf /var/lib/apt/lists/*
|
||||||
COPY --from=builder /app/dist ./dist
|
COPY --from=builder /app/dist ./dist
|
||||||
COPY --from=builder /app/node_modules ./node_modules
|
COPY --from=builder /app/node_modules ./node_modules
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
|
COPY .env ./
|
||||||
|
|
||||||
# Real Google Chrome (stable channel) + its OS deps. Required for anonymous
|
# Real Google Chrome (stable channel) + its OS deps. Required for anonymous
|
||||||
# Teams joins: the bundled Playwright Chromium gets detected as automation
|
# Teams joins: the bundled Playwright Chromium gets detected as automation
|
||||||
|
|
|
||||||
39
env-teamsbot-dev.env
Normal file
39
env-teamsbot-dev.env
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Service Configuration
|
||||||
|
PORT=4100
|
||||||
|
NODE_ENV=development
|
||||||
|
|
||||||
|
# Gateway WebSocket Connection
|
||||||
|
GATEWAY_WS_URL=wss://gateway-int.poweron-center.net/api/teamsbot/ws
|
||||||
|
|
||||||
|
# Bot Configuration
|
||||||
|
BOT_NAME=PowerOn AI
|
||||||
|
BOT_HEADLESS=true
|
||||||
|
|
||||||
|
# Static avatar tile (replaces Teams' green/spinning "no video" placeholder).
|
||||||
|
# Colors only used when BOT_USE_CANVAS_VIDEO=true.
|
||||||
|
BOT_USE_CANVAS_VIDEO=true
|
||||||
|
BOT_AVATAR_BG_COLOR=#a8d4f0
|
||||||
|
BOT_AVATAR_TEXT_COLOR=#1a3552
|
||||||
|
|
||||||
|
# DEBUG history (12 May 2026):
|
||||||
|
# - BOT_DISABLE_MEDIA_WRAPPERS=true: same crash, wrappers innocent
|
||||||
|
# - BOT_ANON_USE_AUTH_BROWSER_SETUP=true: same crash, args/stealth innocent
|
||||||
|
# Manual anon test in real Chrome incognito: NO lobby, joins fine.
|
||||||
|
# => Teams detects Playwright's bundled Chromium as automation, FORCES the
|
||||||
|
# bot into a lobby + the buggy preheated-PC code path that crashes
|
||||||
|
# (rejectMediaDescriptionsUpdateAsync). Real Chrome avoids both.
|
||||||
|
BOT_DISABLE_MEDIA_WRAPPERS=false
|
||||||
|
BOT_ANON_USE_AUTH_BROWSER_SETUP=false
|
||||||
|
|
||||||
|
# Use the locally installed Chrome instead of Playwright's bundled
|
||||||
|
# Chromium. Empty = bundled Chromium (default).
|
||||||
|
# Try: chrome | msedge
|
||||||
|
BOT_BROWSER_CHANNEL=chrome
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
LOG_LEVEL=info
|
||||||
|
LOG_DIR=./output/logs
|
||||||
|
|
||||||
|
# Screenshots (for debugging)
|
||||||
|
SCREENSHOT_DIR=./output/screenshots
|
||||||
|
SCREENSHOT_ON_ERROR=true
|
||||||
39
env-teamsbot-main.env
Normal file
39
env-teamsbot-main.env
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Service Configuration
|
||||||
|
PORT=4100
|
||||||
|
NODE_ENV=development
|
||||||
|
|
||||||
|
# Gateway WebSocket Connection
|
||||||
|
GATEWAY_WS_URL=wss://gateway-int.poweron-center.net/api/teamsbot/ws
|
||||||
|
|
||||||
|
# Bot Configuration
|
||||||
|
BOT_NAME=PowerOn AI
|
||||||
|
BOT_HEADLESS=true
|
||||||
|
|
||||||
|
# Static avatar tile (replaces Teams' green/spinning "no video" placeholder).
|
||||||
|
# Colors only used when BOT_USE_CANVAS_VIDEO=true.
|
||||||
|
BOT_USE_CANVAS_VIDEO=true
|
||||||
|
BOT_AVATAR_BG_COLOR=#a8d4f0
|
||||||
|
BOT_AVATAR_TEXT_COLOR=#1a3552
|
||||||
|
|
||||||
|
# DEBUG history (12 May 2026):
|
||||||
|
# - BOT_DISABLE_MEDIA_WRAPPERS=true: same crash, wrappers innocent
|
||||||
|
# - BOT_ANON_USE_AUTH_BROWSER_SETUP=true: same crash, args/stealth innocent
|
||||||
|
# Manual anon test in real Chrome incognito: NO lobby, joins fine.
|
||||||
|
# => Teams detects Playwright's bundled Chromium as automation, FORCES the
|
||||||
|
# bot into a lobby + the buggy preheated-PC code path that crashes
|
||||||
|
# (rejectMediaDescriptionsUpdateAsync). Real Chrome avoids both.
|
||||||
|
BOT_DISABLE_MEDIA_WRAPPERS=false
|
||||||
|
BOT_ANON_USE_AUTH_BROWSER_SETUP=false
|
||||||
|
|
||||||
|
# Use the locally installed Chrome instead of Playwright's bundled
|
||||||
|
# Chromium. Empty = bundled Chromium (default).
|
||||||
|
# Try: chrome | msedge
|
||||||
|
BOT_BROWSER_CHANNEL=chrome
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
LOG_LEVEL=info
|
||||||
|
LOG_DIR=./output/logs
|
||||||
|
|
||||||
|
# Screenshots (for debugging)
|
||||||
|
SCREENSHOT_DIR=./output/screenshots
|
||||||
|
SCREENSHOT_ON_ERROR=true
|
||||||
Loading…
Reference in a new issue