This repository has been archived on 2026-07-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
OutlookAddin/cdn/nginx.conf
T
chaim 73d6799eb2 feat(ci): CI/CD container delivery for ClickOnce artifacts
Replace direct SSH rsync with build → push to registry → Coolify pull pattern,
matching the rest of the infra (decisions-court, ai-gateway, ...). Adds cdn/
Dockerfile + nginx.conf to serve .vsto/.application/.manifest/.deploy with
correct MIME types behind a StripPrefix Traefik middleware.

The new workflow has three jobs:
- build:               Windows runner, nuget restore + msbuild + dotnet test.
- publish-clickonce:   Windows runner, only on v* tag — sign assemblies +
                       mage manifests + upload publish/ as artifact.
- dockerize-and-deploy: Linux runner — download artifact, build & push
                       outlook-addin-cdn:<version> + :latest to
                       gitea.dev.marcus-law.co.il, then trigger Coolify
                       redeploy of app awdlvjlozz0dvn6kjlme9rd7.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:10:39 +00:00

45 lines
1.5 KiB
Nginx Configuration File

# nginx config for outlook-addin-cdn.
#
# Routing model: Traefik forwards requests to platform.dev.marcus-law.co.il/outlook-addin/*
# and Coolify adds a StripPrefix middleware that strips /outlook-addin. nginx
# therefore sees requests at the root path (e.g. /OutlookAddin.vsto).
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.html;
# ClickOnce MIME types. Without these, .vsto/.application/.manifest/.deploy
# are served as text/plain and the bootstrapper refuses to install.
types {
application/x-ms-application application;
application/x-ms-manifest manifest;
application/octet-stream vsto;
application/octet-stream deploy;
}
# ClickOnce checks for updates on every Outlook start; never serve stale
# manifests from caches.
add_header Cache-Control "no-cache, no-store, must-revalidate" always;
add_header Pragma "no-cache" always;
add_header Expires "0" always;
# Health endpoint for Coolify/Docker healthcheck (path is checked before
# StripPrefix since the healthcheck runs inside the container on port 80).
location = /health {
access_log off;
return 200 "ok";
add_header Content-Type text/plain;
}
# Never list directories -- that would expose the internal Application Files
# layout to anyone browsing.
autoindex off;
location / {
try_files $uri $uri/ =404;
}
}