A reoccuring problem I run into at work is handling multiple branches on a dev environment comprised of Java, JavaScript, SQL, and SCSS files.
It’s not an ideal scenario, but utilizing Jenkins, the task is fairly easy in the pipeline - you list the branches you want built, you tell it to deploy (or on a schedule) and it runs
through and confirms there is no merge conflicts, before continuing on the pipeline to run the jasmine tests to verify everything is up to snuff on the front-end. Of course, since it’s
Jenkins, I can kick off the build, then head to the console output and watch for an error, or wait for it to fail.
But who has time for that? In that time, three new JavaScript frameworks were released, and one failed, and the other already replaced Angular!
Also, as the code example lives in a gist - my entry may not always match the code (which will be the most up-to-date version).
What this script does:
for my needs, it checks out develop and pulls to be sure it’s up to date
create a branch test-merge that is appended with the day/month/seconds
we reference a branches.txt file that holds the branches (each branch on a new line)
for each branch:
ignores any # comments
fetches the branch
we merge (using refs/remotes/origin/ so we don’t need to check out each branch locally)
output “SUCCESS” or “FAIL” to build-result.txt
output the content of build-result.txt
we grep against the file to check if “FAIL” is present
remove build-result.txt
checkout develop and delete test-merge
What it still needs to do:
Stash and save the current code (in case you haven’t committed yet) and apply when you’re done
run from the current branch (saving the current branch, switching to develop, and switching back to your original branch)
fix the issue where it’s applying to develop, requiring a reset
This file contains hidden or 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