Help:CLI: Difference between revisions

From Svacer Wiki
(add User_Management_(command_line))
(add svacer-server startup with config file example)
Line 287: Line 287:


== Svacer server features ==
== Svacer server features ==
=== Запуск с ΠΊΠΎΠ½Ρ„ΠΈΠ³-Ρ„Π°ΠΉΠ»ΠΎΠΌ ===
svacer-server run --config config.yml
'''--config <value>''' β€” ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ YAML (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ svacer.cfg)


=== ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сквозной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ===
=== ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сквозной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ===

Revision as of 15:00, 15 January 2025

CLI features

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ снимков

Svacer прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ экспорту ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρƒ снимков посрСдством интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ Π²Π΅Π±-интСрфСйса. Экспорт снимка Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС прСдупрСТдСния, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ снимкС, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сборки, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. ΠŸΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ прСдупрСТдСния Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² статусС ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Ρ….

Экспорт ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ снимков ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки доступСн ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°/Π²Π΅Ρ‚ΠΊΠΈ.

Экспорт снимков:

   svacer server export
       --user <user> 
       --password <pwd> 
       --host <host> 
       --port <port> 
       --grpc <grpc port> 
       --project <project name or id> 
       --branch <branch name or id> 
       --snapshot <snapshot name or id> 
       <output file name>

Π˜ΠΌΠΏΠΎΡ€Ρ‚ снимков:

   svacer server import
       --user <user> 
       --password <pwd> 
       --host <host> 
       --port <port> 
       --grpc <grpc port> 
       --project <project name or id> 
       --branch <branch name or id> 
       --name <new name for snapshot>
       [--force]
       <input file name>

ΠžΠΏΡ†ΠΈΡ --force создаст ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π²Π΅Ρ‚ΠΊΡƒ, Ссли ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π° сСрвСрС.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ PDF ΠΎΡ‚Ρ‡Π΅Ρ‚Π°

Для создания PDF ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΈΠ· интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° pdfgen.

ΠžΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

 svacer pdfgen --cmp-mode [none|new|missing|matched|same] --project [name|id] --branch [name|id] --snapshot [name|id] [--target-project [name|id] --target-branch [name|id] --target-snapshot [name|id]] [--file [re_exp] --checker [re_exp] --severity [re_exp] --review [re_exp]] --out-file report_name --tz time_zone --lang report_lang
  • cmpMode β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сравнСния. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния: none β€” Π±Π΅Π· сравнСния, new β€” Π½ΠΎΠ²Ρ‹Π΅, missing β€” ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅, matched β€” сопоставлСнныС, same β€” ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅
  • project, branch, snapshot β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ снимок, ΠΎΡ‚Ρ‡Π΅Ρ‚ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. Π’ качСствС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π°, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сущностСй. НапримСр: --project zstd --branch "7683ed6a-b838-4090-9945-10e148f94be3" --snapshot zstd_130
  • target-project, target-branch, target-snapshot β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ снимок, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ провСсти сравнСниС (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² cmpMode: new, missing, matched, same).
  • file, checker, severity, review β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, примСняСмыС ΠΊ списку ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ². Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ условия Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π² ΠΎΡ‚Ρ‡Π΅Ρ‚. ЗначСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ случаС Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈ опСрация экспорта Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π½Π΅ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½. File β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, Π³Π΄Π΅ Π±Ρ‹Π» ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€. Checker β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ Ρ‡Π΅ΠΊΠ΅Ρ€Ρƒ, ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ создано. Severity β€” ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΡΡ‚ΡŒ ΡΡ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠ΅Π³ΠΎ Ρ‡Π΅ΠΊΠ΅Ρ€Π°. Review β€” статус Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ (confirmed, unclear ΠΈ Ρ‚. Π΄.)
  • out-file β€” имя создаваСмого Ρ„Π°ΠΉΠ»Π° ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pdf
  • tz β€” врСмСнная Π·ΠΎΠ½Π° Π² ΠΌΠΈΠ½ΡƒΡ‚Π°Ρ…. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ записи ΠΎ коммСнтариях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ оставил ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ
  • lang β€” язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ использован Π² создаваСмом ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ (en β€” английский, ru β€” русский)

Для создания ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Π±Π΅Π· использования Ρ€Π΅ΠΆΠΈΠΌΠ° сравнСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ cmpMode Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ none (это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

Для ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ формирования Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ сравнСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ значСния cmpMode [new, missing, same, matched]. Названия этих Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ названиями Π² GUI. ΠŸΡ€ΠΈ этом трСбуСтся ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΠ· списка: target-project, target-branch, target-snapshot. Если ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ target* Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ установлСны Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ исходных (project -> target-project, branch -> target-branch, ...). Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ этапС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹, проходят ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΉ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: severity, file, review, checker), послС Ρ‡Π΅Π³ΠΎ происходит созданиС ΠΎΡ‚Ρ‡Π΅Ρ‚Π°.

Для создания ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ public API:

URL β€” /api/public/exportPDF
ΠœΠ΅Ρ‚ΠΎΠ΄ β€” POST

Π’Π΅Π»ΠΎ запроса β€” JSON, ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

   {
   "compare_mode": "new",
   "context":{
     "project": "zstd",
     "branch": "v13",
     "snapshot": "zstd_131"
    },
   "target_context":{
     "project": "zstd",
     "branch": "v13",
     "snapshot": "zstd_132"
    },
    "language": "en",
    "timezone": 180,
    "filters": {
      "checker": "^Z.*$",
      "file": ".*example.*",
      "severity": "Cr.*",
      "review": "Conf.*"
    } 
   }

Π”Π°Π½Π½Ρ‹ΠΉ запрос соотвСтствуСт запросу Π½Π° созданиС ΠΎΡ‚Ρ‡Π΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ получаСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сравнСния Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° zstd ΠΈ Π²Π΅Ρ‚ΠΊΠΈ v13 Π΄Π²ΡƒΡ… снимков zstd_131 ΠΈ zstd_132. ΠŸΡ€ΠΈ этом Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹. Π‘Ρ€Π΅Π΄ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… останутся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ условиям Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Ρ‡Π΅ΠΊΠ΅Ρ€ начинаСтся с Π±ΡƒΠΊΠ²Ρ‹ Z, Ρ„Π°ΠΉΠ» содСрТит слово example, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΡΡ‚ΡŒ Ρ‡Π΅ΠΊΠ΅Ρ€Π° содСрТит подстроку Cr (Ρ‡Ρ‚ΠΎ Π² силу ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ количСства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° соотвСтствуСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Critical) Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ, Π° состояниС Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ содСрТит подстроку Conf (Ρ‡Ρ‚ΠΎ Π² силу ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ количСства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° соотвСтствуСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Confirmed). Π―Π·Ρ‹ΠΊ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° β€” английский, часовой пояс β€” 180 ΠΌΠΈΠ½ΡƒΡ‚ (3 часа).

Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΠ· исходного ΠΊΠΎΠ΄Π°

Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΠ· исходного ΠΊΠΎΠ΄Π° Π½Π° сСрвСр истории Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ svacer markup import, ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CLI/REST API Markup2.

Бинтаксис:

 svacer markup --user <user> --password <password> --project <project id or name> --branch <branch id or name> --snapshot <snapshot id or name> import --template <name> [--exclude-paths <path1, path2, ..., pathN> --from-build-object]

Π“Π΄Π΅:

  • user, password β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи Π½Π° сСрвСрС
  • project β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° сСрвСрС, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ
  • branch β€” Π²Π΅Ρ‚ΠΊΠ° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ master), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ
  • snapshot β€” снимок Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ Π²Π΅Ρ‚ΠΊΠ΅ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ послСдний Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ
  • exclude-paths β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ рСгулярным выраТСниям
  • template β€” опрСдСляСт имя шаблона для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ (Ρ„Π»Π°Π³ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ экспорта)
  • from-build-object β€” ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ этой ΠΎΠΏΡ†ΠΈΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сборки Ρ‚ΠΎΠ³ΠΎ снимка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½ Π² опциях Π²Ρ‹ΡˆΠ΅.

ПослС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ всС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ оставлСнныС Π² ΠΊΠΎΠ΄Π΅ Π² соотвСтствии с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ шаблоном Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π° сСрвСр истории Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Π΅Ρ‚ΠΊΡƒ ΠΈ снимок.

Для подавлСния Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π² исходном ΠΊΠΎΠ΄Π΅

 //svacer_review: -<warn class>[|-<warn class>]+ 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

 if (!strncmp("--filelimit",argv[i],11)) {
   j = 11; //svacer_review: -UNUSED_VALUE
   if (*(argv[i]+11) == '=') {

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ располоТСн Π² ΠΊΠΎΠ½Ρ†Π΅ строки, Π³Π΄Π΅ оТидаСтся ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Svace.

Для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΡ€ΠΈ использовании ΠΊΠΎΠΌΠ°Π½Π΄ import --upload ΠΈ upload слСдуСт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ --template <template>. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сборки сразу послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΅Π³ΠΎ Π½Π° сСрвСр.

Π¨Π°Π±Π»ΠΎΠ½ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ DEFAULT

Π‘Π΅Ρ€Π²Π΅Ρ€ позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ собствСнныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, для удобства Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ нСудаляСмый шаблон DEFAULT. Бписок шаблонов ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Settings > Markup templates (ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΡ€Π°Π² доступа).

Π¨Π°Π±Π»ΠΎΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Ρ‚Π°ΠΊ ΠΈ для экспорта Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, поэтому ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠΎΠ΄Π° с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ шаблона.

Π’ шаблонС DEFAULT каТдая Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° описываСтся Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строчкС ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠΌ, ΠΏΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько строчСк. Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ статусом ΠΈΠ»ΠΈ со статусом Undecided Π½Π΅ производится, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½Π΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

 //svacer_review: FORMAT_STRING.PARAM_EXCESS r:Confirmed|s:Minor|a:Undecided|c:
 //svacer_review: UNINIT.LOCAL_VAR r:Confirmed|s:Unspecified|a:Fix required|c:will be fixed
 printf("v = %d", fl3(), i);

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строчкС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Π°, гарантируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΊ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρƒ с Ρ‚Π°ΠΊΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.

ИзмСнСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (--path-prefix)

Если Π½Π° сСрвСр Π±Ρ‹Π» Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ снимок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располоТСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… (ΠΈΠ»ΠΈ всСх) Ρ„Π°ΠΉΠ»ΠΎΠ² помСнялось, Π° ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π½Π΅ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½ Ρ„Π»Π°Π³ --path-prefix, Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° с ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ снимка Π½Π΅ распространится Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ снимок. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ svacer markup update.

Бинтаксис:

 svacer markup update --user <user> --password <password> --project <project id or name> --branch <branch id or name> --path-prefix <prefix:replacement; prefix:replacement> [<snapshot id or name>1, <snapshot id or name>2, ..., <snapshot id or name>N]

Π“Π΄Π΅:

  • user, password β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи Π½Π° сСрвСрС
  • project β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° сСрвСрС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°
  • branch β€” Π²Π΅Ρ‚ΠΊΠ° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ master), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°
  • path-prefix β€” ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ отобраТСния для прСфиксов ΠΏΡƒΡ‚Π΅ΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅: <file> ΠΈΠ»ΠΈ line prefix:replacement;prefix:replacement

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΈΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ снимков, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Π² соотвСтствии с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ прСфиксами ΠΏΡƒΡ‚Π΅ΠΉ. Если ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚, измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊΠΎ всСй Π²Π΅Ρ‚ΠΊΠ΅. ПослС запуска ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° сСрвСр Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ асинхронный запрос Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Π·Π° дальнСйшим прогрСссом исполнСния ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π² Π»ΠΎΠ³Π΅ сСрвСра (Ρ‡Π΅Ρ€Π΅Π· UI ΠΎΠ½ доступСн ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ с Ρ€ΠΎΠ»ΡŒΡŽ admin Π² Settings > Server information).

ПодавлСниС ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ

Для ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ прСдоставляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки:

Бписок ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ (ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ JSON)

 svacer markup [auth/selection] suppress list

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

 svacer markup --user admin --password admin --project tree-command suppress list


ΠŸΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

 svacer markup [auth/selection] suppress add id1 id2 id3

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

 svacer markup --user admin --password admin --project tree-command suppress add 29d298cd-752d-4d19-b535-2089a72a96af


Π£Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ прСдупрСТдСния

 svacer markup [auth/selection] suppress remove id1 id2 id3

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

 svacer markup --user admin --password admin --project tree-command suppress remove 29d298cd-752d-4d19-b535-2089a72a96af


Π£Π±Ρ€Π°Ρ‚ΡŒ всС подавлСния

 svacer markup [auth/selection] suppress remove

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

 svacer markup --user admin --password admin --project tree-command suppress remove

Бписок ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ с ID доступСн посрСдством public REST API. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ со сторонними инструмСнтами ΠΈ встраивания Π² CI/CD pipeline. На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ информация ΠΎ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… прСдупрСТдСниях нСдоступна Π² Π²Π΅Π±-интСрфСйсС.

ΠŸΡ€ΠΈ экспортировании снимка Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ прСдупрСТдСния, сами прСдупрСТдСния Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ экспортированы ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Π΅.

Автомиграция Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ

Π’ Svacer Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ с Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ (Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° администрированиС сСрвСра).

 svacer server automigrate [command] [flags]

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ command:

  • add β€” добавляСт Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π² соотвСтствии с ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ
  • delete β€” удаляСт Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ
  • show_config β€” ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ всС Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ (Config Table), ΠΈΡ… id, врСмя создания ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ… создал
  • show_automigrate β€” ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π²Π΅Ρ‚ΠΎΠΊ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят автоматичСскиС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ (Automigrate Table)
  • log β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ (Done Automigrate Table)

Π€Π»Π°Π³ pattern, примСняСтся для ΠΊΠΎΠΌΠ°Π½Π΄ <add|delete|show_config|log>

  • Для add: ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅: srcProject{id|name}/srcBranch{id|name}=>receiveProject{id|name|regEx}/receiveBranch{id|name|regEx}
regEx β€” Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ°ΠΊ для PostgreSQL
  • Для delete: ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅: srcProject{id|name}/srcBranch{id|name}=>receiveProject{id|name|regEx}/receiveBranch{id|name|regEx}
ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ записан Π² Config Table
  • Для show_config: ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. Поиск Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅: ILIKE "'%"+pattern+"%'"
  • Для log: Π€Π»Π°Π³ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ srcProjectId/srcBranchId=>receiveProjectId/receiveBranchId ΠΈΠ»ΠΈ srcProjectName/srcBranchName=>receiveProjectName/receiveBranchName для Π²Ρ‹Π²ΠΎΠ΄Π° Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ

Π€Π»Π°Π³ id, примСняСтся для command <delete|show_automigrate> Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ uuid

  • Для delete: id для удалСния Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ (ΠΈΠ· Config Table)
  • Для show_automigrate: id Π²Π΅Ρ‚ΠΊΠΈ/ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для нахоТдСния Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ (Automigrate Table) ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ, Π³Π΄Π΅ присутствуСт Π΄Π°Π½Π½Ρ‹ΠΉ id

Π€Π»Π°Π³ format β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ для command <show_config|show_automigrate|log>

  • Для show_config:
  • table β€” Π²Ρ‹Π²ΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
  • json β€” Π²Ρ‹Π²ΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ json
  • no-id β€” Π²Ρ‹Π²ΠΎΠ΄ Π±Π΅Π· config id
ЗначСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ: json,no-id. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” table.
  • Для show_automigrate|log:
  • table β€” Π²Ρ‹Π²ΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
  • json β€” Π²Ρ‹Π²ΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ json
По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” table.

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ POST запрос ΠΏΠΎ адрСсу /api/automigrate. Π’ Ρ‚Π΅Π»Π΅ пСрСдаСтся json, с полями action(not null), pattern, id. ВыполняСтся ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ Π² CLI.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса:

  • ΠŸΡ€ΠΈ запускС сСрвСра запускаСтся сСрвис automigrate
  • ΠŸΡ€ΠΈ занСсСнии Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, подходящиС ΠΏΠΎΠ΄ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° Π½ΠΈΡ…
  • ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, удаляСт Π΅Ρ‘ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Config ΠΈ удаляСт ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ
  • НС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ Π½Π° ΠΎΠ΄Π½Ρƒ (Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ)
  • ΠŸΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ снимка, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅Ρ‚ΠΊΠΈ/ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ снимка) происходит Π»ΠΈΠ±ΠΎ миграция Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ ΠΈ миграция Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ (Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ситуации). ΠŸΡ€ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ошибкС Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π΄Π°Ρ‘Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствиС.
  • ЕдинствСнный случай, ΠΊΠΎΠ³Π΄Π° сСрвис Π½Π΅ Π΄Π°Ρ‘Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствиС β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Svace Ρ‡Π΅Ρ€Π΅Π· CLI: upload, Π»ΠΈΠ±ΠΎ import с Ρ„Π»Π°Π³ΠΎΠΌ --upload. Π’ этом случаС сСрвис Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ отмСняСт Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Π’Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, ΠΊΠΎΠ³Π΄Π° имя Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ (Π² качСствС to_branch) ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ΄ нСсколько ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ².

