35 Commits

Author SHA1 Message Date
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