GitHub를 중심으로 한 개발 프로세스 자동화

6528 단어 팀 개발GitHubGit
GitHub를 중심으로 한 개발 프로세스 의 자동화편입니다

[github webhooks] GitHub에서 특정 이벤트가있을 때 API 호출



특정 이벤트를 놓치지 않도록합시다.

어떤 식으로 사용합니까?


  • Hubot과 협력하여 채팅에 알림
  • PullRequest가 생겼을 때
  • Issue가 병합되었을 때
  • 코멘트를 했을 때
  • etc ...

  • 배포 API를 실행하여 자동 배포
  • 릴리스 브랜치가 병합 된 타이밍에 릴리스 알림을 발행합니다.

    설정 화면


    상당히 세세하게 이벤트가 준비되어 있다


    [githooks] Git의 특정 명령 발행 전후에 스크립트 실행



    의도하지 않은 커밋을 방지하거나 항상 수행하는 작업을 자동화합시다.

    githooks란?


  • git에 제공된 언제든지 스크립트를 실행할 수 있습니다
  • 타이밍은 다양하다
  • commit 전후
  • rebase 전후
  • 푸시시
  • etc ...

  • .git/hooks 를 보자
    $ ls .git/hooks
    
    applypatch-msg.sample     post-update.sample        pre-commit.sample         pre-rebase.sample         update.sample
    commit-msg.sample         pre-applypatch.sample     pre-push.sample           prepare-commit-msg.sample
    

    어떤 식으로 사용합니까?



    예를 들면


    스크립트
    사용법 예


    사전 커밋
    master에 commit시키지 않는 debug문이 들어 있지 않은지 검사한다

    pre-push
    테스트 실행

    post-update
    어떤 알림을


    예 master가 커밋하지 않음



    사전 커밋을 편집하고 마스터에게 커밋 할 수 없도록 시도했습니다.
    종료 코드가 1이면 commit 할 수 없다

    사전 커밋
    #!/bin/sh
    
    branch=`git rev-parse --abbrev-ref HEAD`
    
    if [ $branch = "master" ]; then
      echo "You can't commit on master branch"
      exit 1
    fi
    
    $ git commit -m 'fixes #13'
    You can't commit on master branch
    

    실행할 수 있다면 예를 들어 파이썬에서도 좋은 것 같습니다.

    사전 커밋
    #!/usr/bin/env python
    
    import sys
    import commands
    
    branch = commands.getoutput('git rev-parse --abbrev-ref HEAD')
    
    if branch == 'master':
      print "You can't commit on master branch"
      sys.exit(1)
    

    참고


  • Git - Git 후크
  • Git hooks 요약 - Qiita

  • git webhooks와 githooks의 차이



    webhooks는 GitHub에서의 조작 후크이므로, Issue나 PullRequest의 작성이나 코멘트등의 훅이 주된 용도라고 생각한다
    대조적으로 githooks는 git 명령에 대한 후크이므로 commit이나 rebase 조작 등을 후크하기위한 것이라고 생각합니다.

    또, githooks는 .git/hooks

    [jenkins github pull request builder] PullRequest가 병합 될 때 Jenkins에서 빌드



    PullRequest가 병합될 때 충돌이나 테스트 실패가 없어야 함

    Jenkins를 사용하는 경우 github pull request builder라는 Jenkins 플러그인을 넣어 보자.
    조금 설정이 번거롭지만 PullRequest를 병합 할 때의 안심감이 매우 향상됩니다.

    PullRequest를 병합하기 전에 develop과 병합하여 단위 테스트를 실행하도록 설정 한 예



    develop과 충돌하거나 테스트가 통과하지 못하면 병합 버튼을 누를 수 없습니다!


    문제 없으면 병합 버튼을 누를 수 있으므로 안심하고 병합 할 수 있습니다.


    설정



    설정에 대해서 쓰면 그것만으로 큰 1 기사가 되어 버리므로, 참고 자료의 소개에 머물겠습니다
  • Pull Request Builder Plugin을 Jenkins에 소개 - Qiita
  • jenkins에서 GitHub의 끌어 오기 요청 병합 및 테스트 - Please Sleep

  • 원한다면 다른 기사도주세요.


  • 모쿠지
  • 문서 관리
  • 공개
  • 과제 관리
  • ZenHub
  • 만족하지 못하는 것
  • 좋은 웹페이지 즐겨찾기