Last active
March 28, 2021 17:56
-
-
Save peteruhnak/bfb8bac6b6de89e67ef0eb561eba51cb to your computer and use it in GitHub Desktop.
Iceberg git release with tags
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
" | |
Release 'master' branch of <repoName>: | |
1. merge it into release_base repository | |
2. adjust baseline if necessary | |
3. commit & push to origin/release_base | |
4. multi-tag with SEMVER (v1.2.3, v1.2.x, v1.x) | |
5. delete & push remote tags | |
" | |
"[MODIFY] repo to process" | |
repoName := 'uml-shapes'. | |
"[MODIFY] new release version" | |
newTag := #(2 0 3). | |
"finding repository" | |
repo := IceRepository registry detect: [ :each | each name = repoName ]. | |
repoModel := IceTipRepositoryModel on: repo. | |
"grab remote branch" | |
remoteBranch := repo allBranches detect: [ :b | b name = 'origin/release_base' ]. | |
remoteBranchModel := IceTipBranchModel repositoryModel: repoModel on: remoteBranch. | |
"if not available locally, yet, checkout remote" | |
repo allBranches | |
detect: [ :b | b name = 'release_base' ] | |
ifNone: [ |remoteBranch remoteBranchModel| | |
"perform checkout via GUI" | |
remoteBranchModel previewCheckout. | |
]. | |
"grab local release_base" | |
releaseBranch := repo allBranches detect: [ :b | b name = 'release_base' ]. | |
releaseBranchModel := IceTipBranchModel repositoryModel: repoModel on: releaseBranch. | |
"perform checkout via GUI" | |
releaseBranchModel previewCheckout. | |
"pull to ensure it is up to date" | |
releaseBranch pullFrom: remoteBranch remote. | |
"get master branch" | |
masterBranch := repo allBranches detect: [ :b | b name = 'master' ]. | |
masterBranchModel := IceTipBranchModel repositoryModel: repoModel on: masterBranch. | |
"merge master branch into the currently checked-out (which is the release branch)" | |
masterBranchModel previewMerge: IceTipMergeType direct. | |
" | |
[MODIFY] MAKE NECESSARY CHANGES BY HAND IN THE BASELINE/CODE | |
" | |
"commit via GUI" | |
(IceTipCommitBrowser onRepository: repo) openWithSpec. | |
"push the changes to GitHub" | |
releaseBranch pushTo: remoteBranch remote. | |
"preparing tags" | |
commitToTag := releaseBranch commit. | |
tags := repo tags. | |
"conversion util" | |
verToTag := [ :t | 'v', (t joinUsing: '.') ]. | |
"create patch tag v1.2.3" | |
patchTag := verToTag value: newTag. | |
tags detect: [ :t | t name = patchTag ] ifFound: [ :t | self error: 'Patch tag ', patchTag, ' already exists' ]. | |
commitToTag createTag: patchTag. | |
"create minor tag v1.2.x" | |
minorTag := verToTag value: (newTag first: 2), { 'x' }. | |
tags detect: [ :t | t name = minorTag ] ifFound: [ :t | repo removeTag: t ]. | |
commitToTag createTag: minorTag. | |
"create major tag v1.x" | |
majorTag := verToTag value: { newTag first. 'x' }. | |
tags detect: [ :t | t name = majorTag ] ifFound: [ :t | repo removeTag: t ]. | |
commitToTag createTag: majorTag. | |
"[EXTERNAL] execute in command line to clean & push tags" | |
String << [ :s | | |
s << 'pushd "' << repo location fullName << '"'. | |
s lf. | |
s << ('git push --delete origin {1} {2}' format: { minorTag. majorTag }). | |
s lf. | |
s << 'git push --tags' | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment