pgbus 0.19.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +323 -147
  3. data/README.md +44 -0
  4. data/app/controllers/pgbus/deploy_tasks_controller.rb +38 -0
  5. data/app/helpers/pgbus/deploy_tasks_helper.rb +77 -0
  6. data/app/helpers/pgbus/processes_helper.rb +1 -1
  7. data/app/models/pgbus/deploy_task.rb +104 -0
  8. data/app/models/pgbus/deploy_task_run.rb +45 -0
  9. data/app/views/layouts/pgbus/application.html.erb +2 -0
  10. data/app/views/pgbus/deploy_tasks/_rollover_banner.html.erb +25 -0
  11. data/app/views/pgbus/deploy_tasks/_tasks_table.html.erb +71 -0
  12. data/app/views/pgbus/deploy_tasks/index.html.erb +6 -0
  13. data/app/views/pgbus/deploy_tasks/show.html.erb +134 -0
  14. data/config/i18n-tasks.yml +2 -0
  15. data/config/locales/da.yml +97 -0
  16. data/config/locales/de.yml +97 -0
  17. data/config/locales/en.yml +97 -0
  18. data/config/locales/es.yml +97 -0
  19. data/config/locales/fi.yml +97 -0
  20. data/config/locales/fr.yml +97 -0
  21. data/config/locales/it.yml +97 -0
  22. data/config/locales/ja.yml +97 -0
  23. data/config/locales/nb.yml +97 -0
  24. data/config/locales/nl.yml +97 -0
  25. data/config/locales/pt.yml +97 -0
  26. data/config/locales/sv.yml +97 -0
  27. data/config/routes.rb +7 -0
  28. data/lib/generators/pgbus/add_deploy_tasks_generator.rb +51 -0
  29. data/lib/generators/pgbus/templates/add_deploy_tasks_tables.rb.erb +43 -0
  30. data/lib/generators/pgbus/templates/deploy_tasks.yml.erb +42 -0
  31. data/lib/generators/pgbus/templates/migration.rb.erb +43 -0
  32. data/lib/pgbus/configuration/deploy_settings.rb +46 -0
  33. data/lib/pgbus/configuration.rb +3 -0
  34. data/lib/pgbus/deploy/revision.rb +59 -0
  35. data/lib/pgbus/deploy/rollover.rb +65 -0
  36. data/lib/pgbus/deploy/runner.rb +259 -0
  37. data/lib/pgbus/deploy/task.rb +105 -0
  38. data/lib/pgbus/engine.rb +17 -0
  39. data/lib/pgbus/generators/migration_detector.rb +11 -0
  40. data/lib/pgbus/instrumentation.rb +3 -0
  41. data/lib/pgbus/mcp/server.rb +2 -1
  42. data/lib/pgbus/mcp/tools/deploy_tasks_tool.rb +86 -0
  43. data/lib/pgbus/mcp.rb +1 -0
  44. data/lib/pgbus/outbox/poller.rb +1 -0
  45. data/lib/pgbus/process/consumer.rb +1 -0
  46. data/lib/pgbus/process/dispatcher.rb +18 -1
  47. data/lib/pgbus/process/heartbeat.rb +7 -2
  48. data/lib/pgbus/process/supervisor.rb +35 -3
  49. data/lib/pgbus/process/worker.rb +1 -0
  50. data/lib/pgbus/recurring/scheduler.rb +54 -20
  51. data/lib/pgbus/version.rb +1 -1
  52. data/lib/pgbus/web/data_source/deploy_task_list.rb +114 -0
  53. data/lib/pgbus/web/data_source/list_counts.rb +2 -1
  54. data/lib/pgbus/web/data_source.rb +1 -0
  55. data/lib/pgbus/web/deploy_task_state.rb +51 -0
  56. data/sig/pgbus/configuration.rbs +10 -0
  57. metadata +20 -1
@@ -236,6 +236,102 @@ it:
236
236
  payload: Payload
237
237
  retry: Riprova
238
238
  title: 'Messaggio DLQ #%{id}'
