$30 off During Our Annual Pro Sale. View Details »

地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ

 地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ

「GitHub dockyardコミュニティ 竣工イベント!」でお話した資料です。
https://github-dockyard.connpass.com/event/289714/

Kazumi IWANAGA

August 05, 2023
Tweet

More Decks by Kazumi IWANAGA

Other Decks in Technology

Transcript

  1. 地味だけど劇的に便利になる
    リポジトリ設定あれこれ
    (と、Codespaces布教)
    GitHub dockyardコミュニティ 竣工イベント!
    https://github-dockyard.connpass.com/event/289714/

    View Slide

  2. 岩永かづみ / Kazumi IWANAGA
    • GitHub公認トレーナー
    • ZEN Architects 所属
    • Microsoft MVP for Azure
    • 得意な領域
    • Infrastructure as Code
    • GitHub Actions による自動化
    • 技術コミュニティ
    • Code Polaris / Hack Everything.
    • @dz_
    • @dzeyelid
    • @dzeyelid
    • dzeyelid

    View Slide

  3. そのGitHubリポジトリは
    真の力を発揮しているか?

    View Slide

  4. 親しんできたリポジトリ機能、
    実はめっちゃ更新されているんですよ

    View Slide

  5. リポジトリの使い勝手をグレードアップするぞ
    • リポジトリのSettingsのGeneralを見直す
    • Branch protection rulesとRepository rulesets
    • Dependabotで依存関係の脆弱性スキャンを導入する
    • Secret scanningのpush protectionを知ってほしい*

    View Slide

  6. リポジトリを越えたオススメ
    • GitHub CopilotとGitHub Copilot X
    • Codespacesの便利さを知ってもらいたい

    View Slide

  7. まずは、
    リポジトリSettingsのGeneralから👇

    View Slide

  8. プルリクエストのマージをちょっと便利に
    プルリクエストのマージ方法を、制限することができる
    • 「マージ コミット」(git mergeで作られる)を許可する
    • プルリクエストに含まれるコミットを1コミットにまとめる
    • プルリクエストに含まれるコミットをrebaseでマージする

    View Slide

  9. Squash mergingがおすすめ
    このとき設定されるコミットメッセージが、初期値
    (Default message)だと「最初のコミットメッセージ」
    が採用されて不便
    Default to pull request titleを指定することで、プル
    リクエストのタイトルがコミットメッセージに採用される
    • Squash = 押しつぶす
    • プルリクエストのコミットを1コミットにまとめて、マージする

    View Slide

  10. プルリクエストを最新に保ちやすくする
    プルリクエストのbase branch(マージ先)に更新が
    ある場合に、更新するためのUIが有効になる

    View Slide

  11. プルリクエストでブランチ更新が促される

    View Slide

  12. プルリクエストのマージで作業ブランチ削除
    プルリクエストがマージされたら、
    作業ブランチを自動的に削除する

    View Slide

  13. Branch protection rulesと
    Repository rulesets👇

    View Slide

  14. Branch protection rules

    View Slide

  15. Branch protection rules
    • 指定したブランチに対し、保護ルールを設定できる
    • force pushを禁止する
    • ブランチの削除を禁止する
    • マージするには、必ずPull requestを要求する
    • Pull requestをマージするには、必ずApprovalを要求する、など
    • パブリックリポジトリ、またはGitHub Pro/Team/Enterprise
    Cloud契約下のプライベートリポジトリで利用できる
    • 参考: Check! GitHub Branch protection rulesの機能一覧

    View Slide

  16. Repository rulesets

    View Slide

  17. Repository rulesets
    • 突如登場し、7/24にGA🎉
    • 参考: GitHub Repository Rules are now generally available - The
    GitHub Blog
    • パブリックリポジトリ、またはGitHub Pro/Team/Enterprise
    Cloud契約下のプライベートリポジトリで利用できる
    • Branch protection rulesの後継、より柔軟な制御ができる
    • Branch protection rulesとの最大の違いは、Organizationレベルで指定
    できること👏
    • 参考: Check! GitHub Repository rulesetsとは?

    View Slide

  18. 手軽だけど強力なセキュリティ対策👇

    View Slide

  19. Dependabot

    View Slide

  20. Dependabot
    • リポジトリの依存関係をスキャンし、脆弱性を検出してくれる
    • スキャンの対象はデフォルトブランチ
    • すべてのリポジトリで無料で利用できる🎉
    種類 説明
    Dependabot alerts 脆弱性が検出された場合に、通知する
    GitHub.comの「Security」タブで一覧、招待を確認できる
    Dependabot security updates Dependabot alertsによって検出された脆弱性の修正案について、プ
    ルリクエストを作成する
    Dependabot version updates 指定した対象のバージョンの更新について、プルリクエストを作成する
    Dependency review(※) デフォルトブランチにマージする前に検出したい場合に、GitHub
    ActionsのDependency reviewアクションを利用する
    ※GitHub Enterprise CloudのGitHub Advanced Securityライセンスが必要

    View Slide

  21. Dependabotの有効化

    View Slide

  22. Dependabot alertsの一覧

    View Slide

  23. Dependabot alertsの詳細

    View Slide

  24. Dependabot security updatesにより
    発行されたプルリクエスト

    View Slide

  25. Dependabot version updatesにより
    発行されたプルリクエスト

    View Slide

  26. Dependabot version updatesの設定
    .github/dependabot.ymlに設定を書く

    View Slide

  27. Secret scanningの
    push protection

    View Slide

  28. Secret scanning
    • リポジトリのすべてのブランチ上の Git 履歴全体をスキャンし、シーク
    レットが検出されるとそのシークレットを提供するプロバイダへ通知す

    • 通知を受けたプロバイダは対策を行う(無効化、利用者への通知など)
    • パブリックリポジトリ、またはGitHub Enterprise CloudのGitHub
    Advanced Security(GHAS)ライセンスが適用されているプライ
    ベート/internalリポジトリで利用できる
    • リポジトリにプッシュする前に検出したい場合は、Push protectionを
    利用する

    View Slide

  29. Secret scanningの有効化

    View Slide

  30. Secret scanningのPush protection
    • Gitでプッシュするとき、コミット内容にシークレットが含まれていたら
    弾いてくれる🚨
    • リポジトリにプッシュされる前に防ぐことができる!
    • 参考: 【GitHub】シークレット スキャンのプッシュ保護でシークレット
    の流出を固く防ぐ!

    View Slide

  31. GitHub CopilotとGitHub Copilot X
    🧑‍✈️

    View Slide

  32. GitHub CopilotとGitHub Copilot X
    • GitHub Copilotは、AIによるコード補完
    • GitHub Copilot Xは、次に予定されているAIによる支援機能群
    機能 説明
    GitHub Copilot(現行) コード補完
    GitHub Copilot X GitHub Copilot Chat チャット形式のAIによる支援
    (OrganizationでPublic beta公開)
    GitHub Copilot X GitHub Copilot for Docs ドキュメントにフォーカスしたAIによる支援
    GitHub Copilot X GitHub Copilot for Pull Requests プルリクエストにフォーカスしたAIによる支援
    GitHub Copilot X GitHub Copilot for CLI CLIの利用をAIにより支援

    View Slide

  33. Codespacesの便利さを知ってもらいたい
    🔮

    View Slide

  34. GitHub Codespacesのおすすめポイント
    • コンテナベースのリモート環境
    • Dev containerでカスタマイズ
    • VS Codeの拡張機能のインストールを指定できる
    • Pay as you go(稼働時間+ボリュームのストレージ利用量)
    • 無料枠あり(60h/core、1インスタンスを業後や週末に使うくらいなら十分)
    • あたかもローカルかのようにlocalhostに接続できる(Port
    forwarding)
    • イメージを事前にビルドしておくこともできる(prebuild)

    View Slide

  35. Thank you so much🍩.

    View Slide