This repository represents a Git workflow, simplified through a series of actions displayed in a flowchart. The setup aligns with a basic Git flow, enabling us to maintain an agile and robust codebase.
The repository employs actions designed to follow a standard Git flow. This flow is organized into three main processes:
-
Development Process 🚧 Developers create
feature/
orbugfix/
branches fromdevelop
. Once complete, changes are pushed back via a pull request, ensuring quality through code reviews and approvals. -
Release Process 📢 A new
release/
orhotfix/
branch is manually created. Version numbers are automatically updated - minor forrelease/
and patches forhotfix/
. After QA testing, these branches merge intomain
. -
Deployment Process 🚀 Automated workflows handle deployment to STAGE 🧪 and PROD 🎬 environments. The
main
branch is tagged and released on GitHub before deployment.
Manual triggers allow for a hotfix/
or release/
initiation, while automatic version bumping ensures smooth progression. By integrating these workflows, we provide a streamlined approach for code development, review, release, and deployment.
graph TB
subgraph "🎁 Product"
subgraph release ["📢 Release Process"]
direction TB
subgraph repo ["😺 GH workflow"]
direction TB
A{{"🌳 main"}}
tag>"🤖🔖 Tag -> 📣 Release -> ⏩ Sync -> 🚀 Deploy"]
end
subgraph "🛎️ Manual Triggers"
Hf[/"👆♨️ Dispatch hotfix "/]
nR[/"👆🔖 Dispatch next release"/]
end
subgraph automated["🤖 Auto bump & ✂️ branch"]
Ab{{"🌳 main v1.0.0"}}
H>"♨️ hotfix/v1.0.1"]
Db{{"🌿 develop v1.0.0"}}
R>"🔖 release/v1.1.0"]
Hf
==>
Ab
=="🤖✂️ npm version patch"==>
H
nR
==>
Db
=="🤖✂️ npm version minor"==>
R
end
end
direction TB
subgraph develop ["🚧 Development Process"]
D{{"🌿 develop"}}
=="👨💻 git checkout -b"==>
FB>"✨ feature/🐛 bugfix/"]
=="🤖 on push:
✨🐛 [PR] > develop "==>
pr{"👌 PR Approved?"}
pr -."👨💻🔧
Code
Review
Feedback".-> FB
pr -."👆✅ Approve & Merge 🔀".-> D
end
H-.->|"👆🔀 Merge patch"|A
subgraph deploy ["🚀 Deployment Process"]
direction LR
S((("STAGE 🧪")))
D ==> |"🤖 on push:
🚀 Deploy STAGE"|S
subgraph "STAGE 🧪"
direction LR
S
T
end
subgraph "PROD 🎬"
direction LR
P((("PROD 🎬")))
BT("🐛 New Ticket")
tag ==> |"🤖 🚀 Deploy PROD"|P
end
R ==>
|"🏗️ Passed QA Merge"|A
==>
|"🤖 on push"|tag
-.->
|"🤖⏩ Synchronize Dev"|D
T("🛠️ Reject Ticket")
P -.-> |"🕵️ QA Tests"|BT
S -.-> |"🕵️ QA Changes"|T
end
end
-
The
main
branch 🌳 represents the current state of our 🎬 production code. Every commit tomain
mirrors a released version of the product. -
Hotfixes ♨️ are constructed from the
main
branch and once completed, merged back into it. This workflow ensures that our production code remains up-to-date with any critical fixes. -
Any updates committed to the
main
branch are automatically synchronized to thedevelop
branch 🌿 by our trusty bot 🤖. This sync maintains consistency between our production and development codebases. -
Feature enhancements ✨ and bugfixes 🐛 branch from
develop
and, once completed, are merged back intodevelop
. This workflow allows for continuous integration and delivery. -
All releases 🔖 are derived from the
develop
branch and deployed first to the staging environment 🧪 for rigorous testing and quality assurance. -
Once a
release
passes QA testing 🧑🔧, it gets merged intomain
, aligning the production code with the latest version. -
Updates to the
main
branch trigger a sequence of actions: tagging 🔖, releasing 📣, publishing 📦 on GitHub, and deploying to production 🎬 as necessary. -
Version bumping is fully automated through our actions, ensuring consistency and reducing manual error.
-
PRs are automatically created when branches with a prefix of
feature/
orbugfix/
are pushed. This feature streamlines the code review process. -
Two manual workflows exist to initiate a hotfix ♨️ or release 🔖, providing us with control over these critical processes when necessary.
- 🤖📣 Announce Release: Announces a new release on GitHub corresponding to the version found in package.json.
- 🤖🏭 Build: Executes
npm ci
,npm run test
, andnpm run build
commands. - 🆕 Changelog CI: Generates a comprehensive changelog.
- 🤖🚀 Deploy Production 🎬: Deploys the application to the production environment.
- 🤖🚀 Deploy Staging 🧪: Deploys the application to the staging environment.
- 👆♨️ Dispatch hotfix branch: Initiates a
hotfix/
branch and auto-bumps thepatch
number. - 👆🔖 Dispatch next minor release: Initiates a
release/
branch and auto-bumps theminor
number. - 👆🔖 Dispatch next major release: Initiates a
release/
branch and auto-bumps themajor
number. - 🤖🐛 [PR] bugfix > develop: Auto-generates a PR to
develop
branch when abugfix/
branch is pushed. - 🤖✨ [PR] feature > develop: Auto-generates a PR to
develop
branch when afeature/
branch is pushed. - 🤖📦 Publish Release: Executes
npm ci
,npm run build
, andnpm publish
commands. - 🤖⏩ Synchronize develop: Syncs
develop
branch with any updates tomain
. - 🤖🔖 Tag main: Tags the repo using the
version
found inpackage.json
, announces the release,