239
+ deploy_tasks:
240
+ banner:
241
+ heading: Passaggio di versione
242
+ lagging_html:
243
+ one: 'In attesa del passaggio: 1 processo non esegue ancora <code>%{revision}</code>.'
244
+ other: 'In attesa del passaggio: %{count} processi non eseguono ancora <code>%{revision}</code>.'
245
+ lagging_more: "…e altri %{count}"
246
+ lagging_process: "%{kind}@%{hostname} pid %{pid} su %{revision}"
247
+ live_count: "%{count} su %{revision}"
248
+ live_heading: 'Processi attivi:'
249
+ no_revision_hint_html: Imposta <code>config.app_revision</code>, oppure una tra <code>PGBUS_REVISION</code>, <code>DASH_VERSION</code> o <code>KAMAL_VERSION</code>, oppure distribuisci un file <code>REVISION</code>. Esegui ora funziona comunque.
250
+ no_revision_html: 'Revisione dell''app non configurata: le attività di deploy attendono finché non lo è.'
251
+ no_revision_label: nessuna revisione
252
+ no_scheduler_html: 'Nessuno scheduler in esecuzione: le attività di deploy partono solo dallo scheduler. Questo verdetto usa la revisione della dashboard stessa.'
253
+ no_workers_html: 'In attesa del passaggio: ancora nessun worker su <code>%{revision}</code>.'
254
+ ready_html: 'Passaggio completato: ogni processo attivo esegue <code>%{revision}</code>. Le attività armate partono al prossimo tick dello scheduler.'
255
+ unavailable_html: Impossibile leggere lo stato del passaggio.
256
+ default_queue: default
257
+ disable: Disattiva
258
+ enable: Attiva
259
+ enqueue:
260
+ enqueued: Attività di deploy accodata
261
+ failed: 'L''attività di deploy non è stata accodata: vedi il log per il motivo'
262
+ every_deploy: A ogni deploy
263
+ index:
264
+ task_count:
265
+ one: "%{count} attività dichiarata"
266
+ other: "%{count} attività dichiarate"
267
+ title: Attività di deploy
268
+ not_found: Attività di deploy non trovata
269
+ reasons:
270
+ disabled_armed_html: 'Disattivata con un''esecuzione di passaggio in sospeso: attivala per farla partire.'
271
+ disabled_html: 'Disattivata: lo scheduler la salta.'
272
+ due_html: 'Pronta: parte al prossimo tick dello scheduler.'
273
+ manual_html: "· eseguita %{ago} (manuale)"
274
+ never_html: Mai eseguita dopo un passaggio.
275
+ ran_html: Eseguita %{ago} su <code>%{revision}</code> (passaggio).
276
+ waiting_lagging_html:
277
+ one: 'In attesa del passaggio: 1 processo non esegue ancora <code>%{revision}</code>.'
278
+ other: 'In attesa del passaggio: %{count} processi non eseguono ancora <code>%{revision}</code>.'
279
+ waiting_no_revision_html: 'In attesa: la revisione dell''app non è configurata.'
280
+ waiting_no_scheduler_html: 'In attesa: nessuno scheduler in esecuzione.'
281
+ waiting_no_workers_html: In attesa di un worker su <code>%{revision}</code>.
282
+ waiting_unknown_html: 'In attesa: impossibile leggere lo stato del passaggio.'
283
+ run_now: Esegui ora
284
+ show:
285
+ armed_html: "%{armed_for}, armata %{ago}"
286
+ back: Indietro
287
+ configuration: Configurazione
288
+ labels:
289
+ arguments: Argomenti
290
+ armed: Esecuzione in sospeso
291
+ command: Comando
292
+ description: Descrizione
293
+ job_class: Classe del job
294
+ priority: Priorità
295
+ queue: Coda
296
+ source: Origine
297
+ last_run: Ultima esecuzione
298
+ no_runs: Nessuna esecuzione registrata
299
+ recent_runs: Esecuzioni recenti
300
+ run_headers:
301
+ enqueued_at: Accodata il
302
+ queue: Coda
303
+ revision: Revisione
304
+ triggered_by: Avviata da
305
+ version: Versione
306
+ source_config: File di configurazione
307
+ source_dynamic: Dinamica
308
+ state: Stato
309
+ version: Versione
310
+ states:
311
+ disabled: Disattivata
312
+ due: Pronta
313
+ never: Mai eseguita
314
+ ran: Eseguita
315
+ waiting: In attesa
316
+ tasks_table:
317
+ empty_hint_html: Dichiara le attività una tantum in <code>config/deploy_tasks.yml</code>; <code>rails generate pgbus:add_deploy_tasks</code> scrive un file di partenza.
318
+ empty_title: Nessuna attività di deploy dichiarata
319
+ headers:
320
+ actions: Azioni
321
+ last_run: Ultima esecuzione
322
+ queue: Coda
323
+ state: Stato
324
+ task: Attività
325
+ version: Versione
326
+ never: Mai
327
+ toggle:
328
+ disabled: Attività di deploy disattivata
329
+ enabled: Attività di deploy attivata
330
+ failed: Impossibile cambiare lo stato dell'attività di deploy
331
+ triggered_by:
332
+ manual: Manuale
333
+ rollover: Passaggio
334
+ version: v%{version}
239
335
  dialogs:
240
336
  cancel: Annulla
241
337
  confirm: Conferma
@@ -617,6 +713,7 @@ it:
617
713
  nav:
618
714
  batches: Lotti
619
715
  dashboard: Cruscotto
716
+ deploy_tasks: Deploy
620
717
  dlq: DLQ
621
718
  events: Eventi
622
719
  insights: Approfondimenti
@@ -236,6 +236,102 @@ ja:
236
236
  payload: ペイロード
237
237
  retry: 再試行
238
238
  title: 'DLQメッセージ #%{id}'
239
+ deploy_tasks:
240
+ banner:
241
+ heading: ロールオーバー
242
+ lagging_html:
243
+ one: 'ロールオーバー待ち: 1 個のプロセスがまだ <code>%{revision}</code> で動いていません。'
244
+ other: 'ロールオーバー待ち: %{count} 個のプロセスがまだ <code>%{revision}</code> で動いていません。'
245
+ lagging_more: "…ほか %{count} 件"
246
+ lagging_process: "%{kind}@%{hostname} pid %{pid}(%{revision})"
247
+ live_count: "%{revision}: %{count}"
248
+ live_heading: '稼働中のプロセス:'
249
+ no_revision_hint_html: "<code>config.app_revision</code>、または <code>PGBUS_REVISION</code>・<code>DASH_VERSION</code>・<code>KAMAL_VERSION</code> のいずれかを設定するか、<code>REVISION</code> ファイルを同梱してください。「今すぐ実行」は引き続き使えます。"
250
+ no_revision_html: 'アプリのリビジョンが設定されていません: 設定されるまでデプロイタスクは待機します。'
251
+ no_revision_label: リビジョンなし
252
+ no_scheduler_html: 'スケジューラーが動いていません: デプロイタスクはスケジューラーからのみ実行されます。この判定はダッシュボード自身のリビジョンを使っています。'
253
+ no_workers_html: 'ロールオーバー待ち: <code>%{revision}</code> のワーカーがまだいません。'
254
+ ready_html: 'ロールオーバー完了: 稼働中のすべてのプロセスが <code>%{revision}</code> で動いています。待機中のタスクはスケジューラーの次のティックで実行されます。'
255
+ unavailable_html: ロールオーバーの状態を読み取れませんでした。
256
+ default_queue: default
257
+ disable: 無効にする
258
+ enable: 有効にする
259
+ enqueue:
260
+ enqueued: デプロイタスクをキューに追加しました
261
+ failed: 'デプロイタスクはキューに追加されませんでした: 理由はログを確認してください'
262
+ every_deploy: 毎回のデプロイ
263
+ index:
264
+ task_count:
265
+ one: "%{count} 件のタスクが宣言されています"
266
+ other: "%{count} 件のタスクが宣言されています"
267
+ title: デプロイタスク
268
+ not_found: デプロイタスクが見つかりません
269
+ reasons:
270
+ disabled_armed_html: '無効(ロールオーバー実行が保留中): 実行させるには有効にしてください。'
271
+ disabled_html: '無効: スケジューラーはスキップします。'
272
+ due_html: '実行待ち: スケジューラーの次のティックで実行されます。'
273
+ manual_html: "· %{ago}に実行(手動)"
274
+ never_html: ロールオーバー後に実行されたことはありません。
275
+ ran_html: "%{ago}に <code>%{revision}</code> で実行(ロールオーバー)。"
276
+ waiting_lagging_html:
277
+ one: 'ロールオーバー待ち: 1 個のプロセスがまだ <code>%{revision}</code> で動いていません。'
278
+ other: 'ロールオーバー待ち: %{count} 個のプロセスがまだ <code>%{revision}</code> で動いていません。'
279
+ waiting_no_revision_html: '待機中: アプリのリビジョンが設定されていません。'
280
+ waiting_no_scheduler_html: '待機中: スケジューラーが動いていません。'
281
+ waiting_no_workers_html: "<code>%{revision}</code> のワーカーを待っています。"
282
+ waiting_unknown_html: '待機中: ロールオーバーの状態を読み取れませんでした。'
283
+ run_now: 今すぐ実行
284
+ show:
285
+ armed_html: "%{armed_for}(%{ago}に準備)"
286
+ back: 戻る
287
+ configuration: 設定
288
+ labels:
289
+ arguments: 引数
290
+ armed: 保留中の実行
291
+ command: コマンド
292
+ description: 説明
293
+ job_class: ジョブクラス
294
+ priority: 優先度
295
+ queue: キュー
296
+ source: ソース
297
+ last_run: 最終実行
298
+ no_runs: まだ実行記録はありません
299
+ recent_runs: 最近の実行
300
+ run_headers:
301
+ enqueued_at: キュー追加日時
302
+ queue: キュー
303
+ revision: リビジョン
304
+ triggered_by: 実行契機
305
+ version: バージョン
306
+ source_config: 設定ファイル
307
+ source_dynamic: 動的
308
+ state: 状態
309
+ version: バージョン
310
+ states:
311
+ disabled: 無効
312
+ due: 実行待ち
313
+ never: 未実行
314
+ ran: 実行済み
315
+ waiting: 待機中
316
+ tasks_table:
317
+ empty_hint_html: 一度きりのタスクは <code>config/deploy_tasks.yml</code> で宣言します。<code>rails generate pgbus:add_deploy_tasks</code> でひな形が作成されます。
318
+ empty_title: 宣言されたデプロイタスクはありません
319
+ headers:
320
+ actions: アクション
321
+ last_run: 最終実行
322
+ queue: キュー
323
+ state: 状態
324
+ task: タスク
325
+ version: バージョン
326
+ never: なし
327
+ toggle:
328
+ disabled: デプロイタスクを無効にしました
329
+ enabled: デプロイタスクを有効にしました
330
+ failed: デプロイタスクの切り替えに失敗しました
331
+ triggered_by:
332
+ manual: 手動
333
+ rollover: ロールオーバー
334
+ version: v%{version}
239
335
  dialogs:
