slackapi / slackapi/slack-cli

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

Open
#301 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

discussion enhancement needs info
Dominant language
Go
Stars
305
Forks
46
Avg merge
1d 11h
Merged PRs (30d)
23

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce with slack deploy using a .slack/hooks.json deploy hook that exits non-zero, and compare manifest.json with the Slack-side manifest before and after failure. Trace the deploy and hook ordering from the CLI entry point; done means a failed hook no longer leaves the manifest and deployed code out of sync, with the chosen behavior covered by a regression test.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, github-actions, go
Domain
cli, cloud, devops
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.