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 2 Nästa »

Processen

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

Installera verktyget git-flow

Om du som utvecklare väljer att inte installera git-flow enligt ovan så kan man använda git kommandon för att uppnå samma resultat. Dessa beskrivs separat längs ner på sidan.

Brew on mac
$ brew install git-flow
 
Linux
$ apt-get install git-flow
 
Windows (Cygwin, wget, util-linux)
$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

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

╰─$ git-flow feature publish SKLTP-123
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 SKLTP-123
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

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

Stega upp version i källkoden (pom.xml)

Från maven-release-plugin 2.1.0 finns möjlighet att sätta konfiguration som underlättar releaser till Git. Rekommenderade versioner på maven-release-plugin är 2.3.2 eller 2.5.1 (ej 2.4).


tagNameFormat, överlagra default namnsättning på version för att tex sätta v.1.0.0
pushChanges, 
localCheckout, 
autoVersionSubmodules, 
pom.xml
<build>
	<pluginManagement>
		<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.4.1</version>
                <configuration>
					<autoVersionSubmodules>true</autoVersionSubmodules>
					<tagNameFormat>v@{project.version}</tagNameFormat>
                    <pushChanges>false</pushChanges>
					<localCheckout>true</localCheckout>
                </configuration>
            </plugin>
		</plugins>
	</pluginManagement>
</build>
╰─$ mvn release:prepare
---
---
---
╰─$ mvn release:perform

Verifiera att versionen stegats upp och taggats korrekt i git

╰─$ git stauts
On branch release/v1.0.0
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
	modified:   pom.xml
╰─$ git tag
v1.0.0-RC1

Dela ut release branchen så att andra utvecklare kan se den

╰─$ git-flow release publish v1.0.0

Färdiställ release branch

╰─$ git-flow release finish v.1.0.0
--
--
 
╰─$ git push --tags

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

Påbörja en hotfix branch

╰─$ git-flow hotfix start v.2.3.1

Färdigställ en hotfix branch

╰─$ git-flow hotfix finish v.2.3.1

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

╰─$ git-flow support start v.2.3.0

 

Git flow processen och exempel utan git-flow installerat

Hämta ut develop branchen där utveckling sker

git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop

Införa ny funktionalitet (feature branch)

Starta en feature branch

git checkout -b feature/SKLTP-123 develop

Dela en feature branch

git push -u origin feature/SKLTP-123

Färdigställ en feature branch

git pull origin develop
git checkout develop
git merge --no-ff feature/SKLTP-123
git push
git branch -d feature/SKLTP-123

Göra en release (release branch)

Starta en release branch

git checkout -b release/2.3.0 develop

Stega upp version i källkoden (pom.xml)

Från maven-release-plugin 2.1.0 finns möjlighet att sätta konfiguration som underlättar releaser till Git. Rekommenderade versioner på maven-release-plugin är 2.3.2 eller 2.5.1 (ej 2.4).


tagNameFormat, överlagra default namnsättning på version för att tex sätta v.1.0.0
pushChanges, 
localCheckout, 
autoVersionSubmodules, 
pom.xml
<build>
	<pluginManagement>
		<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.4.1</version>
                <configuration>
					<autoVersionSubmodules>true</autoVersionSubmodules>
					<tagNameFormat>v@{project.version}</tagNameFormat>
                    <pushChanges>false</pushChanges>
					<localCheckout>true</localCheckout>
                </configuration>
            </plugin>
		</plugins>
	</pluginManagement>
</build>
╰─$ mvn release:prepare
---
---
---
╰─$ mvn release:perform

Verifiera att versionen stegats upp och taggats korrekt i git

╰─$ git stauts
On branch release/v2.3.0
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
	modified:   pom.xml
╰─$ git tag
v2.3.0-RC1

Dela ut release branchen så att andra utvecklare kan se den

git push -u origin release/v2.3.0

Färdiställ release branch

git checkout master
git merge --no-ff release/vp-2.3.0
git push

git checkout develop
git merge --no-ff release/2.3.0
git push

git branch -d release/2.3.0
 
git tag -a 2.3.0 -m "2.3.0 release" master
git push --tags

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

Påbörja en hotfix branch

git checkout -b hotfix/SKLTP-112 develop

Färdigställ en hotfix branch

git checkout master
git merge --no-ff hotfix/SKLTP-112
git push

git checkout develop
git merge --no-ff hotfix/SKLTP-112
git push

git branch -d hotfix/SKLTP-112
 
git tag -a 2.3.1 -m "2.3.1 release with hotfix SKLTP-122" master
git push --tags

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

Skapa en långlivad support branch

git checkout -b support/v2.3.0 master

 

 

  • Inga etiketter