Last active
January 23, 2020 00:07
-
-
Save andrewchilds/ec21ed21733aff1bb7311bad46533907 to your computer and use it in GitHub Desktop.
Clubhouse/git/deploy utility functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Clubhouse / git / deploy utility functions | |
# | |
# API docs: https://clubhouse.io/api | |
# | |
# Assuming the following: | |
# 1. We have a range of git commits that represent the changes being deployed | |
# 2. Our git branches and pull requests use the username/ch123/story-name format, | |
# so that "ch123" ends up in a commit message | |
# 3. We have a Clubhouse API token set to the $CLUBHOUSE_API_TOKEN environment variable | |
# | |
# Then we can get a list of Clubhouse stories related to this deploy and update them | |
# in some way. In this case, we're moving the stories to a "Deployed" workflow state, | |
# but we could make any number of updates using the Clubhouse API. | |
# | |
# Example usage: | |
# | |
# START_SHA="87d4fed" # Previous deploy commit | |
# END_SHA="2d5b22d" # New deploy commit | |
# | |
# git log $START_SHA..$END_SHA --oneline | |
# > 2d5b22d Merge pull request #123 from clubhouse/ac/ch456/my-story-name | |
# > e730351 Fix bug | |
# | |
# # Move stories to deployed: | |
# | |
# clubhouse_move_stories_to_deployed $START_SHA $END_SHA | |
# > Moving Story 456 to Deployed. | |
# | |
# # Move stories to deployed and post a comment: | |
# | |
# clubhouse_move_stories_to_deployed $START_SHA $END_SHA "This story was deployed as part of $DEPLOY_ID." | |
# > Moving Story 456 to Deployed. | |
DEPLOYED_STATE_ID="123" | |
function clubhouse_find_stories_in_commit_range { | |
START_SHA="$1" | |
END_SHA="$2" | |
git log $START_SHA..$END_SHA --oneline | grep -io 'ch[0-9]*' | sed 's/[^0-9]*//g' | uniq | |
} | |
function clubhouse_move_story_to_workflow_state { | |
STORY_ID="$1" | |
WORKFLOW_STATE_ID="$2" | |
curl -X PUT \ | |
-H "Content-Type: application/json" \ | |
-d "{ \"workflow_state_id\": $WORKFLOW_STATE_ID }" \ | |
-L "https://api.clubhouse.io/api/v1/stories/$STORY_ID?token=$CLUBHOUSE_API_TOKEN" | |
} | |
function clubhouse_add_comment_to_story { | |
STORY_ID="$1" | |
COMMENT_TEXT="$2" | |
curl -X POST \ | |
-H "Content-Type: application/json" \ | |
-d "{ \"text\": \"$COMMENT_TEXT\" }" \ | |
-L "https://api.clubhouse.io/api/v1/stories/$STORY_ID/comments?token=$CLUBHOUSE_API_TOKEN" | |
} | |
function clubhouse_move_stories_to_deployed { | |
START_SHA="$1" | |
END_SHA="$2" | |
COMMENT_TEXT="$3" | |
for STORY_ID in $(clubhouse_find_stories_in_commit_range $START_SHA $END_SHA); do | |
if [ -n "$STORY_ID" ]; then | |
echo "Moving Story $STORY_ID to Deployed." | |
clubhouse_move_story_to_workflow_state $STORY_ID $DEPLOYED_STATE_ID | |
# And if you want to post a comment with more information: | |
if [ -n "$COMMENT_TEXT" ]; then | |
clubhouse_add_comment_to_story $STORY_ID "$COMMENT_TEXT" | |
fi | |
fi | |
done | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment