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.json that 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
Description
I'm trying to set up a CI deployment pipeline for a new Python Bolt-based Slack bot. I switched the bot to
localmanifest mode so that I can keep the dev-onlylocalapp's manifest and productiondeployedapp's manifest in sync with themanifest.jsonin my repo. I am runningslack deployfrom a GitHub action when changes are pushed tomainwith a customdeployhook that performs AWS SSM commands to update the bot instance to the latest version of the code inmain.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:
.slack/hooks.jsonthat exits with a non-zero statusslack deployExpected result:
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