Gå till slutet av bannern
Gå till början av bannern

Hur vi jobbar med Git och release

Hoppa till slutet på meta-data
Gå till början av metadata

Du visar en gammal version av den här sidan. Visa nuvarande version.

Jämför med nuvarande Visa sidhistorik

« Föregående Version 14 Nästa »

Processen

Denna sidan behövs brytas ner till flera undersidor

Processen övergripande

Git flow exempel hämtade från:

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

http://nvie.com/posts/a-successful-git-branching-model/

http://danielkummer.github.io/git-flow-cheatsheet/

 

Övergripande om processen

  • Branchen master innehåller endast taggade produktions-releaser.
  • Branchen develop är där ny funktionalitet införs (integration branch)

 

  • Varje feature utvecklas i en egen branch med develop som ursprunglig branch.
  • När en feature är klar mergas den tillbaka in i develop.
  • När branchen develop innehåller tillräckligt med features för en release, skapas en release-branch, och samtidigt startas utvecklingen för nästa release.
  • release-branch görs endast bug-fixar och dokumentationsuppdateringar.
  • När den release-branch är redo att skeppas, mergas den till master och taggas med version, efter det mergas ändringar till develop.
  • En support branch är en långlivad 'master-branch' för en viss version.

Namnkonventioner

develop-branch: develop

release-branch: release/v<version>, tex release/v2.3.0

feature-branch: feature/<JIRA nr>, tex feature/SKLTP-123

hotfix-branch: hotfix/<JIRA nr>, tex hotfix/SKLTP-123

support-branch: support/<version>, tex support/v.2.3.0

tag: <version>, tex v2.3.0

kommentar: ex SKLTP-123: Loggning av payload skall vara konfigurerbar av/på

SKLTP/NTjP/Inera's Informationstjänster git branch mot driftmiljö

Git flow processen och exempel med git-flow installerat

Nedan exempel med verktyget git-flow och motsvarande git kommandon om man inte har tillgång till verktyget

https://github.com/nvie/gitflow

https://github.com/nvie/gitflow/wiki/Command-Line-Arguments

Git flow motsvarande git command

https://gist.github.com/JamesMGreene/cdd0ac49f90c987e45ac

Release version hantering (pom filer och taggar)

Installera verktyget git flow

Git flow kommer med git installation (verifierat på Windows)

Git flow första gången

Git flow krävs att man kör init det första gången. Med parametrar -d tar det default konfiguration.

─$ git flow init -d

Införa ny funktionalitet (feature branch)

Starta en feature branch

─$ git flow feature start SKLTP-123
Switched to a new branch 'feature/SKLTP-123'
Summary of actions:
- A new branch 'feature/SKLTP-123' was created, based on 'develop'
- You are now on branch 'feature/SKLTP-123'
Now, start committing on your feature. When done, use:
     git flow feature finish SKLTP-123

Dela en feature branch

Obs: Om ni har gjort ändringar innan publish/push då ni måste pusha kod först till remote.

╰─$ git flow feature publish
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:skltp-aggregerandetjanster/riv.clinicalprocess.healthcond.basic.GetAggregatedObservation.git
 * [new branch]      feature/SKLTP-123 -> feature/SKLTP-123
Already on 'feature/SKLTP-123'
Your branch is up-to-date with 'origin/feature/SKLTP-123'.
Summary of actions:
- A new remote branch 'feature/SKLTP-123' was created
- The local branch 'feature/SKLTP-123' was configured to track the remote branch
- You are now on branch 'feature/SKLTP-123'


Färdigställ en feature branch

╰─$ git flow feature finish
Switched to branch 'develop'
Already up-to-date.
Deleted branch feature/SKLTP-123 (was 039205e).
Summary of actions:
- The feature branch 'feature/SKLTP-123' was merged into 'develop'
- Feature branch 'feature/SKLTP-123' has been removed
- You are now on branch 'develop'

Göra en release (release branch)

Starta en release branch

Ersätt x.x.x med lämplig version nummer. 

Man kan bara ha en release branch åt gången.

─$ git flow release start x.x.x
Switched to a new branch 'release/x.x.x'
Summary of actions:
- A new branch 'release/x.x.x' was created, based on 'develop'
- You are now on branch 'release/x.x.x
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
- When done, run:
     git flow release finish 'x.x.x'

Stega upp version i källkoden (pom.xml) genom att köra update-versions och slutföra med git flow release publish så att andra utvecklare kan se den

╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:update-versions -DdevelopmentVersion=x.x.x-RC1-SNAPSHOT 
╰─$ git commit -a -m "Updated pom version to RC1-SNAPSHOT"
╰─$ git flow release publish

Release RC version:er 

╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare -DtagNameFormat=@{project.version}
 
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform -Darguments="-Dmaven.deploy.skip=true"
	eller om man har behörighet att checka in på Nexus
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform

Release utan RC version:er. Final release. 

Obs: Stega upp version i källkoden (pom.xml) genom att ange nästa utvecklingscykel till x.x+1.x-SNAPSHOT (exempel: 1.1.0-SNAPSHOT)

╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare -DtagNameFormat=@{project.version}
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform -Darguments="-Dmaven.deploy.skip=true"
	eller om man har behörighet att checka in på Nexus
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform

Färdiställ release branch, 

-n ska undvika skapa tag på master och -p ska pusha

╰─$ git flow release finish -n -p
.....
.....
Summary of actions:
- Release branch 'release/1.0.0' has been merged into 'master'
- Master branch 'master' has been back-merged into 'develop'
- Release branch 'release/1.0.0' has been locally deleted; it has been remotely deleted from 'origin'
- 'develop', 'master' and tags have been pushed to 'origin'
- You are now on branch 'develop'

Göra en rättning på en publicerad release (hotfix branch)

En hotfix branch får endast göras för senaste release:en annars bör man göra en support branch.

Påbörja en hotfix branch

╰─$ git flow hotfix start x.x.x

Färdigställ en hotfix branch

╰─$ git flow hotfix finish

Skapa en långlivad support branch för att kunna rättningar på äldre versioner (support branch)

Påbörja en långlivad support branch

Endast från tags/

╰─$ git flow support start 1.0.0 tags/1.0.0

Stega upp version i källkoden (pom.xml) genom att köra update-versions och slutföra med git push. Hantera denna branch som en vanlig branch.

╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:update-versions -DdevelopmentVersion=1.0.1-RC1-SNAPSHOT 
╰─$ git commit -a -m "Updated pom version to RC1-SNAPSHOT"
╰─$ git push origin support/1.0.0

Fortsätta göra release:er från den här branch:en och skapa taggar varje gång man gör release. Som sagt är det en långlivad branch och behövs en merge till develop får man göra det manuellt.

  • Inga etiketter