배포를 편리하게 만드는 솔루션 인 release-request

3709 단어 OSSGitHubdeploy

release-request





The release-request is a cli tool for Pull Request driven deployment.



하지만





무엇을 할 수 있는가


  • deploy의 Pull Request를 자동 생성합니다.
  • 병합 된 풀 요청을 나열합니다
  • 특정의 라벨이 붙은 Pull Request를 리스트화해 준다
  • 차이를 외부 프로그램에 전달하여 템플릿에서 절차를 넣거나 빼낼 수 있습니다.


    선행 OSS


  • htps : // 기주 b. 코 m / 모테 멘 / 기 t pr-레 아세
  • Mackerel::Release h tps : // 메타 c 팬. 오 rg/포 d/마 c 케레 l::


  • 선행하는 OSS에 비해 이점


  • 한 명령으로 완료
  • 외부 프로그램은 언어 독립적입니다
  • 디폴트도 어느 정도 기능한다


  • 거동


  • 실행하면
  • 이미 지정된 브랜치에서 지정된 브랜치로 Pull Request가 있으면 Description을 덮어 씁니다.
  • 없으면 새롭게 만든다

  • 우리는 webhook이 오면 외부 명령을 실행합니다. tkuchiki/ghooks-cmd-runner


    고안


  • 설정이 필요하지만 템플릿을 뱉어 준다



  • 설정 파일


  • config.yml
  • github token 또는 브랜치 또는 추적 할 라벨 또는

  • release.md
  • Pull Request 템플릿



  • 외부 프로그램의 예


    calls:
      - name: deploy_timing
        command: |
          perl -MTime::Piece -E '
          my $now = Time::Piece->new;
          for my $hms (qw/16:30:00 19:45:00 23:45:00/) {
              next if $now->hms gt $hms;
              say $now->ymd . " " . $hms;
              last;
          }'
    

    외부 프로그램을 Markdown에서 사용



    위의 프로그램을 조합하여 배포 창의 설명을 절차에 포함합니다.
    # Release
    
    Estimated time of deploying: {{ .Call "deploy_timing" }}
    
    

    DDL 차이가 있으면 반영 절차를 넣으십시오.


      - name: has_ddl
        command: |
          perl -MJSON -E '
          my $json = do { local $/; <STDIN> };
          my $releaser = JSON::decode_json($json);
          my $files = $releaser->{comparison}->{files};
          my @assets = grep { $_->{name} =~ m!^sql/master.sql.*$! } @$files;
          @assets > 0 ? exit 0 : exit 1;
          '
    

    DDL 차이가 있으면 반영 절차를 넣으십시오.


    {{ with .CallIf "has_ddl" -}}
    - [ ] migrate ddl
    
        $ git_ddl_migrater sql/master.sql
    {{ end }}
    

    해결하는 문제


  • 배포 할 내용을 정리하고 배포하기 전에 파악하고 배포 한 후 기록하고 싶습니다
  • 그러나 말해도 그 수고가 힘들다
  • 절차 문서의 품질을 일정하게 유지하고 싶습니다


  • 라는 느낌으로 사용해주세요! ! !



    나중에 OSS 소개 Advent Calendar하고 있습니다.



    등록해주세요! ! !

    좋은 웹페이지 즐겨찾기