Advanced CI/CD and release management scripts demonstrating professional-grade automation and semantic versioning strategies.
- π’ Semantic Versioning
- π Cross-Platform Version Management
- ποΈ Automated Release Workflows
- π Verbose Logging and Debugging
- Scripts
- Merge Strategy
- Cherry-pick Strategy
- Other scripts
- Quick Navigation
- Quick Commands Cheat Sheet
This bash script automates semantic version incrementation based on merged pull request commits. It follows conventional commit guidelines to determine version bump type (major, minor, or patch).
sh semantic-versioning_merge-strategy.sh <version> <date> <branch> [--verbose]<version>: Current semantic version (e.g.,1.2.3)<date>: Date to check merged PRs from<branch>: Target branch to check merged PRs[--verbose]: Optional flag for detailed logging
- Major Bump: Commit contains "BREAKING CHANGE"
- Minor Bump: Commit starts with "feat:"
- Patch Bump: Commit starts with "fix:" or "perf:"
sh semantic-versioning_merge-strategy.sh 1.0.0 2024-01-01 main --verboseA bash script that automatically generates release notes by fetching and documenting merged pull requests from a specified GitHub branch.
- Fetch merged pull requests for a target branch
- Generate a markdown release notes file
- Supports custom branch and date range
- Validates required CLI tools (gh, jq)
sh ./generate-release-notes_merge-strategy.sh [target_branch] [merged_since_date]target_branch: Target GitHub branch (default:main)merged_since_date: Date to fetch merged PRs from (default: previous day)
# Generate release notes for develop branch since specific date
./generate-release-notes_merge-strategy.sh develop 2024-01-01merged_prs.txt: List of merged pull requestsRELEASE_NOTES.md: Markdown-formatted release notes
This bash script automates semantic version incrementation based on cherry-picked commits between two branches. It follows conventional commit guidelines to determine version bump type (major, minor, or patch).
sh semantic-versioning_cherry-pick-strategy.sh <version> <base> <branch> [--verbose]<version>: Current semantic version (e.g.,1.2.3)<base>: Base branch to compare from<branch>: Target branch to check cherry-picked commits[--verbose]: Optional flag for detailed logging
- Major Bump: Commit contains "BREAKING CHANGE"
- Minor Bump: Commit starts with "feat:"
- Patch Bump: Commit starts with "fix:" or "perf:"
- Identifies cherry-picked commits between branches
- Color-coded verbose logging
- Supports various commit message formats
When --verbose is used, the script provides:
- List of cherry-picked commits
- Color-coded commit message analysis
- Detailed version bump information
sh semantic-versioning_cherry-pick-strategy.sh 1.0.0 main develop --verboseA bash script that generates release notes by comparing commits between two git branches using cherry-pick strategy.
- Automatically detect current branch
- Compare commits between target and current branches
- Generate markdown release notes
- Supports custom branch selection
sh ./generate-release-notes_cherry-pick-strategy.sh [target_branch] [current_branch]target_branch: Base branch to compare from (default:main)current_branch: Branch to compare against (default: current branch)
# Generate release notes for specific branches
./generate-release-notes_cherry-pick-strategy.sh main developmerged_prs.txt: List of commits between branchesRELEASE_NOTES.md: Markdown-formatted release notes
A bash script that transforms raw release notes by adding hyperlinks and formatting commit and PR references.
- Base64 decoding of input
- Add GitHub commit links
- Add ClickUp task links
- Add GitHub PR links
- Preserve multiline formatting
sh ./format-release-notes.sh "<base64_encoded_pr_list>"base64_encoded_pr_list: Base64 encoded list of PRs/commits to format
-
Commit Hash Links
abcd1234β[abcd1234](https://github.com/sulhadin/devops-workflow-toolkit/commit/abcd1234)
-
ClickUp Task Links
#taskabcdβ[#taskabcd](https://app.clickup.com/t/taskabcd)
-
GitHub PR Links
(#123)β[#123](https://github.com/sulhadin/devops-workflow-toolkit/pull/123)
# Encode your PR list
base64_pr_list=$(echo "My PR list" | base64)
# Format release notes
./format-release-notes.sh "$base64_pr_list"A bash script to update version across multiple platforms in a React Native project:
- iOS (Xcode)
- Android (Gradle)
- Version JSON file
sh react-native-update-app-version.sh <new_version><new_version>: New semantic version (e.g.,1.2.3)
- Automatic version bump for iOS and Android
- Handles both version and build number
- Updates version JSON
- Supports staging configurations
- Updates
Info.plist - Uses
xcrun agvtool - Supports separate staging configuration
- Increments build number or updates full version
- Updates
build.gradle - Modifies version name and version code
- Resets build number when version changes
- Updates version in
version.json
# Update to version 2.0.0
sh react-native-update-app-version.sh 2.0.0| Script | Type | Purpose | Shortcut |
|---|---|---|---|
| Semantic Versioning (Merge Strategy) | π’ Versioning | Increment version based on merged PRs | semantic-versioning_merge-strategy.sh |
| GitHub Release Notes Generator | π Documentation | Generate markdown release notes | generate-release-notes_merge-strategy.sh |
| Semantic Versioning (Cherry-Pick Strategy) | π’ Versioning | Increment version via cherry-picked commits | semantic-versioning_cherry-pick-strategy.sh |
| Cherry-Pick Release Notes Generator | π Documentation | Compare commits between branches | generate-release-notes_cherry-pick-strategy.sh |
| Release Notes Formatter | π Formatting | Add hyperlinks to release notes | format-release-notes.sh |
| React Native Version Updater | π± Cross-Platform | Update versions for mobile platforms | react-native-update-app-version.sh |
| Category | Command | Description |
|---|---|---|
| Version Bump (Merge) | sh semantic-versioning_merge-strategy.sh 1.0.0 2024-01-01 main |
Increment version from merged PRs |
| Release Notes (Merge) | sh generate-release-notes_merge-strategy.sh main |
Generate notes for main branch |
| Version Bump (Cherry-Pick) | sh semantic-versioning_cherry-pick-strategy.sh 1.0.0 main develop |
Increment version from cherry-picks |
| Release Notes (Cherry-Pick) | sh generate-release-notes_cherry-pick-strategy.sh main develop |
Generate notes between branches |
| Mobile Version Update | sh react-native-update-app-version.sh 2.0.0 |
Update mobile app versions |