git хуки на страже качества кода
Post on 16-Apr-2017
196 Views
Preview:
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