Insights for Software Development Workflows from the Pacific Islands
Talofa! I came across an interesting video on how enterprise software development workflows might work. I found that I was using a hybrid of techniques mentioned which aligned well given that it was showing how BIG companies with teams of developers would develop software. We have a few software developers at SPREP but mostly work on our own projects. I thought I would reflect on my workflow as it is something that I've built up over time from research and collaboration with other developers.
Tests, Continuous Integration/ Continuous Deployment (CI/CD)
My workflow involves setting up tests from the get go and putting them into Gitlab CI pipelines. This gives me confidence that the system builds and I'm not breaking stuff I already fixed. Here is an example of how I would set up a Drupal project with style tests and a Github Action for running them.
Feature building with Git branches
I build features using git branches. If I have an urgent requirement or fix, I can switch to another branch and work on them without worrying my incomplete work will break the system. I use branch prefixes to differentiate between features, fixes and enhancements.
Multiple deployment environments
Once CI passes I deploy them to a staging environment with a recent copy of the production server for some more tests and maybe feedback from users.
Git tags for tracking production code
Lastly I merge accepted features into the main branch. The main branch is used as the starting point for any new features, fixes or enhancements. Once I'm ready to release a new version to production I will tag the latest commit using semantic versioning and deploy to production. Tags allow me to easily track what is in production and under development/ review.
Hot fixes, bugs and more testing
I create hot fix branches on prod if an urgent fix is needed or cant reproduce a bug in my local development environment. Recently Ive started writing tests that reproduce the bug before trying to fix it to save me from manual testing after I fix something
Comments
Post a Comment