「GitHub dockyardコミュニティ 竣工イベント!」でお話した資料です。 https://github-dockyard.connpass.com/event/289714/
地味だけど劇的に便利になるリポジトリ設定あれこれ(と、Codespaces布教)GitHub dockyardコミュニティ 竣工イベント!https://github-dockyard.connpass.com/event/289714/
View Slide
岩永かづみ / Kazumi IWANAGA• GitHub公認トレーナー• ZEN Architects 所属• Microsoft MVP for Azure• 得意な領域• Infrastructure as Code• GitHub Actions による自動化• 技術コミュニティ• Code Polaris / Hack Everything.• @dz_• @dzeyelid• @dzeyelid• dzeyelid
そのGitHubリポジトリは真の力を発揮しているか?
親しんできたリポジトリ機能、実はめっちゃ更新されているんですよ
リポジトリの使い勝手をグレードアップするぞ• リポジトリのSettingsのGeneralを見直す• Branch protection rulesとRepository rulesets• Dependabotで依存関係の脆弱性スキャンを導入する• Secret scanningのpush protectionを知ってほしい*
リポジトリを越えたオススメ• GitHub CopilotとGitHub Copilot X• Codespacesの便利さを知ってもらいたい
まずは、リポジトリSettingsのGeneralから👇
プルリクエストのマージをちょっと便利にプルリクエストのマージ方法を、制限することができる• 「マージ コミット」(git mergeで作られる)を許可する• プルリクエストに含まれるコミットを1コミットにまとめる• プルリクエストに含まれるコミットをrebaseでマージする
Squash mergingがおすすめこのとき設定されるコミットメッセージが、初期値(Default message)だと「最初のコミットメッセージ」が採用されて不便Default to pull request titleを指定することで、プルリクエストのタイトルがコミットメッセージに採用される• Squash = 押しつぶす• プルリクエストのコミットを1コミットにまとめて、マージする
プルリクエストを最新に保ちやすくするプルリクエストのbase branch(マージ先)に更新がある場合に、更新するためのUIが有効になる
プルリクエストでブランチ更新が促される
プルリクエストのマージで作業ブランチ削除プルリクエストがマージされたら、作業ブランチを自動的に削除する
Branch protection rulesとRepository rulesets👇
Branch protection rules
Branch protection rules• 指定したブランチに対し、保護ルールを設定できる• force pushを禁止する• ブランチの削除を禁止する• マージするには、必ずPull requestを要求する• Pull requestをマージするには、必ずApprovalを要求する、など• パブリックリポジトリ、またはGitHub Pro/Team/EnterpriseCloud契約下のプライベートリポジトリで利用できる• 参考: Check! GitHub Branch protection rulesの機能一覧
Repository rulesets
Repository rulesets• 突如登場し、7/24にGA🎉• 参考: GitHub Repository Rules are now generally available - TheGitHub Blog• パブリックリポジトリ、またはGitHub Pro/Team/EnterpriseCloud契約下のプライベートリポジトリで利用できる• Branch protection rulesの後継、より柔軟な制御ができる• Branch protection rulesとの最大の違いは、Organizationレベルで指定できること👏• 参考: Check! GitHub Repository rulesetsとは?
手軽だけど強力なセキュリティ対策👇
Dependabot
Dependabot• リポジトリの依存関係をスキャンし、脆弱性を検出してくれる• スキャンの対象はデフォルトブランチ• すべてのリポジトリで無料で利用できる🎉種類 説明Dependabot alerts 脆弱性が検出された場合に、通知するGitHub.comの「Security」タブで一覧、招待を確認できるDependabot security updates Dependabot alertsによって検出された脆弱性の修正案について、プルリクエストを作成するDependabot version updates 指定した対象のバージョンの更新について、プルリクエストを作成するDependency review(※) デフォルトブランチにマージする前に検出したい場合に、GitHubActionsのDependency reviewアクションを利用する※GitHub Enterprise CloudのGitHub Advanced Securityライセンスが必要
Dependabotの有効化
Dependabot alertsの一覧
Dependabot alertsの詳細
Dependabot security updatesにより発行されたプルリクエスト
Dependabot version updatesにより発行されたプルリクエスト
Dependabot version updatesの設定.github/dependabot.ymlに設定を書く
Secret scanningのpush protection
Secret scanning• リポジトリのすべてのブランチ上の Git 履歴全体をスキャンし、シークレットが検出されるとそのシークレットを提供するプロバイダへ通知する• 通知を受けたプロバイダは対策を行う(無効化、利用者への通知など)• パブリックリポジトリ、またはGitHub Enterprise CloudのGitHubAdvanced Security(GHAS)ライセンスが適用されているプライベート/internalリポジトリで利用できる• リポジトリにプッシュする前に検出したい場合は、Push protectionを利用する
Secret scanningの有効化
Secret scanningのPush protection• Gitでプッシュするとき、コミット内容にシークレットが含まれていたら弾いてくれる🚨• リポジトリにプッシュされる前に防ぐことができる!• 参考: 【GitHub】シークレット スキャンのプッシュ保護でシークレットの流出を固く防ぐ!
GitHub CopilotとGitHub Copilot X🧑✈️
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により支援
Codespacesの便利さを知ってもらいたい🔮
GitHub Codespacesのおすすめポイント• コンテナベースのリモート環境• Dev containerでカスタマイズ• VS Codeの拡張機能のインストールを指定できる• Pay as you go(稼働時間+ボリュームのストレージ利用量)• 無料枠あり(60h/core、1インスタンスを業後や週末に使うくらいなら十分)• あたかもローカルかのようにlocalhostに接続できる(Portforwarding)• イメージを事前にビルドしておくこともできる(prebuild)
Thank you so much🍩.