Commit Graph

37 Commits

Author SHA1 Message Date
claude 449e4d2df3 ci: the deploy health check must follow redirects
Build and Push Docker Images / build (push) Successful in 13s
Build and Push Docker Images / smoke (push) Successful in 15s
jecreativ.ro's first production deploy went red for behaving exactly as
configured: it runs in UnderConstruction mode, so `/` correctly answers 302
to the placeholder, and the check asserted a bare 200.

Now `-L` follows the redirect and the FINAL code is asserted. A redirect
means the app is up and routing, which is what this step is for; a real
failure (502, 500, refused) still reports.

The version gate itself was right throughout -- it read 1bafc14 from the
production host, including through the under-construction middleware.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpTYCBLH58XzrM7n3xPJ5N
2026-08-24 10:34:16 +00:00
claude dee6c5a205 ci: make the branch strategy enforced instead of merely intended
Build and Push Docker Images / build (push) Successful in 20s
Build and Push Docker Images / smoke (push) Successful in 30s
Same guard as the four site repos. myAi was the ONLY stack that kept its
environment variables through the 26 July migration, so it alone deployed
correctly all along -- but it shares the ${IMAGE_TAG:-staging} default that
made the others fail silently, so it gets the same treatment.

1. ${IMAGE_TAG:-staging} -> ${IMAGE_TAG:-IMAGE_TAG-NOT-SET} on all eight
   images: an unconfigured stack fails the pull rather than quietly becoming
   staging.

2. A smoke job that asks the deploy host what commit it serves, via a
   /version.json stamped into the web image at build time.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpTYCBLH58XzrM7n3xPJ5N
2026-08-24 10:21:18 +00:00
claude 10bac5eb91 ci: clone via docker-git.easysoft.ro:3000 (LAN DNS; drop git.easysoft.ro:3000 dependency)
Build and Push Docker Images / build (push) Successful in 18s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 09:51:31 +03:00
claude 62654978af ci: re-enable BuildKit (runner now has buildx plugin)
Build and Push Docker Images / build (push) Successful in 43m53s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 18:09:35 +03:00
claude 7da084c174 ci: revert DOCKER_BUILDKIT (runner job env has no buildx plugin -> build failed)
Keep the cache win (no base-image nuke); back to the legacy builder which the job
context supports. BuildKit needs buildx installed in the runner before it can be used.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 18:02:29 +03:00
claude 27f4cfe21e ci: enable BuildKit + let its GC manage the layer cache
DOCKER_BUILDKIT=1 (explicit) so the restore layer is cached across builds; drop the
explicit 'docker builder prune' (it was wiping that cache) and rely on BuildKit's own
GC + 86GB headroom. Cleanup keeps dangling-image removal only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 17:58:00 +03:00
claude 903fbcd143 ci: preserve Docker build cache (faster runner)
Stop wiping the layer cache + base images after every build (the host has 86GB free).
Keep base images (prune dangling only) and ~2 weeks of build cache, so the cache-friendly
Dockerfiles (COPY *.csproj + restore before source) actually benefit -> warm rebuilds skip
restore and base-image pulls.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 17:36:59 +03:00
claude c5e1b7f687 ci: branch-driven deploys (staging/production branches), build the pushed commit
main = day-to-day work (no deploy). Merge into staging -> :staging, into
production -> :production; IMAGE_TAG = branch name. Also fixes the checkout to
build the PUSHED commit (git checkout $GITHUB_SHA) instead of always cloning
the default branch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 16:29:07 +03:00
claude 492859f17f ci: prune images + build cache after build (prevent runner disk exhaustion)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 22:51:31 +03:00
claude 898dd09d50 feat: add page-fetcher-api — centralised Playwright page fetcher
Introduces page-fetcher-api, a new internal ASP.NET Core service that
centralises all web-page fetching through a single Playwright (headless
Chromium) browser instance. All fetches are persisted to the pageFetcher
SQL schema for auditing.

New projects:
- Apis/page-fetcher-api-models: FetchPageRequest, FetchPageResponse, IPageFetcherApiClient
- Apis/page-fetcher-data: PageFetchDbContext, PageFetchEntity, InitialSchema migration (schema: pageFetcher)
- Apis/page-fetcher-api: PlaywrightBrowserService (singleton), PageFetcherService, PageController

Changes to existing services:
- cv-matcher-api: JobTextExtractor now calls IPageFetcherApiClient instead of HttpClient
- cv-search-job: HtmlJobSearcher uses IPageFetcherApiClient (removes inline Playwright);
  CvSearchJobTask fetches individual job pages and applies keyword pre-filter before
  LLM call; passes pre-fetched JobDescription to cv-matcher-api to skip re-fetch