АутСнтификация ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния для выполнСния Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ использовании CLI

SVACER_AUTH_CREDS=login:password
SVACER_AUTH_TOKEN=token

Π’ качСствС Ρ‚ΠΎΠΊΠ΅Π½Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· REST endpoint /api/public/login

АутСнтификация ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

Для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ svacer Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ соСдинСния ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ для дальнСйшСго использования. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

svacer server login --host [hostname] --port [restPort] --grpc [grpcPort] --ssl-ca-certs [certs_path] --user [username] --password [password] --out [file]

Команда выполняСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ сСрвСру svacer ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ (host, port, user, password), ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ сохраняСт всС эти Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ». Для указания Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слСдуСт ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция --out . Если опция --out ΠΎΠΏΡƒΡ‰Π΅Π½Π°, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² Ρ„Π°ΠΉΠ» svacer_conn.json Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

svacer server login --host svacer.local --port 8080 --grpc 3002 --user admin --password --out cn.json

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° сСрвСрС svacer.local ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ вмСстС с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (host, port, grpc) Π±ΡƒΠ΄Π΅Ρ‚ записан Π² Ρ„Π°ΠΉΠ» cn.json.

Для использования созданного Ρ€Π°Π½Π΅Π΅ Ρ„Π°ΠΉΠ»Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ --conn_file. Данная опция ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π²ΠΎ всСх ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ --user --password (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ). НапримСр, для выполнСния ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСр с использованиСм сохранСнной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