240
336
  cancel: キャンセル
241
337
  confirm: 確認
@@ -617,6 +713,7 @@ ja:
617
713
  nav:
618
714
  batches: バッチ
619
715
  dashboard: ダッシュボード
716
+ deploy_tasks: デプロイ
620
717
  dlq: DLQ
621
718
  events: イベント
622
719
  insights: インサイト
@@ -236,6 +236,102 @@ nb:
236
236
  payload: Innhold
237
237
  retry: Prøv igjen
238
238
  title: 'DLQ-melding #%{id}'
239
+ deploy_tasks:
240
+ banner:
241
+ heading: Utrulling
242
+ lagging_html:
243
+ one: 'Venter på utrulling: 1 prosess kjører ennå ikke <code>%{revision}</code>.'
244
+ other: 'Venter på utrulling: %{count} prosesser kjører ennå ikke <code>%{revision}</code>.'
245
+ lagging_more: "…og %{count} til"
246
+ lagging_process: "%{kind}@%{hostname} pid %{pid} på %{revision}"
247
+ live_count: "%{count} på %{revision}"
248
+ live_heading: 'Aktive prosesser:'
249
+ no_revision_hint_html: Sett <code>config.app_revision</code>, eller en av <code>PGBUS_REVISION</code>, <code>DASH_VERSION</code> eller <code>KAMAL_VERSION</code>, eller lever en <code>REVISION</code>-fil. Kjør nå fungerer fortsatt.
250
+ no_revision_html: 'Appens revisjon er ikke konfigurert: deploy-oppgaver venter til den er det.'
251
+ no_revision_label: ingen revisjon
252
+ no_scheduler_html: 'Ingen planlegger kjører: deploy-oppgaver startes bare av planleggeren. Vurderingen bruker dashbordets egen revisjon.'
253
+ no_workers_html: 'Venter på utrulling: ingen worker på <code>%{revision}</code> ennå.'
254
+ ready_html: 'Utrullet: hver aktive prosess kjører <code>%{revision}</code>. Ventende oppgaver kjøres ved planleggerens neste tick.'
255
+ unavailable_html: Utrullingsstatusen kunne ikke leses.
256
+ default_queue: default
257
+ disable: Deaktiver
258
+ enable: Aktiver
259
+ enqueue:
260
+ enqueued: Deploy-oppgaven er lagt i kø
261
+ failed: 'Deploy-oppgaven ble ikke lagt i kø: se loggen for årsaken'
262
+ every_deploy: Ved hver deploy
263
+ index:
264
+ task_count:
265
+ one: "%{count} oppgave deklarert"
266
+ other: "%{count} oppgaver deklarert"
267
+ title: Deploy-oppgaver
268
+ not_found: Fant ikke deploy-oppgaven
269
+ reasons:
270
+ disabled_armed_html: 'Deaktivert med en ventende utrullingskjøring: aktiver den for å la den kjøre.'
271
+ disabled_html: 'Deaktivert: planleggeren hopper over den.'
272
+ due_html: 'Klar: kjøres ved planleggerens neste tick.'
273
+ manual_html: "· kjørte %{ago} (manuelt)"
274
+ never_html: Har aldri kjørt etter en utrulling.
275
+ ran_html: Kjørte %{ago} på <code>%{revision}</code> (utrulling).
276
+ waiting_lagging_html:
277
+ one: 'Venter på utrulling: 1 prosess kjører ennå ikke <code>%{revision}</code>.'
278
+ other: 'Venter på utrulling: %{count} prosesser kjører ennå ikke <code>%{revision}</code>.'
279
+ waiting_no_revision_html: 'Venter: appens revisjon er ikke konfigurert.'
280
+ waiting_no_scheduler_html: 'Venter: ingen planlegger kjører.'
281
+ waiting_no_workers_html: Venter på en worker på <code>%{revision}</code>.
282
+ waiting_unknown_html: 'Venter: utrullingsstatusen kunne ikke leses.'
283
+ run_now: Kjør nå
284
+ show:
285
+ armed_html: "%{armed_for}, klargjort %{ago}"
286
+ back: Tilbake
287
+ configuration: Konfigurasjon
288
+ labels:
289
+ arguments: Argumenter
290
+ armed: Ventende kjøring
291
+ command: Kommando
292
+ description: Beskrivelse
293
+ job_class: Jobbklasse
294
+ priority: Prioritet
295
+ queue: Kø
296
+ source: Kilde
297
+ last_run: Siste kjøring
298
+ no_runs: Ingen kjøringer registrert ennå
299
+ recent_runs: Siste kjøringer
300
+ run_headers:
301
+ enqueued_at: Lagt i kø
302
+ queue: Kø
303
+ revision: Revisjon
304
+ triggered_by: Startet av
305
+ version: Versjon
306
+ source_config: Konfigurasjonsfil
307
+ source_dynamic: Dynamisk
308
+ state: Tilstand
309
+ version: Versjon
310
+ states:
311
+ disabled: Deaktivert
312
+ due: Klar
313
+ never: Aldri kjørt
314
+ ran: Kjørt
315
+ waiting: Venter
316
+ tasks_table:
317
+ empty_hint_html: Deklarer engangsoppgaver i <code>config/deploy_tasks.yml</code>; <code>rails generate pgbus:add_deploy_tasks</code> skriver en startfil.
318
+ empty_title: Ingen deploy-oppgaver deklarert
319
+ headers:
320
+ actions: Handlinger
321
+ last_run: Siste kjøring
322
+ queue: Kø
323
+ state: Tilstand
324
+ task: Oppgave
325
+ version: Versjon
326
+ never: Aldri
327
+ toggle:
328
+ disabled: Deploy-oppgaven er deaktivert
329
+ enabled: Deploy-oppgaven er aktivert
330
+ failed: Kunne ikke veksle deploy-oppgaven
331
+ triggered_by:
332
+ manual: Manuelt
333
+ rollover: Utrulling
334
+ version: v%{version}
239
335
  dialogs:
