Compare commits

6 Commits
Author SHA1 Message Date
kislovdm 5fc78934f1 Расширить окно мониторинга: с текущей даты на год вперёд (365 дней)
Create and publish a Docker image / build-and-push-image (push) Failing after 2m50s
2026-09-27 14:08:11 +03:00
kislovdm f88874d8f6 ci: remove redundant docker compose build from deploy
Create and publish a Docker image / build-and-push-image (push) Successful in 3m38s
2026-08-21 10:33:41 +03:00
kislovdm e9cdbbea05 add rixos
Create and publish a Docker image / build-and-push-image (push) Successful in 3m22s
2026-08-21 10:18:49 +03:00
kislovdm 0aeda3abfb Расширить окно поиска дат до 210 дней
Create and publish a Docker image / build-and-push-image (push) Successful in 2m35s
2026-08-14 12:09:55 +03:00
kislovdm 2c8ae733f7 Use docker compose v2 instead of docker-compose in deploy
Create and publish a Docker image / build-and-push-image (push) Successful in 1m47s
2026-08-08 11:01:28 +03:00
kislovdm f218144d84 Switch CI to Gitea: build/push to Gitea registry, deploy via Gitea Actions only
Create and publish a Docker image / build-and-push-image (push) Failing after 42s
2026-08-08 10:54:44 +03:00
4 changed files with 68 additions and 10 deletions
+56
View File
@@ -0,0 +1,56 @@
name: Create and publish a Docker image
on:
push:
branches: [ "master" ]
env:
REGISTRY: gitea.yandex5.ru
IMAGE_NAME: monster/tours_monitor
jobs:
build-and-push-image:
runs-on: ubuntu-latest
if: ${{ github.server_url != 'https://github.com' }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ${{ env.REGISTRY }}
username: ${{ vars.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: .
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}
labels: ${{ steps.meta.outputs.labels }}
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_GITEA_PRIVATE_KEY }}
known_hosts: 'just-a-placeholder-so-we-dont-get-errors'
- name: Adding Known Hosts
run: ssh-keyscan -p ${{ vars.SSH_PORT }} -H ${{ vars.SSH_HOST }} >> ~/.ssh/known_hosts
- name: "Deploy to server"
run: ssh monster@${{ vars.SSH_HOST }} -p ${{ vars.SSH_PORT }} 'cd docker.services/${{ github.event.repository.name }} && git pull && docker login ${{ env.REGISTRY }} -u ${{ vars.REGISTRY_USERNAME }} --password ${{ secrets.REGISTRY_TOKEN }} && docker compose pull && docker compose up -d && docker system prune --force'
- name: Send message to Telegram
uses: Lukasss93/telegram-action@v2
env:
TELEGRAM_TOKEN: ${{ vars.TELEGRAM_TOKEN }}
TELEGRAM_CHAT: 123622180
+5 -5
View File
@@ -2,8 +2,8 @@
Ежедневно проверяет цены на туры из Москвы (2 взрослых + ребёнок 5 лет; количество ночей —
своё для каждого отеля) в отели **Sunrise Tucana Resort** и **Posh Club By Sunrise Tucana Resort**
(Макади Бей, Египет) и **Riu Sri Lanka** (Шри-Ланка) на окно с +30 дней от сегодня на
150 дней вперёд и отправляет в Telegram отчёт с топом дешёвых дат и дельтой цен.
(Макади Бей, Египет) и **Riu Sri Lanka** (Шри-Ланка) на окно с текущей даты на
365 дней (год) вперёд и отправляет в Telegram отчёт с топом дешёвых дат и дельтой цен.
Работает напрямую с публичным веб-API level.travel (подпись запросов и расшифровка
ответов воспроизведены с JS-бандла сайта), без партнёрского токена.
@@ -61,8 +61,8 @@ dotnet run --project src/TourMonitor -- Monitor__RunOnStart=true \
| `Telegram:BotToken`, `Telegram:ChatId` | пусто (отчёт не отправляется) |
| `Monitor:Hotels` | Sunrise Tucana 9099454, Posh Club 9151153, Riu Sri Lanka 9067553 |
| `Monitor:Adults`, `Monitor:KidsAges` | 2, `[5]` |
| `Monitor:DateRangeDays` | 150 |
| `Monitor:StartOffsetDays` | 30 (окно начинается с +30 дней от сегодня) |
| `Monitor:DateRangeDays` | 365 |
| `Monitor:StartOffsetDays` | 0 (окно начинается с сегодняшнего дня) |
| `Monitor:PricesPerMonth` | 3 (сколько дешёвых дат показывать в отчёте для каждого месяца) |
| `Monitor:CalendarUrlBase` | `http://192.168.1.6:8084` (ссылка на календарь цен в отчёте) |
| `Monitor:RunOnStart` | false |
@@ -109,6 +109,6 @@ LT_LIVE_TESTS=1 dotnet test # + живые проверки против a
- `src/TourMonitor/Camoufox/` — установка Camoufox (скачивание из релизов), сессия
браузера и fetch-транспорт через Playwright
- `src/TourMonitor/Storage/PriceStore.cs` — SQLite: история цен, ежедневные минимумы
- `src/TourMonitor/Jobs/DailyScanJob.cs` — сам скан: 150 дат × отели из конфига, параллельно
- `src/TourMonitor/Jobs/DailyScanJob.cs` — сам скан: 365 дат × отели из конфига, параллельно
- `src/TourMonitor/Notifications/` — Telegram и сборка отчёта
- `tests/TourMonitor.Tests/` — юнит- и интеграционные тесты
+3 -2
View File
@@ -1,13 +1,14 @@
services:
tour-monitor:
build: .
image: gitea.yandex5.ru/monster/tours_monitor:master
container_name: tour-monitor
restart: unless-stopped
environment:
TZ: Europe/Moscow
Monitor__RunOnStart: "${RUN_ON_START:-false}"
Monitor__DateRangeDays: "${DATE_RANGE_DAYS:-150}"
Monitor__StartOffsetDays: "${START_OFFSET_DAYS:-30}"
Monitor__DateRangeDays: "${DATE_RANGE_DAYS:-365}"
Monitor__StartOffsetDays: "${START_OFFSET_DAYS:-0}"
Monitor__PricesPerMonth: "${PRICES_PER_MONTH:-3}"
Monitor__CalendarUrlBase: "${CALENDAR_URL_BASE:-http://192.168.1.6:8084}"
Camoufox__Version: "${CAMOUFOX_VERSION:-v152.0.4-beta.28}"
+4 -3
View File
@@ -21,14 +21,15 @@
"Hotels": [
{ "Id": 9099454, "Name": "Sunrise Tucana Resort", "ToCity": "Makadi Bay", "ToCountry": "EG", "Nights": 9 },
{ "Id": 9151153, "Name": "Posh Club By Sunrise Tucana Resort", "ToCity": "Makadi Bay", "ToCountry": "EG", "Nights": 9 },
{ "Id": 9067553, "Name": "Riu Sri Lanka", "ToCity": "Sri Lanka", "ToCountry": "LK", "Nights": 9 }
{ "Id": 9067553, "Name": "Riu Sri Lanka", "ToCity": "Sri Lanka", "ToCountry": "LK", "Nights": 9 },
// { "Id": 9148149, "Name": "Rixos Premium Alamein", "ToCity": "El Alamein", "ToCountry": "EG", "Nights": 9 }
],
"DepartureCity": "Moscow",
"DepartureCountry": "RU",
"Adults": 2,
"KidsAges": [ 5 ],
"DateRangeDays": 150,
"StartOffsetDays": 30,
"DateRangeDays": 365,
"StartOffsetDays": 0,
"PricesPerMonth": 3,
"RunOnStart": false,
"MaxParallelDates": 5,