Skip to content

slack deploy updates manifest before running deploy hook, no rollback on hook failure #301

@jbradbyrd

Description

@jbradbyrd

Description

I'm trying to set up a CI deployment pipeline for a new Python Bolt-based Slack bot. I switched the bot to local manifest mode so that I can keep the dev-only local app's manifest and production deployed app's manifest in sync with the manifest.json in my repo. I am running slack deploy from a GitHub action when changes are pushed to main with a custom deploy hook that performs AWS SSM commands to update the bot instance to the latest version of the code in main.

I noticed is that when running slack deploy, the manifest is updated to Slack's servers before the custom deploy hook runs. If the deploy hook fails, there's no rollback; the manifest remains updated while the actual deployment may not have completed. This creates a potential situation where the deployed code and the manifest become out of sync.

Version

3.10.0

OS Info

Ubuntu 24.04.3 LTS (GitHub Actions runner)

Steps to reproduce:

  1. Configure a custom deploy hook in .slack/hooks.json that exits with a non-zero status
  2. Run slack deploy
  3. Observe that the manifest is updated on Slack's servers
  4. The deploy hook fails
  5. The manifest remains updated despite the overall deploy failing

Expected result:

  • The manifest update should be rolled back if the deploy hook fails, OR
  • The deploy hook should run before the manifest is updated, so failures don't leave a partially-deployed state, OR
  • Some other option that achieves atomic deployment between manifest and code.

Actual result:

The manifest is permanently updated even when the deploy hook fails, leaving the Slack app configuration out of sync with the actual deployed application.

Requirements

  • I've read and understood the Contributing guidelines and have done my best effort to follow them.
  • I've read and agree to the Code of Conduct.
  • I've searched for any related issues and avoided creating a duplicate issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussionM-T: An issue where more input is needed to reach a decisionenhancementM-T: A feature request for new functionalityneeds infoAn issue that is claimed to be a bug and hasn't been reproduced, or otherwise needs more info

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions