Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5fc78934f1 | ||
|
|
f88874d8f6 | ||
|
|
e9cdbbea05 | ||
|
|
0aeda3abfb | ||
|
|
2c8ae733f7 | ||
|
|
f218144d84 |
@@ -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
|
||||
@@ -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
@@ -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}"
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user