svacer import --conn_file cn.json .

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ считаСт Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° cn.json ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ host, port, grpc.

Π’Π°ΠΊΠΆΠ΅ имя Ρ„Π°ΠΉΠ»Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния SVACER_CONN_FILE.

Π’Ρ‹Π²ΠΎΠ΄ списка ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ с сСрвСра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

svacer marker list --host host --user user --password password --project project_name_or_id --branch branch_name_or_id --snapshot snapshot_name_or_id

Π’Ρ‹Π²ΠΎΠ΄:

#     warn                                 file                            line   review  msg                                                 
1000  INVARIANT_RESULT                     /.build/subst.c                 7080           Expression 'tl->word->flags | (1 << 21)' is always  
                                                                                          true , which may be caused by a logical error       
1001  DEREF_AFTER_NULL.LOOP                /.build/execute_cmd.c           3327           After having been compared to NULL value at execut  
                                                                                          e_cmd.c:3325, pointer 'l' is dereferenced at execu  
                                                                                          te_cmd.c:3327.                                      
1002  DEREF_AFTER_NULL.LOOP                /.build/variables.c             2749           After having been compared to NULL value at variab  
                                                                                          les.c:2656, pointer 'vc' is dereferenced at variab  
                                                                                          les.c:2749.                                         
1003  CHECK_AFTER_PASS_TO_PROC             /.build/redir.c                 1219           Variable 'redirector' was passed to function at re  
                                                                                          dir.c:1215 by calling function 'fcntl' that can't   
                                                                                          use negative values is checked for negative value   
                                                                                          at redir.c:1219.                                

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Ρ„Π»Π°Π³Π° --out-format=json Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ Π² JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