- common: add PageFetcherApiSettings
- docker-compose.yml, build.yml: add new service + env vars for callers

Closes #43

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 17:43:56 +03:00
claude 39708cf340 Add email-api to Gitea build workflow
The email-api service was missing from the CI/CD build pipeline. Added:
- EMAIL_API_IMAGE environment variable
- Build step for email-api Dockerfile
- Push step for email-api image to registry

This ensures email-api images are built and pushed alongside other services
during the staging build workflow.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 14:59:12 +03:00
claude 6deb8dd4c8 Move version display to GET /api/health/version in HealthController
Uses GetApplicationVersion(Assembly.GetExecutingAssembly()) — the same
timestamp-based version already logged at startup and baked into the
assembly via the csproj <Version> property. Removes the minimal-API
/version endpoint from web/Program.cs and reverts the web Dockerfile
APP_VERSION build-arg (no longer needed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:25:07 +03:00
claude 0154b56881 Add auto-incrementing version display to web UI footer
Exposes GET /version endpoint in the web container (reads APP_VERSION env var).
CI computes the version as 1.0.<git-commit-count> and passes it via --build-arg at build time.
Both index.html and cv-matcher/index.html show the version in the footer via a JS fetch.
docker-compose passes APP_VERSION through to the running container.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:18:31 +03:00
gelu 6f8923e8f6 Add cv-search-job to staging build pipeline
Build and Push Docker Images Staging / build (push) Successful in 10s
2026-05-22 16:08:57 +00:00
claude 95d05d8fc8 Staging build
Build and Push Docker Images Staging / build (push) Successful in 9s
2026-05-20 21:15:18 +03:00
claude 6e54b20a02 Staging build 2026-05-20 21:11:25 +03:00
claude fb5b254570 Staging build
Build and Push Docker Images / build (push) Successful in 8s
2026-05-14 16:15:32 +03:00
claude feefa0902b Prod build
Build and Push Docker Images / build (push) Successful in 8s
2026-05-14 16:15:18 +03:00
claude cec5130c2d Staging build
Build and Push Docker Images / build (push) Successful in 7s
2026-05-14 15:38:00 +03:00
claude 8ed8d04067 Production build
Build and Push Docker Images / build (push) Successful in 8s
2026-05-14 15:37:37 +03:00
claude 3b4f5a44b6 Refactor job configuration to rename and update CV cleanup job across Docker Compose files and build workflows
Build and Push Docker Images / build (push) Successful in 7s
2026-05-14 14:29:38 +03:00
claude 92278ae375 Update Dockerfile paths and project references to reflect new directory structure under 'Apis' and 'Jobs' 2026-05-14 13:56:45 +03:00
claude d4805b06e6 Changes 2026-05-13 09:38:52 +03:00
claude 24962fba03 Staging build
Build and Push Docker Images / build (push) Successful in 6s
2026-05-12 11:23:24 +03:00
claude a37c994050 Production build
Build and Push Docker Images / build (push) Successful in 6s
2026-05-12 11:23:00 +03:00
claude bcf6e2aa2d Staging build
Build and Push Docker Images / build (push) Successful in 4s
2026-05-11 13:18:36 +03:00
claude 90b76f7fe8 Prod build
Build and Push Docker Images / build (push) Successful in 4s
2026-05-11 13:18:15 +03:00
claude 28ba10fee7 Changes
Build and Push Docker Images / build (push) Failing after 3m39s
2026-05-08 14:42:31 +03:00
claude 34625ae242 Staging
Build and Push Docker Images / build (push) Successful in 1s
2026-05-04 18:57:28 +03:00
claude e3e4b06d11 Prod
Build and Push Docker Images / build (push) Successful in 2s
2026-05-04 18:56:55 +03:00
claude 29da9f5def Staging
Build and Push Docker Images / build (push) Successful in 2s
2026-05-04 16:49:58 +03:00
claude 70f0a3fe86 Production build
Build and Push Docker Images / build (push) Successful in 2s
2026-05-04 16:49:44 +03:00
claude 540720e771 Staging
Build and Push Docker Images / build (push) Successful in 1s
2026-05-04 14:35:34 +03:00
claude c2b02599ac Production build
Build and Push Docker Images / build (push) Successful in 2s
2026-05-04 14:35:16 +03:00
claude 2676836d3f Staging build
Build and Push Docker Images / build (push) Successful in 2s
2026-05-02 21:34:25 +03:00
claude 4945f3fd47 Production build
Build and Push Docker Images / build (push) Successful in 2s
2026-05-02 21:34:05 +03:00
claude fc2dd721e4 Initial commit
Build and Push Docker Images / build (push) Successful in 29s
2026-05-02 21:31:31 +03:00