240
336
  cancel: Avbryt
241
337
  confirm: Bekreft
@@ -617,6 +713,7 @@ nb:
617
713
  nav:
618
714
  batches: Grupper
619
715
  dashboard: Dashbord
716
+ deploy_tasks: Deploy
620
717
  dlq: DLQ
621
718
  events: Hendelser
622
719
  insights: Innsikter
@@ -236,6 +236,102 @@ nl:
236
236
  payload: Inhoud
237
237
  retry: Opnieuw proberen
238
238
  title: 'DLQ Bericht #%{id}'
239
+ deploy_tasks:
240
+ banner:
241
+ heading: Uitrol
242
+ lagging_html:
243
+ one: 'Wacht op uitrol: 1 proces draait nog niet op <code>%{revision}</code>.'
244
+ other: 'Wacht op uitrol: %{count} processen draaien nog niet op <code>%{revision}</code>.'
245
+ lagging_more: "…en nog %{count}"
246
+ lagging_process: "%{kind}@%{hostname} pid %{pid} op %{revision}"
247
+ live_count: "%{count} op %{revision}"
248
+ live_heading: 'Actieve processen:'
249
+ no_revision_hint_html: Stel <code>config.app_revision</code> in, of een van <code>PGBUS_REVISION</code>, <code>DASH_VERSION</code> of <code>KAMAL_VERSION</code>, of lever een <code>REVISION</code>-bestand mee. Nu uitvoeren werkt nog steeds.
250
+ no_revision_html: 'App-revisie niet geconfigureerd: deploy-taken wachten tot die er is.'
251
+ no_revision_label: geen revisie
252
+ no_scheduler_html: 'Er draait geen scheduler: deploy-taken worden alleen door de scheduler gestart. Dit oordeel gebruikt de eigen revisie van het dashboard.'
253
+ no_workers_html: 'Wacht op uitrol: nog geen worker op <code>%{revision}</code>.'
254
+ ready_html: 'Uitgerold: elk actief proces draait <code>%{revision}</code>. Klaargezette taken draaien bij de volgende tick van de scheduler.'
255
+ unavailable_html: De uitrolstatus kon niet worden gelezen.
256
+ default_queue: default
257
+ disable: Uitschakelen
258
+ enable: Inschakelen
259
+ enqueue:
260
+ enqueued: Deploy-taak in de wachtrij gezet
261
+ failed: 'De deploy-taak is niet in de wachtrij gezet: zie het log voor de reden'
262
+ every_deploy: Bij elke deploy
263
+ index:
264
+ task_count:
265
+ one: "%{count} taak gedeclareerd"
266
+ other: "%{count} taken gedeclareerd"
267
+ title: Deploy-taken
268
+ not_found: Deploy-taak niet gevonden
269
+ reasons:
270
+ disabled_armed_html: 'Uitgeschakeld met een uitrolrun in afwachting: schakel hem in om hem te laten draaien.'
271
+ disabled_html: 'Uitgeschakeld: de scheduler slaat hem over.'
272
+ due_html: 'Klaar: draait bij de volgende tick van de scheduler.'
273
+ manual_html: "· draaide %{ago} (handmatig)"
274
+ never_html: Nooit gedraaid na een uitrol.
275
+ ran_html: Draaide %{ago} op <code>%{revision}</code> (uitrol).
276
+ waiting_lagging_html:
277
+ one: 'Wacht op uitrol: 1 proces draait nog niet op <code>%{revision}</code>.'
278
+ other: 'Wacht op uitrol: %{count} processen draaien nog niet op <code>%{revision}</code>.'
279
+ waiting_no_revision_html: 'Wacht: de app-revisie is niet geconfigureerd.'
280
+ waiting_no_scheduler_html: 'Wacht: er draait geen scheduler.'
281
+ waiting_no_workers_html: Wacht op een worker op <code>%{revision}</code>.
282
+ waiting_unknown_html: 'Wacht: de uitrolstatus kon niet worden gelezen.'
283
+ run_now: Nu uitvoeren
284
+ show:
285
+ armed_html: "%{armed_for}, klaargezet %{ago}"
286
+ back: Terug
287
+ configuration: Configuratie
288
+ labels:
289
+ arguments: Argumenten
290
+ armed: Openstaande run
291
+ command: Commando
292
+ description: Beschrijving
293
+ job_class: Jobklasse
294
+ priority: Prioriteit
295
+ queue: Wachtrij
296
+ source: Bron
297
+ last_run: Laatste run
298
+ no_runs: Nog geen runs vastgelegd
299
+ recent_runs: Recente runs
300
+ run_headers:
301
+ enqueued_at: In wachtrij gezet
302
+ queue: Wachtrij
303
+ revision: Revisie
304
+ triggered_by: Gestart door
305
+ version: Versie
306
+ source_config: Configuratiebestand
307
+ source_dynamic: Dynamisch
308
+ state: Status
309
+ version: Versie
310
+ states:
311
+ disabled: Uitgeschakeld
312
+ due: Klaar
313
+ never: Nooit gedraaid
314
+ ran: Gedraaid
315
+ waiting: Wacht
316
+ tasks_table:
317
+ empty_hint_html: Declareer eenmalige taken in <code>config/deploy_tasks.yml</code>; <code>rails generate pgbus:add_deploy_tasks</code> schrijft een startbestand.
318
+ empty_title: Geen deploy-taken gedeclareerd
319
+ headers:
320
+ actions: Acties
321
+ last_run: Laatste run
322
+ queue: Wachtrij
323
+ state: Status
324
+ task: Taak
325
+ version: Versie
326
+ never: Nooit
327
+ toggle:
328
+ disabled: Deploy-taak uitgeschakeld
329
+ enabled: Deploy-taak ingeschakeld
330
+ failed: Omschakelen van de deploy-taak mislukt
331
+ triggered_by:
332
+ manual: Handmatig
333
+ rollover: Uitrol
334
+ version: v%{version}
239
335
  dialogs:
240
336
  cancel: Annuleren
241
337
  confirm: Bevestigen
@@ -617,6 +713,7 @@ nl:
617
713
  nav:
618
714
  batches: Groepen
619
715
  dashboard: Dashboard
716
+ deploy_tasks: Deploy
620
717
  dlq: DLQ
621
718
  events: Evenementen
622
719
  insights: Inzichten
@@ -236,6 +236,102 @@ pt:
236
236
  payload: Carga útil
237
237
  retry: Tentar novamente
238
238
  title: 'Mensagem DLQ #%{id}'
239
+ deploy_tasks:
240
+ banner:
241
+ heading: Transição
242
+ lagging_html:
243
+ one: 'Aguardando a transição: 1 processo ainda não executa <code>%{revision}</code>.'
244
+ other: 'Aguardando a transição: %{count} processos ainda não executam <code>%{revision}</code>.'
245
+ lagging_more: "…e mais %{count}"
246
+ lagging_process: "%{kind}@%{hostname} pid %{pid} em %{revision}"
247
+ live_count: "%{count} em %{revision}"
248
+ live_heading: 'Processos ativos:'
249
+ no_revision_hint_html: Defina <code>config.app_revision</code>, ou uma de <code>PGBUS_REVISION</code>, <code>DASH_VERSION</code> ou <code>KAMAL_VERSION</code>, ou inclua um arquivo <code>REVISION</code>. Executar agora continua funcionando.
250
+ no_revision_html: 'Revisão da aplicação não configurada: as tarefas de deploy aguardam até que esteja.'
251
+ no_revision_label: sem revisão
252
+ no_scheduler_html: 'Nenhum agendador em execução: as tarefas de deploy só são disparadas pelo agendador. Este veredito usa a revisão do próprio painel.'
253
+ no_workers_html: 'Aguardando a transição: ainda nenhum worker em <code>%{revision}</code>.'
254
+ ready_html: 'Transição concluída: cada processo ativo executa <code>%{revision}</code>. Tarefas armadas executam no próximo tick do agendador.'
255
+ unavailable_html: Não foi possível ler o estado da transição.
256
+ default_queue: default
257
+ disable: Desativar
258
+ enable: Ativar
259
+ enqueue:
260
+ enqueued: Tarefa de deploy enfileirada
261
+ failed: 'A tarefa de deploy não foi enfileirada: veja o log para o motivo'
262
+ every_deploy: Em todo deploy
263
+ index:
264
+ task_count:
265
+ one: "%{count} tarefa declarada"
266
+ other: "%{count} tarefas declaradas"
267
+ title: Tarefas de deploy
268
+ not_found: Tarefa de deploy não encontrada
269
+ reasons:
270
+ disabled_armed_html: 'Desativada com uma execução de transição pendente: ative-a para deixá-la executar.'
271
+ disabled_html: 'Desativada: o agendador a ignora.'
272
+ due_html: 'Pronta: executa no próximo tick do agendador.'
273
+ manual_html: "· executada %{ago} (manual)"
274
+ never_html: Nunca executada após uma transição.
275
+ ran_html: Executada %{ago} em <code>%{revision}</code> (transição).
276
+ waiting_lagging_html:
277
+ one: 'Aguardando a transição: 1 processo ainda não executa <code>%{revision}</code>.'
278
+ other: 'Aguardando a transição: %{count} processos ainda não executam <code>%{revision}</code>.'
279
+ waiting_no_revision_html: 'Aguardando: a revisão da aplicação não está configurada.'
280
+ waiting_no_scheduler_html: 'Aguardando: nenhum agendador em execução.'
281
+ waiting_no_workers_html: Aguardando um worker em <code>%{revision}</code>.
282
+ waiting_unknown_html: 'Aguardando: não foi possível ler o estado da transição.'
283
+ run_now: Executar agora
284
+ show:
285
+ armed_html: "%{armed_for}, armada %{ago}"
286
+ back: Voltar
287
+ configuration: Configuração
288
+ labels:
289
+ arguments: Argumentos
290
+ armed: Execução pendente
291
+ command: Comando
292
+ description: Descrição
293
+ job_class: Classe do job
294
+ priority: Prioridade
295
+ queue: Fila
296
+ source: Origem
297
+ last_run: Última execução
298
+ no_runs: Nenhuma execução registrada ainda
299
+ recent_runs: Execuções recentes
300
+ run_headers:
301
+ enqueued_at: Enfileirada em
302
+ queue: Fila
303
+ revision: Revisão
304
+ triggered_by: Disparada por
305
+ version: Versão
306
+ source_config: Arquivo de configuração
307
+ source_dynamic: Dinâmica
308
+ state: Estado
309
+ version: Versão
310
+ states:
311
+ disabled: Desativada
312
+ due: Pronta
313
+ never: Nunca executada
314
+ ran: Executada
315
+ waiting: Aguardando
316
+ tasks_table:
317
+ empty_hint_html: Declare tarefas pontuais em <code>config/deploy_tasks.yml</code>; <code>rails generate pgbus:add_deploy_tasks</code> cria um arquivo inicial.
318
+ empty_title: Nenhuma tarefa de deploy declarada
319
+ headers:
320
+ actions: Ações
321
+ last_run: Última execução
322
+ queue: Fila
323
+ state: Estado
324
+ task: Tarefa
325
+ version: Versão
326
+ never: Nunca
327
+ toggle:
328
+ disabled: Tarefa de deploy desativada
329
+ enabled: Tarefa de deploy ativada
330
+ failed: Falha ao alternar a tarefa de deploy
331
+ triggered_by:
332
+ manual: Manual
333
+ rollover: Transição
334
+ version: v%{version}
239
335
  dialogs:
240
336
  cancel: Cancelar
241
337
  confirm: Confirmar
@@ -617,6 +713,7 @@ pt:
617
713
  nav:
618
714
  batches: Lotes
619
715
  dashboard: Painel
716
+ deploy_tasks: Deploy
620
717
  dlq: DLQ
621
718
  events: Eventos
622
719
  insights: Insights
@@ -236,6 +236,102 @@ sv:
236
236
  payload: Innehåll
237
237
  retry: Försök igen
238
238
  title: 'DLQ-meddelande #%{id}'
239
+ deploy_tasks:
240
+ banner:
241
+ heading: Utrullning
242
+ lagging_html:
243
+ one: 'Väntar på utrullning: 1 process kör ännu inte <code>%{revision}</code>.'
244
+ other: 'Väntar på utrullning: %{count} processer kör ännu inte <code>%{revision}</code>.'
245
+ lagging_more: "…och %{count} till"
246
+ lagging_process: "%{kind}@%{hostname} pid %{pid} på %{revision}"
247
+ live_count: "%{count} på %{revision}"
248
+ live_heading: 'Aktiva processer:'
249
+ no_revision_hint_html: Sätt <code>config.app_revision</code>, eller någon av <code>PGBUS_REVISION</code>, <code>DASH_VERSION</code> eller <code>KAMAL_VERSION</code>, eller leverera en <code>REVISION</code>-fil. Kör nu fungerar fortfarande.
250
+ no_revision_html: 'Appens revision är inte konfigurerad: deploy-uppgifter väntar tills den är det.'
251
+ no_revision_label: ingen revision
252
+ no_scheduler_html: 'Ingen schemaläggare körs: deploy-uppgifter startas bara av schemaläggaren. Bedömningen använder instrumentpanelens egen revision.'
253
+ no_workers_html: 'Väntar på utrullning: ingen worker på <code>%{revision}</code> ännu.'
254
+ ready_html: 'Utrullad: varje aktiv process kör <code>%{revision}</code>. Väntande uppgifter körs vid schemaläggarens nästa tick.'
255
+ unavailable_html: Utrullningsstatusen kunde inte läsas.
256
+ default_queue: default
257
+ disable: Inaktivera
258
+ enable: Aktivera
259
+ enqueue:
260
+ enqueued: Deploy-uppgiften köad
261
+ failed: 'Deploy-uppgiften köades inte: se loggen för orsaken'
262
+ every_deploy: Vid varje deploy
263
+ index:
264
+ task_count:
265
+ one: "%{count} uppgift deklarerad"
266
+ other: "%{count} uppgifter deklarerade"
267
+ title: Deploy-uppgifter
268
+ not_found: Deploy-uppgiften hittades inte
269
+ reasons:
270
+ disabled_armed_html: 'Inaktiverad med en väntande utrullningskörning: aktivera den för att låta den köras.'
271
+ disabled_html: 'Inaktiverad: schemaläggaren hoppar över den.'
272
+ due_html: 'Redo: körs vid schemaläggarens nästa tick.'
273
+ manual_html: "· kördes %{ago} (manuellt)"
274
+ never_html: Har aldrig körts efter en utrullning.
275
+ ran_html: Kördes %{ago} på <code>%{revision}</code> (utrullning).
276
+ waiting_lagging_html:
277
+ one: 'Väntar på utrullning: 1 process kör ännu inte <code>%{revision}</code>.'
278
+ other: 'Väntar på utrullning: %{count} processer kör ännu inte <code>%{revision}</code>.'
279
+ waiting_no_revision_html: 'Väntar: appens revision är inte konfigurerad.'
280
+ waiting_no_scheduler_html: 'Väntar: ingen schemaläggare körs.'
281
+ waiting_no_workers_html: Väntar på en worker på <code>%{revision}</code>.
282
+ waiting_unknown_html: 'Väntar: utrullningsstatusen kunde inte läsas.'
283
+ run_now: Kör nu
284
+ show:
285
+ armed_html: "%{armed_for}, förberedd %{ago}"
286
+ back: Tillbaka
287
+ configuration: Konfiguration
288
+ labels:
289
+ arguments: Argument
290
+ armed: Väntande körning
291
+ command: Kommando
292
+ description: Beskrivning
293
+ job_class: Jobbklass
294
+ priority: Prioritet
295
+ queue: Kö
296
+ source: Källa
297
+ last_run: Senaste körning
298
+ no_runs: Inga körningar registrerade ännu
299
+ recent_runs: Senaste körningar
300
+ run_headers:
301
+ enqueued_at: Köad
302
+ queue: Kö
303
+ revision: Revision
304
+ triggered_by: Startad av
305
+ version: Version
306
+ source_config: Konfigurationsfil
307
+ source_dynamic: Dynamisk
308
+ state: Tillstånd
309
+ version: Version
310
+ states:
311
+ disabled: Inaktiverad
312
+ due: Redo
313
+ never: Aldrig körd
314
+ ran: Körd
315
+ waiting: Väntar
316
+ tasks_table:
317
+ empty_hint_html: Deklarera engångsuppgifter i <code>config/deploy_tasks.yml</code>; <code>rails generate pgbus:add_deploy_tasks</code> skapar en startfil.
318
+ empty_title: Inga deploy-uppgifter deklarerade
319
+ headers:
320
+ actions: Åtgärder
321
+ last_run: Senaste körning
322
+ queue: Kö
323
+ state: Tillstånd
324
+ task: Uppgift
325
+ version: Version
326
+ never: Aldrig
327
+ toggle:
328
+ disabled: Deploy-uppgiften inaktiverad
329
+ enabled: Deploy-uppgiften aktiverad
330
+ failed: Det gick inte att växla deploy-uppgiften
331
+ triggered_by:
332
+ manual: Manuellt
333
+ rollover: Utrullning
334
+ version: v%{version}
239
335
  dialogs:
240
336
  cancel: Avbryt
241
337
  confirm: Bekräfta
@@ -617,6 +713,7 @@ sv:
617
713
  nav:
618
714
  batches: Grupper
619
715
  dashboard: Instrumentpanel
716
+ deploy_tasks: Deploy
620
717
  dlq: DLQ
621
718
  events: Händelser
622
719
  insights: Insikter
data/config/routes.rb CHANGED
@@ -45,6 +45,13 @@ Pgbus::Engine.routes.draw do
45
45
  end
46
46
  end
47
47
 
48
+ resources :deploy_tasks, only: %i[index show] do
49
+ member do
50
+ post :toggle
51
+ post :enqueue
52
+ end
53
+ end
54
+
48
55
  resources :batches, only: %i[index show]
49
56
  resources :processes, only: [:index]
50
57