git хуки на страже качества кода

65
Git хуки на страже качества кода Павел Матолыгин

Upload: badoo-development

Post on 16-Apr-2017

194 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Git хуки на страже качества кода

Git хуки на страже качества кода

Павел Матолыгин

Page 2: Git хуки на страже качества кода
Page 3: Git хуки на страже качества кода

Release Engineering- Deploy - Jira - Teamcity - Git - AIDA

Page 4: Git хуки на страже качества кода

GIT Gitosis

vcs

Page 5: Git хуки на страже качества кода

1.5kpush/day

15+langs

1.1Mcommits in

all repos

3.3Glagrest repo

size

350users

25GBall repos size

280repos

520Kcommits in largest repo

numbers

Page 6: Git хуки на страже качества кода
Page 7: Git хуки на страже качества кода

git flow- 9 release/week - 20 task/release

Page 8: Git хуки на страже качества кода

git log --graph

Page 9: Git хуки на страже качества кода

problem- WTF is in my git log?

Page 10: Git хуки на страже качества кода

commit & branch

[JIRATASK-111]: Some comment

[master]: [TASK-NUM]: Patch #111 comment

[build]: Merge <branch> in <build_name>

JIRATASK-111_Some_title

branch

commits

Page 11: Git хуки на страже качества кода

genius

Page 12: Git хуки на страже качества кода

git hooks- Script - Bash/Python/PHP/Ruby… - Invoked by git command

Page 13: Git хуки на страже качества кода

git hookspre-commit

prepare-commit-msg commit-msg post-commit

pre-rebase post-checkout

post-merge pre-push

pre-receive post-receive

update

Page 14: Git хуки на страже качества кода

git hookspre-commit

prepare-commit-msg commit-msg post-commit

pre-rebase post-checkout

post-merge pre-push

pre-receive post-receive

update

rebase checkout merge push

clientcommit

Page 15: Git хуки на страже качества кода

rebase checkout merge push

client

server

commit

git hookspre-commit

prepare-commit-msg commit-msg post-commit

pre-rebase post-checkout

post-merge pre-push

pre-receive post-receive

update

Page 16: Git хуки на страже качества кода

prepare-commit-msg- client-side - invoked by git commit - modify commit message

Page 17: Git хуки на страже качества кода

prepare-commit-msg

Page 18: Git хуки на страже качества кода

prepare-commit-msg

Page 19: Git хуки на страже качества кода

prepare-commit-msg

Page 20: Git хуки на страже качества кода

prepare-commit-msg

Page 21: Git хуки на страже качества кода
Page 22: Git хуки на страже качества кода
Page 23: Git хуки на страже качества кода

problem- WTF in my git log? - No control

Page 24: Git хуки на страже качества кода

pre-receive- server-side - invoked by git push - reject changes if fail

Page 25: Git хуки на страже качества кода

pre-receive

<OLD_REVISION> SP <NEW_REVISION> SP <REFNAME> LF b6b36c6 85baa88 refs/heads/master

input

example

Page 26: Git хуки на страже качества кода

pre-receive

([A-Z]+\-[0-9]+)_([a-zA-Z0-9]+[a-zA-Z0-9\-_\.]+)

JIRATASK-111_Some_titlebranch

[JIRATASK-111]: Some comment

commits

\[([A-Z]+\-[0-9]+)\]

Page 27: Git хуки на страже качества кода

CheckMarkers InCommitsMessages

Page 28: Git хуки на страже качества кода

CheckMarkers InCommitsMessages

Page 29: Git хуки на страже качества кода

CheckMarkers InCommitsMessages

Page 30: Git хуки на страже качества кода

CheckBranchName

Page 31: Git хуки на страже качества кода

CheckBranchName

Page 32: Git хуки на страже качества кода

problem- WTF in my git log? - No control

Page 33: Git хуки на страже качества кода

git log --oneline

Page 34: Git хуки на страже качества кода
Page 35: Git хуки на страже качества кода

pre-receiveCheckBranchName CheckMarkersInCommitsMessages

Page 36: Git хуки на страже качества кода

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild

Page 37: Git хуки на страже качества кода

CheckPushBuild

Page 38: Git хуки на страже качества кода

CheckPushBuild

Page 39: Git хуки на страже качества кода

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase

Page 40: Git хуки на страже качества кода

CheckPushMaster

Page 41: Git хуки на страже качества кода

CheckFileNameCase

Page 42: Git хуки на страже качества кода

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase CheckBuildMerges

Page 43: Git хуки на страже качества кода

CheckBuildMerges

Page 44: Git хуки на страже качества кода

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase CheckBuildMerges CheckIssueStatus

Page 45: Git хуки на страже качества кода

CheckIssueStatus

Page 46: Git хуки на страже качества кода

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase CheckBuildMerges CheckIssueStatus CheckFileSize

Page 47: Git хуки на страже качества кода

CheckFileSize

Page 48: Git хуки на страже качества кода

pre-receiveCheckPhpSyntax CheckCRLF CheckPhpCf CheckPhpDocBlock CheckPhpSessionFail CheckPhpUse CheckPhpTrait CheckPhpNs CheckPhpMdkIncludes CheckPhpAutoload

Page 49: Git хуки на страже качества кода

post-receive- server-side - after update ref - code already updated if fail

Page 50: Git хуки на страже качества кода

post-receiveFillCommitsField

Page 51: Git хуки на страже качества кода

FillCommitsField

Page 52: Git хуки на страже качества кода

post-receiveFillCommitsField FillDevelopersField

Page 53: Git хуки на страже качества кода

FillDevelopersField

Page 54: Git хуки на страже качества кода

post-receiveFillCommitsField FillDevelopersField AddCommitsComments

Page 55: Git хуки на страже качества кода

AddCommitsComments

Page 56: Git хуки на страже качества кода

post-receiveFillCommitsField FillDevelopersField AddCommitsComments LinkIssuesWithBuild

Page 57: Git хуки на страже качества кода

LinkIssuesWithBuild

Page 58: Git хуки на страже качества кода

post-receiveFillCommitsField FillDevelopersField AddCommitsComments LinkIssuesWithBuild TriggerBuildMake

Page 59: Git хуки на страже качества кода

TriggerBuildMake

Page 60: Git хуки на страже качества кода

post-receiveFillCommitsField FillDevelopersField AddCommitsComments LinkIssuesWithBuild TriggerBuildMake RunTests

Page 61: Git хуки на страже качества кода

RunTests

Page 62: Git хуки на страже качества кода

RE

QA DEV

writers

Page 63: Git хуки на страже качества кода

git push

Page 64: Git хуки на страже качества кода

summary- GIT hooks - built-in automation - Any* language - Client-side - your assistant - Pre-receive - your firewall - Post-receive - your automation

Page 65: Git хуки на страже качества кода

stay tuned

[email protected] tlgrm.me/defaultpage

habrahabr.ru/company/badoo/ facebook.com/BadooMoscow/ tech.badoo.com

Павел Матолыгин, Release Engineer

Badoo