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

Post on 16-Apr-2017

196 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

GIT Gitosis

vcs

1.5kpush/day

15+langs

1.1Mcommits in

all repos

3.3Glagrest repo

size

350users

25GBall repos size

280repos

520Kcommits in largest repo

numbers

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

git log --graph

problem- WTF is in my git log?

commit & branch

[JIRATASK-111]: Some comment

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

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

JIRATASK-111_Some_title

branch

commits

genius

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

git hookspre-commit

prepare-commit-msg commit-msg post-commit

pre-rebase post-checkout

post-merge pre-push

pre-receive post-receive

update

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

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

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

prepare-commit-msg

prepare-commit-msg

prepare-commit-msg

prepare-commit-msg

problem- WTF in my git log? - No control

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

pre-receive

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

input

example

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]+)\]

CheckMarkers InCommitsMessages

CheckMarkers InCommitsMessages

CheckMarkers InCommitsMessages

CheckBranchName

CheckBranchName

problem- WTF in my git log? - No control

git log --oneline

pre-receiveCheckBranchName CheckMarkersInCommitsMessages

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild

CheckPushBuild

CheckPushBuild

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase

CheckPushMaster

CheckFileNameCase

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase CheckBuildMerges

CheckBuildMerges

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase CheckBuildMerges CheckIssueStatus

CheckIssueStatus

pre-receiveCheckBranchName CheckMarkersInCommitsMessages CheckPushBuild CheckPushMaster CheckFileNameCase CheckBuildMerges CheckIssueStatus CheckFileSize

CheckFileSize

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

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

post-receiveFillCommitsField

FillCommitsField

post-receiveFillCommitsField FillDevelopersField

FillDevelopersField

post-receiveFillCommitsField FillDevelopersField AddCommitsComments

AddCommitsComments

post-receiveFillCommitsField FillDevelopersField AddCommitsComments LinkIssuesWithBuild

LinkIssuesWithBuild

post-receiveFillCommitsField FillDevelopersField AddCommitsComments LinkIssuesWithBuild TriggerBuildMake

TriggerBuildMake

post-receiveFillCommitsField FillDevelopersField AddCommitsComments LinkIssuesWithBuild TriggerBuildMake RunTests

RunTests

RE

QA DEV

writers

git push

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

stay tuned

pavel.matolygin@gmail.com tlgrm.me/defaultpage

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

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

Badoo

top related