Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Unable to detect rollbacks during "docker stack deploy" in CI/CD

オープン
#6,752 コメント 1 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
42/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
docker, go
領域
ci-cd, cli

調査の方向性

まず、サービス更新とロールバックの処理における docker stack deploy --detach=false の流れを追跡し、コマンドが終了ステータスをどのように決定するかに注目します。提供された docker-compose.yml の healthcheck 失敗でこの動作を再現し、CI/CD に適したゼロ以外のステータスでロールバックが報告されることを確認します。

索引モデルが issue の本文から書いたものです。

説明

area/stack area/swarm kind/feature status/0-triage
Description

We're running a docker stack deploy ... in CI/CD to deploy apps. When a service isn't updated successfully and a rollback is triggered, the deploy command still exits with code 0 indicating everything is fine. I haven't found a way to let it exit with another code, so the CI/CD pipeline can react on the deployment error (the rollback).

$ docker stack deploy --detach=false -c docker-compose.yml test-rollback
Updating service test-rollback_web (id: ximv0s6r8fgd17mdh6d100yuk)
overall progress: rolling back update: 2 out of 2 tasks
1/2: running   [==================================================>]
2/2: running   [==================================================>]
rollback: update rolled back due to failure or early termination of task 8jej8t73el7cgty3t5s4l6gwp
verify: Service ximv0s6r8fgd17mdh6d100yuk converged
$ echo $?
0

Used docker-compose (first deploy it with exit 0 in the healthcheck, then edit to exit 1 to get a rollback on the next deployment):

$ cat docker-compose.yml
services:
  web:
    image: nginx:alpine
    deploy:
      replicas: 2
      update_config:
        order: start-first
        failure_action: rollback
        monitor: 5s
        parallelism: 1
      restart_policy:
        condition: any
    healthcheck:
      # guaranteed to fail
      test: ["CMD", "sh", "-c", "exit 1"]
      interval: 2s
      timeout: 1s
      retries: 2
主要言語
Go
スター
6.1k
フォーク
2.2k
平均マージ
1日 10時間
マージ済み PR(30日)
47

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

docker/cli のほかの issue

docker/cli の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。