`slack deploy` updates manifest before running deploy hook, no rollback on hook failure
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 38/100
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.
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:
- Configure a custom deploy hook in
.slack/hooks.jsonthat exits with a non-zero status - Run
slack deploy - Observe that the manifest is updated on Slack's servers
- The deploy hook fails
- 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.
- Dominant language
- Go
- Stars
- 305
- Forks
- 46
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 23
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from slackapi/slack-cli
-
Installer aborts on an existing same-named `slack` binary; prefer install + warning over hard abort Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
bug build release
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
area:bolt-python bug
Difficulty 3/5 1-2 days Newbie friendliness 55/100
-
build code health
Difficulty 3/5 1-2 days Newbie friendliness 55/100
-
enhancement semver:minor
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in slackapi/slack-cli
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 84/100
-
enhancement needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
kind/cleanup
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
kubernetes-sigs/kueue#15947 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
sympozium-ai/sympozium#627 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100