[{"id":"e0ec7389-42a0-403c-9ce2-bfaa3bfa0228","file":"/.build/subst.c","function":"WORD_DESC * parameter_brace_expand_rhs()","line":7080,"locID":1000,"lang":"CXX","tool":"CSA","warnClass":"INVARIANT_RESULT","mtid":"CSA.INVARIANT_RESULT.1","msg":"Expression 'tl-\u003eword-\u003eflags | (1 \u003c\u003c 21)' is always true , which may be caused by a logical error","details":"811ed8f680ae9b540707436615348aed6d32ee93","flags":0,"invariant":"TBXA/IYVZKVlH6f19tiGsd3stuI"},{"id":"184b85bf-a63f-4187-b290-25a5950b3353","file":"/.build/execute_cmd.c","function":"select_query","line":3327,"locID":1001,"

БлияниС снимков ΠΈΠ· CLI (ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ опция)

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько снимков Π² ΠΎΠ΄ΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

svacer container snapshot merge --host host --user user --password password --branch target_branch --name target_snapshot_name --snapshot val1 --snapshot val2 --snapshot val3 ...

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ снимков для слияния ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ UUID ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π»ΠΈΠ±ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚

цСлСвая Π²Π΅Ρ‚ΠΊΠ°: <project name>:::<branch name>
снимок:        <project name>:::<branch name>:::<snapshot name>

ΠŸΡ€ΠΈ слиянии ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ снимки ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π²Π΅Ρ‚ΠΎΠΊ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎ всСм снимкам ΠΈ Π½Π° запись для Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ

Π‘ΠΌ. Help:CLI/management/containers

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ ролями

Π‘ΠΌ. User Management (command line)

Svacer server features

Запуск с ΠΊΠΎΠ½Ρ„ΠΈΠ³-Ρ„Π°ΠΉΠ»ΠΎΠΌ

svacer-server run --config config.yml

--config <value> β€” ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ YAML (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ svacer.cfg)

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сквозной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Svacer ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· reverse proxy. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция proxy-mode. ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ этой ΠΎΠΏΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ HTTP Basic Authentication) Π½Π° reverse proxy сСрвСрС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° сСрвСрС Svacer.

ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ proxy-mode ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ header с прокси Authorization Basic ..., ΠΎΡ‚ΠΊΡƒΠ΄Π° Svacer Π±Π΅Ρ€Π΅Ρ‚ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, провСряСт ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ссли Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ с Ρ‚Π°ΠΊΠΈΠΌ Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ Π΅ΡΡ‚ΡŒ Π² Π‘Π” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Svacer.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запуска сСрвСра с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ сквозной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

 svacer-server run --proxy-mode

Π₯ΡƒΠΊΠΈ

Для использования Ρ…ΡƒΠΊΠΎΠ² ΠΏΡ€ΠΈ запускС сСрвСра Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ --hooks <path to JSON file>. Π­Ρ‚Π° опция Π·Π°Π΄Π°Ρ‘Ρ‚ Ρ„Π°ΠΉΠ», содСрТащий описаниС Ρ…ΡƒΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· web-интСрфСйса. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ…ΡƒΠΊ соотвСтствуСт процСссу ΠΈΠ»ΠΈ скрипту, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСрвСр запускаСт ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· web-интСрфСйса.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° описания Ρ…ΡƒΠΊΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

 {
   "hooks": [
     {
       "id": "<id>",
       "label": "<label >",
       "target": "<target>",
       "input": ["<param1>", "<param2>", ...],
       "cmd": "<path to executable>",
       "args": ["<arg1>", β€œ<arg2>”, ...]
     },
     ...
   ]
 }

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ…ΡƒΠΊΠΎΠ²

id Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ…ΡƒΠΊΠ°. Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅
label Имя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ Π² web-интСрфСйсС
target ΠœΠ΅ΡΡ‚ΠΎ Π² UI, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°. БСйчас поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” default. Оно соотвСтствуСт Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Details Π½Π° ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса
input ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² запускаСмый процСсс, исходя ΠΈΠ· контСкста Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² web-интСрфСйсС.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ значСния:

  • markerID β€” UUID ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°;
  • branchID β€” UUID ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Π΅Ρ‚ΠΊΠΈ;
  • snapshotID β€” UUID ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ снимка;
  • projectID β€” UUID ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;
  • url β€” URL ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π² web-интСрфСйсС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°;
  • marker β€” Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, содСрТащСго сСриализованноС Π² JSON прСдставлСниС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΅Π³ΠΎ трассу ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ΅
cmd ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ процСссу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½. НС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ запуска
args АргумСнты, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² запускаСмый процСсс. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² запускаСмого процСсса состоит ΠΈΠ· списка <args> ΠΈ списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… полю <input>

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ сцСнарий использования Ρ…ΡƒΠΊΠΎΠ² β€” созданиС кСйсов для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ прСдупрСТдСния Π² систСмах отслСТивания ошибок, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Jira ΠΈΠ»ΠΈ Gitlab. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ скриптов для этого ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° страницС ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ…ΡƒΠΊΠΎΠ².

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ числа запросов

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ число запросов Π½Π° сСрвСр Svacer, ΠΏΠ΅Ρ€Π΅Π΄ запуском сСрвСра ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ

SVACER_SERVER_THROTTLE_PARAMS=limit,backlogLimit,timeout
  • limit β€” число ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… запросов
  • backlogLimit β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ бэклога для запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ сСйчас
  • timeout β€” врСмя оТидания запроса Π² бэклогС (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ 1m12s β€” duration)