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

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

Apr 16, 2017

Download

Education

SQALab
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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