GiitHub의 더 좋은 활용법을 생각해 보세요.

4056 단어 GitHubGraphQLcurltech
평소에 GiitHub을 이용하지만.
나는 지금까지 그것을 너무 뚜렷하게 보일 생각을 해 본 적이 없다.
코드 설치, PR 전송, 지적, 수정, 일반적인 일련의 절차에서
예컨대 홍보부터 메르지까지 얼마나 애썼는지, 또 얼마나 시간이 걸렸는지 등을 의식하지 못했기 때문에 기릿허브에서 데이터를 수집해 지금까지 자신의 활동 역사를 잘 돌아보려고 했던 비고록이 그 중 하나다.

GiitHub 데이터는 어떻게 추출합니까?


GiitHub은 API를 잘 준비했습니다.
  • GraphQL
  • 간단한 테스트 운영 환경도 준비했다.
  • GraphiQL 실행 환경
  • 실행 환경에서 어떤 느낌인지 한번 해볼게요.


    간단하게 수행할 수 있습니다.
    ※ privete를 계속 방문할 수는 없습니다.요정이 필요해.

    privte에 액세스하려면 다음과 같이 하십시오.


    인증이 없으면 API 사용에 제한이 있는 것 같습니다.
    GiitHub에 대한 인증을 많이 조사했습니다.
  • 기본 인증
  • user_name 및 password 돌파 인증 통과
  • OAuth2 인증
  • 두 가지 모드가 있는데 제목이나 파라미터에 포함하면 된다
  • 상술한 흔한 모델은?인증 방법
    이번에 내가 시도하고 싶은 것은 Personal 방문 영패를 사용하는 인증이다.

    Personal 접속 영패는?


    참고 자료:
    https://docs.github.com/ja/github/authenticating-to-github/creating-a-personal-access-token
  • 액세스 토큰을 손쉽게 관리할 수 있음
  • 보안상 GiitHub이 1년 동안 이 Personal 접속 토큰을 사용하지 않은 경우 마음대로 삭제
  • Personal 접속 영패를 쉽게 재구성할 수 있을 것 같다
  • 나는 위에서부터 이걸로 API를 두드리고 다양한 방법을 시도하고 싶다!

    바로 컬로 두드려주세요.

  • 특정 태그를 획득한 PR
  • curl https://api.github.com/repos/hoge/hogehoge/pulls/919?access_token=Personalアクセストークン&state=merge
    
  • 이미 받았어!
  • <一部抜粋>
    
      "comments": 1,
      "review_comments": 31,
      "maintainer_can_modify": false,
      "commits": 49,
      "additions": 1538,
      "deletions": 129,
      "changed_files": 66
    
    
    PR에서 메르게로 제출한 제출수 등
    나는 얻고 싶은 항목을 얻었다.
    이외에도 프로모션 제작 시기와 메르지 제작 시간 등을 확보했다.
    여기서부터 메르게 될 때까지 홍보하는 시간도 나올 수 있어.

    아주 간단한 컬로 풀어낸 내용을 정리해 봤습니다.

  • 다음 파일 생성
  • test.rb
    
    require 'net/https'
    require 'uri'
    require 'json'
    require 'date'
    
    # 指定
    puts 'ユーザーを入力してください'
    user = gets.chomp.to_s
    puts 'tokenを入力してください'
    token = gets.chomp.to_s
    puts 'pr_idを入力してください'
    pr_id = gets.chomp.to_s
    
    # アクセスするためのURLを生成
    base_url = "https://api.github.com/repos/hoge/hogehoge/pulls/#{pr_id}?"
    
    # GETリクエストを送信する
    uri = URI.parse(base_url + '&state=mearge')
    
    # HTTPSを使うための設定
    https = Net::HTTP.new(uri.host, uri.port)
    https.use_ssl = true
    https.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    # BASIC認証のための設定
    req = Net::HTTP::Get.new(uri.path)
    req.basic_auth(user, token)
    
    # リクエスト送信
    res = https.start do |x|
      x.request(req)
    end
    
    result = JSON.parse(res.body)
    
    created_at = Date.parse(result["created_at"])
    mearged_at = Date.parse(result["merged_at"])
    date_diff = (mearged_at - created_at).to_i
    
    # 取得したレスポンスを表示
    puts '--------PR-DATA---------'
    puts "タイトル: #{result["title"]}"
    puts "ユーザー: #{result["user"]["login"]}"
    puts "PR作成日時: #{result["created_at"]}"
    puts "mearge日時: #{result["merged_at"]}"
    puts "PRからmeargeまで: #{date_diff}日間"
    puts "レビューコメント数: #{result["review_comments"]}回"
    puts "PRからmergeまでのコミット数 #{result["commits"]}回"
    
  • 파일럿
  • % text.rb
    % ユーザーを入力してください
    % user_name
    % tokenを入力してください
    % hogehoge_paersonal_token
    % pr_idを入力してください
    % 1420
    
    => 以下の結果が返ってきました!(数値は適用に変えてます。)
    
    --------PR-DATA---------
    タイトル: hogehoge機能
    ユーザー: 名前
    PR作成日時: 2020-11-01T06:31:42Z
    mearge日時: 2020-11-19T06:24:06Z
    PRからmeargeまで: 18日間
    レビューコメント数: 8回
    PRからmergeまでのコミット数 20回
    
  • 아주 간단하지만 원하는 결과를 얻었습니다!
  • 최후


    조금 더 신경 써서 더 쉽고 편리한 도구를 만들어 보려고🤔
    지현: 더 공부하다
    만약 어느 시기에시험공부의2등을꺼낸다면......
    시간이 있을 때 이것저것 도전해보고 싶어요!

    좋은 웹페이지 즐겨찾기