π₯οΈ tuna-cli 0.36 β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π° ΡΠ΅Π»ΠΈΠ·Π° ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ tuna-cli ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ ΡΠΈΠ»ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π·Π° Π²Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Π³ΠΎΠ΄. ΠΠ»Π°Π²Π½ΠΎΠ΅ β Ρ ΡΡΠ½Π½Π΅Π»Π΅ΠΉ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅: Π²ΠΌΠ΅ΡΡΠΎ Π±Π΅Π³ΡΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π»Π΅Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΡΠ΅ΡΡΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΈ SSH ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, Π½Π΅ Π²ΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
ΠΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ Π΄ΠΎ 0.36.1 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π° ΡΠ°ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ β ΠΎΠ± ΡΡΠΎΠΌ Π½ΠΈΠΆΠ΅.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅β
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ tuna http, tuna tcp, tuna ssh, tuna postgres, tuna redis ΠΈΠ»ΠΈ tuna kubernetes Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. Π ΡΠ°ΠΏΠΊΠ΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΈΠ΄Π½Ρ Π°ΠΊΠΊΠ°ΡΠ½Ρ, Π°Π΄ΡΠ΅Ρ ΡΡΠ½Π½Π΅Π»Ρ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ, ΠΊΡΠ΄Π° ΠΎΠ½ Π²Π΅Π΄ΡΡ, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΎΡ ΠΈ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠ½Π½Π΅Π»Ρ Π·Π°ΠΏΡΡΠ΅Π½ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ, Π² ΡΠ°ΠΏΠΊΠ΅ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠΎΠΊΠΈ Access ΠΈ Options β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, basic auth (1) Β· cidr deny 203.0.113.0/24 ΠΈ rate limit 20/s Β· cors, ΡΠ°ΠΊ ΡΡΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΡΡΠ½Π½Π΅Π»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ. ΠΠ°ΡΠΎΠ»ΠΈ ΠΈ ΠΊΠ»ΡΡΠΈ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠΊΡΠ°Π½Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° ΡΡΠ½Π½Π΅Π»Ρ.
HTTP: Π»Π΅Π½ΡΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈβ
ΠΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠ²Π΅ΡΡ
Ρ, Π½Π°Π΄ Π»Π΅Π½ΡΠΎΠΉ β ΡΡΡΡΡΠΈΠΊΠΈ: Π²ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², rpm, p50 ΠΈ p90 Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠ²Π΅ΡΠ°, ΡΠΈΡΠ»ΠΎ ΠΎΡΠ²Π΅ΡΠΎΠ² 4xx ΠΈ 5xx. ΠΠΎ Enter ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ Π·Π°ΠΏΡΠΎΡΠ° Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ JSON-ΡΠ΅Π»ΠΎΠΌ, r ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ, Π° / ΡΠΈΠ»ΡΡΡΡΠ΅Ρ Π»Π΅Π½ΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΡΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΡΡ. ΠΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ Π²Π΅Π±Ρ
ΡΠΊ ΠΈΠ»ΠΈ API ΡΡΠ°Π»ΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅: Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΈΡΠ»ΠΎ.
Postgres ΠΈ Redis: ΡΠ΅ΡΡΠΈΠΈ ΠΈ Π·Π°ΠΏΡΠΎΡΡβ
Π‘Π»Π΅Π²Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΡΠΈΠΉ, ΡΠΏΡΠ°Π²Π° β ΡΠΎΠ±ΡΡΠΈΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ: Π·Π°ΠΏΡΠΎΡΡ Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΎΠΉ, ΡΠΈΡΠ»ΠΎ ΡΡΡΠΎΠΊ Π² ΠΎΡΠ²Π΅ΡΠ΅, ΠΎΡΠΈΠ±ΠΊΠΈ. y ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°. ΠΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΠ»ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ ΠΊ Π±Π°Π·Π΅ ΡΠ΅ΡΠ΅Π· ΡΡΠ½Π½Π΅Π»Ρ.
SSH: ΠΆΠΈΠ²ΠΎΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠ΅ΡΡΠΈΠΉβ
ΠΠ»Ρ tuna ssh ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π»Π΅Π½ΡΡ ΡΠ΅ΡΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΡΠΊΠ°Π·Ρ Π² Π΄ΠΎΡΡΡΠΏΠ΅. Enter Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π΅Ρ ΠΏΡΠΎΡΠΌΠΎΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π° Π·Π°Π²Π΅ΡΡΡΠ½Π½ΠΎΠΉ β Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠΎΡΡΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈβ
| ΠΠ»Π°Π²ΠΈΡΠ° | ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ |
|---|---|
c | Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΡΡΠ½Π½Π΅Π»Ρ |
i | ΠΡΠΊΡΡΡΡ ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΎΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ |
Q | ΠΠΎΠΊΠ°Π·Π°ΡΡ QR-ΠΊΠΎΠ΄ Π°Π΄ΡΠ΅ΡΠ° β ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΡ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ |
l | ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΈΠ»ΠΈ ΡΠΊΡΡΡΡ Π»ΠΎΠ³ |
β β, g / G | ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ Π»Π΅Π½ΡΠ΅ |
Ctrl+C | ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ½Π½Π΅Π»Ρ ΠΈ Π²ΡΠΉΡΠΈ |
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΡΠ½Π½Π΅Π»Ρ β Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½ ΡΡΠ°ΡΡΠΉ Π΄ΠΎΠ±ΡΡΠΉ Π»ΠΎΠ³β
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ: ΠΎΠ½ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΉΠΏ, ΡΡΠ½Π½Π΅Π»Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡ, Π·Π°Π΄Π°Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ CI ΠΈΠ»ΠΈ NONINTERACTIVE, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° tuna Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΠ-Π°Π³Π΅Π½Ρ β Claude Code, Cursor ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ΅ΡΠ½ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π»ΠΎΠ³ Π²ΡΡΡΠ½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π°Π³ΠΎΠΌ --log=stdout ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ TUNA_TUI=0:
tuna http 8080 --log=stdout
Π’ΡΠ½Π½Π΅Π»ΠΈβ
Unix-ΡΠΎΠΊΠ΅ΡΡβ
tuna http ΠΈ tuna tcp ΡΠΌΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ»ΡΡΠ°Π΅Ρ Π½Π΅ ΠΏΠΎΡΡ, Π° unix-ΡΠΎΠΊΠ΅Ρ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, gunicorn ΠΈΠ»ΠΈ php-fpm Π·Π° ΠΏΡΠΎΠΊΡΠΈ:
tuna http unix:///run/gunicorn.sock
ΠΠ½ΡΠΏΠ΅ΠΊΡΠΎΡ, ΠΏΠΎΠ²ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΡΡΠΎΠΌ. Π§Π΅ΡΠ΅Π· TCP-ΡΡΠ½Π½Π΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΡΡΡΡ Docker API β ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΡΠ²ΠΎΠΈΠΌ IP ΡΠ΅ΡΠ΅Π· --cidr-allow: Π΄ΠΎΡΡΡΠΏ ΠΊ docker.sock ΡΠ°Π²Π½ΠΎΡΠΈΠ»Π΅Π½ root-Π΄ΠΎΡΡΡΠΏΡ ΠΊ Ρ
ΠΎΡΡΡ.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΡΠ°ΡΠΈΠΊΠ° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠΎΠ²β
ΠΠΎΠ»ΠΈΡΠΈΠΊΡ ΡΡΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ tuna http ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΠΎ https-ΡΡΡΠ»ΠΊΠ΅ β ΠΎΠ΄Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π½Π° Π²ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
tuna http 8080 --policy-url=https://gitlab.com/example/policies/-/raw/main/policy.yml
ΠΠΎΠ²ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ compress_response ΡΠΆΠΈΠΌΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² br, zstd, gzip ΠΈΠ»ΠΈ deflate, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΌΠΎ. ΠΡΠ²Π΅Ρ ΡΠΆΠΈΠΌΠ°Π΅ΡΡΡ Π½Π° Π»Π΅ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ SSE ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΡΠ°Π»Π° ΡΡΡΠΎΠΆΠ΅: Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΈΠ· --policy-file Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π΅ ΠΏΠ°ΡΡΠΈΡΡΡ ΠΈΠ»ΠΈ Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π½Π΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Team, ΡΡΠ½Π½Π΅Π»Ρ Π½Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡΡ β ΡΠ°Π½ΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΠ» ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ β Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
Trigger ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡβ
tuna trigger ΡΠ°Π½ΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ Π²Π΅Π±Ρ
ΡΠΊ ΠΈΠ»ΠΈ ΠΏΠΈΡΡΠΌΠΎ. Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅: ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΠΈΡΡΠΌΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ Π½Π° stdin, Π° ΠΌΠ΅ΡΠΎΠ΄, ΠΏΡΡΡ, query ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ β Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ TUNA_REQUEST_* ΠΈ TUNA_MAIL_*. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ push Π² main:
#!/bin/sh
set -e
[ "$TUNA_REQUEST_HEADER_X_GITLAB_EVENT" = "Push Hook" ] || exit 0
jq -e '.ref == "refs/heads/main"' > /dev/null || exit 0
/opt/app/deploy.sh
SMTP-ΡΡΠΈΠ³Π³Π΅Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠ½ΡΡΠΎΠ΅ ΠΏΠΈΡΡΠΌΠΎ, Π° Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ SMTP-ΡΠ΅ΡΠ²Π΅ΡΠ° Π·Π°Π΄Π°ΡΡΡΡ ΡΠ»Π°Π³ΠΎΠΌ --listen-address.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π²Π΅Π±Ρ ΡΠΊΠΎΠ² GitHub ΠΈ Sentryβ
--verify-webhook=github ΠΈ --verify-webhook=sentry ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ HMAC-SHA256 ΠΎΡ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ° ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ². Π Π°Π½ΡΡΠ΅ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΎΡ GitHub ΠΈ Sentry ΠΏΠΎΠ»ΡΡΠ°Π»ΠΈ 401 β Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Π‘Π΅ΠΊΡΠ΅ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈβ
Π tuna-cli 0.35 ΡΠΈΠ»ΡΠ½ΠΎ Π²ΡΡΠΎΡ CLI ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ²: ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ°ΠΌΠΈ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠ΅ΠΊΡΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠΌ Π±Π΅Π· Π·Π°ΠΏΠΈΡΠΈ Π½Π° Π΄ΠΈΡΠΊ, ΠΎΡΠ»Π°ΠΉΠ½-ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ± ΡΡΠΎΠΌ β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ.
ΠΠ΅Π»ΠΎΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠΎΠ½ΠΎΠΌΡΡ Π²ΡΠ΅ΠΌΡβ
- ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΠΏΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° Π²ΡΡ
ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π³ΠΎΡΠΎΠ²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ: brew, winget, apt, dnf, zypper, ΡΠΊΡΠΈΠΏΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Docker.
tuna versionΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. - ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΡΠΏΡΠ°Π²ΠΊΠΈ. Π
--helpΠ²ΡΠ΄Π΅Π»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ»Π°Π³ΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ. - ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΏΠΎΡΡΠΎΠ², ΡΡΠ½Π½Π΅Π»Π΅ΠΉ, API-ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ. ΠΡΠΎΠΏΡΡΡΠΈΡΡ Π²ΠΎΠΏΡΠΎΡ β ΡΠ»Π°Π³
--yes. tuna whoamiΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠΌ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠΌ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ.
Π§ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈβ
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ
ΡΡΠ΅Π±ΡΠ΅Ρ
--yes. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρtuna domain clearΠΈΠ»ΠΈtuna secrets delete, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π±Π΅Π· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° β Π² CI ΠΈΠ»ΠΈ cron, β Π±Π΅Π· ΡΠ»Π°Π³Π°--yesΠΎΠ½Π° ΡΡΠ°Π·Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. - API-ΠΊΠ»ΡΡΠΈ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅. ΠΠΎΠΌΠ°Π½Π΄Ρ
tuna api-key createΠΈtuna session terminateΡΠ΄Π°Π»Π΅Π½Ρ: ΡΠ΅ΡΠ²Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΡΡΠΊΠ°ΡΡ ΠΊΠ»ΡΡΠΈ ΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡ Π²Π΅Π±-ΡΠ΅ΡΡΠΈΠΈ ΠΏΠΎ API-ΠΊΠ»ΡΡΡ. ΠΠ»ΡΡΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅. - ΠΠΎΠ²ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ Linux ΠΏΠ΅ΡΠ΅Π΅Ρ
Π°Π»ΠΈ Π² ΡΠ΅Π΅ΡΡΡ
code.tuna.am, Π° ΠΏΠ°ΠΊΠ΅Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡtuna-cli. ΠΠ° Debian ΠΈ Ubuntu ΠΎΠ±ΡΡΠ½ΡΠΉapt upgradeΡΠ°ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π½Π° RHEL, Fedora ΠΈ openSUSE ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΡΠΌΠ΅Π½ΠΈΡΡ Π²ΡΡΡΠ½ΡΡ β ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΅ΡΡΡ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. - Π‘ΡΠΎΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΠΉ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π±Π΅Π· ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ 0.32.x ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ 1 ΠΎΠΊΡΡΠ±ΡΡ 2026 Π³ΠΎΠ΄Π°, 0.33.x β 1 Π½ΠΎΡΠ±ΡΡ, 0.34.x β 1 Π΄Π΅ΠΊΠ°Π±ΡΡ, 0.35.x β 1 ΡΠ½Π²Π°ΡΡ 2027 Π³ΠΎΠ΄Π°. ΠΠΎΠ»Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° β Π² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ Π²Π΅ΡΡΠΈΡΠΌ β Π² ΠΆΡΡΠ½Π°Π»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΡΡΠ°Π²ΡΡΠ΅ ΠΎΡΠ·ΡΠ²β
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Tuna, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ Π²Ρ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΠ½Ρ ΡΠ΅ΠΌ Π»ΠΈΠ±ΠΎ, ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΎΡΠ·ΡΠ².
ΠΠΎΠΌΠΎΡΡβ
ΠΡ ΡΠ΅Π½ΠΈΠΌ Π½Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ tuna β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΡΠΆΠΈΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²: