MS_GitHubFoundationsHandsOn - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

GitHub Foundaitons ハンズオン

概要

https://github.com/alterbooth/hol-github-foundations/tree/main

補足(本ページの位置づけ): 学習ガイドPDF
7 ドメインに沿って構成された ハンズオン教材の要点整理である。
本シリーズの中で最も内容が厚く、
MS Learn Collections側は
「本ページとの差分のみ」を記録する構成になっている。
通読するならまず本ページからがよい。

詳細

共通項

Settings

エンティティのセッティングを定義できる。

  • 個人 Account の設定
  • Repository の設定
  • Organization の設定
  • Enterprise の設定

Template

エンティティのテンプレートを定義できる。

  • 以下のテンプレートがある。

    • Repository
    • Issue
    • Pull Request
    • GitHub Actions の Workflow
  • 以下の定義方法がある。

    • 簡単なもの

      • Markdown の形式でテンプレートを作成(*.md
      • フォーマット(シンプルなガイドラインや記述例)を提供する目的。
    • 複雑なもの

      • YAML で記述でテンプレートを作成(*.yml
      • マークアップなので複雑な定義が可能。
  • 以下の配置場所がある。

    • .github → root → docs ディレクトリなどに配置。

    • 複数ファイルを配置する場合の場所(フォルダ名)は、
      エンティティや下記「リポジトリのドキュメントファイル」毎に決まっている。

エンティティ一覧

  • エンティティによっては、ボードや一覧がある。
  • 一覧にはフィルタリング用のフィルターが存在する。
  • ボードや一覧があるエンティティはピン留めで一番上に来る。
    • Repository、Issue、Discussion、Project
    • Pull Request にはピン留めはないのでラベルを使う。

ドメイン1: Git と GitHub

Git and GitHub Basics

  • バージョン管理を説明する

  • 分散バージョン管理を定義する

  • Git、GitHub の差異を含め説明する

  • GitHub リポジトリを説明する

  • コミットを説明する

  • ブランチを説明する

  • Git 用語でリモートを定義する

  • GitHub フローを説明する(Github - フロー関連

  • 機能階層
    Git を修飾する各種機能が実装されている。

    • コード管理・コラボレーション

      • Git リポジトリ
      • Issue
      • Pull requests
      • Projects
      • Discussions
    • 運用支援・開発環境

      • Actions
      • Codespaces
      • Copilot
    • セキュリティ

      • Dependabot
      • Code scanning
      • Secret scanning
    • 管理

      • Organization
      • Enterprise
  • 参考

GitHub Entities

  • GitHub accounts
    異なる GitHub アカウント(個人、Organization、Enterprise)

    • Personal accounts
    • Organization accounts
    • Enterprise accounts
  • GitHub の料金プラン

    • 個人アカウント向けの GitHub 製品(Free、Pro)
    • Organization アカウント向けの GitHub 製品(Free、Team)
アカウント Personal Organization Enterprise
無料プラン製品 Free Free
有料プラン製品 Pro Team Enterprise
  • GitHub Enterprise の異なるデプロイメントオプション

  • ユーザープロフィールの機能
    メタデータ、実績、プロフィール README、リポジトリ、
    ピン留めされたリポジトリ、スターなど

GitHub Markdown

  • Markdown と、その使用方法
  • Issue および Pull request コメントなどで使用
  • 基本的なフォーマット構文(見出し、リンク、タスクリスト、コメントなど)
  • テキストフォーマットツールバーを使用する
  • スラッシュコマンドでフォーマット構文を見つける。

GitHub Desktop

  • GitHub Desktop と github.com の違い

    • github.com:Git ホスティング・サービス
    • GitHub Desktop:クライアント・ツール
  • GitHub Desktop の利用可能な機能

    • GitHub Desktop で開発ワークフローを簡素化
    • クローンしたリポジトリで全ての git 操作を実行

GitHub Mobile

GitHub Mobile の利用可能な機能

  • 素早く Issue やプルリクエストのダッシュボードにアクセス
  • 外出先でプルリクエストを承認
  • モバイル最適化デザインで GitHub を閲覧し共同作業できる。
  • GitHub の様々なエレメント的なものを検索
  • GitHub の様々な通知を管理する。

ハンズオン: Git と GitHub 操作

https://github.com/alterbooth/hol-github-foundations/tree/main/domain1

  • リポジトリの作成
  • リポジトリをローカルに Git クローン
  • (生の Git や VS Code や Codespaces のターミナルを使うなど)
  • Git 操作、作業用ブランチ作成、README.md を編集
    (git のコマンドで add commit push)
  • GitHub 操作、README.md を編集、markdown を色々書いて、コミットする。
  • Git 操作、ブランチをプル、README.md の変更結果を確認
    (git のコマンドで pull)
  • GitHub Desktop、GitHub Mobile などを使用して共同作業をやってみる。

ドメイン2: リポジトリ

リポジトリのドキュメントファイル

  • 良い README の構成要素と推奨されるリポジトリファイル

  • .github → root → docs ディレクトリなどに配置する。

  • モノによっては、表示に関する優先順位がある。

  • README.md

    • プロジェクトの概要や使い方を記載するファイル。
    • インストール手順、使い方、サンプルコード、ライセンス情報などが含まれる。
    • TOP に表示される優先順は、.github → root → docs ディレクトリ
  • LICENSE.md

    • ソフトウェアのライセンス情報を記載するファイル。
    • MIT, Apache, GPL などのライセンス条文が記載される。
  • CODEOWNERS.md

    • リポジトリ内の特定のファイルやディレクトリに対する責任者
      (コードオーナー)を定義
    • プルリクエストの自動レビュー割り当てなどに使用される。
  • CONTRIBUTING.md

    • プロジェクトへの貢献方法(コントリビューションガイド)を記載するファイル。
    • プルリクエストのルール、コードスタイル、バグ報告の手順などが含まれる。
  • CODE_OF_CONDUCT.md

    • プロジェクトの行動規範(Code of Conduct)を定めたファイル。
    • コミュニティ内での適切な行動や禁止事項などを記載する。
  • SECURITY.md

    • セキュリティに関するガイドラインや脆弱性の報告方法を記載するファイル。
    • セキュリティリスクや脆弱性の開示ポリシーなどが含まれる。
  • SUPPORT.md

    • プロジェクトのサポートに関する情報を記載するファイル。
    • 問い合わせ方法、FAQ、フォーラムや GitHub Issues の利用方針などが含まれる。
  • FUNDING.yml

    • GitHub Sponsors や Open Collective などの資金提供手段を設定
    • プロジェクトの開発支援を希望する場合に記載
  • CITATION.cff

    • プロジェクトの引用方法(学術論文向け)を記載するファイル。
    • .cff(Citation File Format)を使用し、
      研究者が論文などでプロジェクトを正しく引用できるようにする。

補足(CODEOWNERSLICENSE の拡張子): 本文では
CODEOWNERS.md / LICENSE.md と書かれているが、GitHub が認識するのは
拡張子なしの CODEOWNERS.md 付きは認識されない)と、
LICENSE / LICENSE.md / LICENSE.txt のいずれかである。
また FUNDING.yml.github/ 配下のみが有効で、
ルートや docs/ には置けない。

基本的なリポジトリのナビゲーション

  • リポジトリの名前

  • リポジトリの情報

  • リポジトリの README 表示

  • ナビゲーション

    • Code
    • Issues
    • Pull requests
    • Actions
    • Projects
    • Wiki
    • Security
    • Insights
    • Settings
      • General → Template Repository
  • Branches

  • Commits(履歴)

  • コードの取得・展開

    • clone

新しいリポジトリの作成方法

  • 新しいリポジトリの作成

  • 新しいブランチの作成

  • リポジトリにファイルを追加

  • リポジトリのインサイトを表示

  • スターを使ってリポジトリをお気に入り登録

  • 機能プレビュー(Feature preview)はプロファイルアイコンから

    • Colorblind themes
    • Command Palette
    • Copilot Workspace for Pull Requests
    • Personal Instructions
    • New Commit Details Page
    • Rich Jupyter Notebook Diffs
    • New Issues Experience
    • New merge experience
    • Enhanced Repos Insights Views
    • Slash Commands

テンプレートリポジトリ

  • テンプレートリポジトリを作成
  • 新しいリポジトリの作成

ハンズオン: リポジトリ操作

https://github.com/alterbooth/hol-github-foundations/blob/main/domain2/README.md

  • 機能プレビュー(Feature preview)の New Issues Experience を
    Disabled にしておく(手順書と UI が変わるので)。

  • テンプレートリポジトリを使用してリポジトリを作成

    • 上記「ハンズオン: Git と GitHub 操作」で作成したリポジトリに移動
    • リポジトリのナビゲーションを確認
    • このリポジトリをテンプレートリポジトリとしてマーク
    • テンプレートリポジトリを使用してリポジトリを作成
  • 作成したリポジトリを編集する

    • GitHub 上でブランチを作成
    • GitHub 上でファイル(README)を追加
    • GitHub 上でファイル(README)を確認
    • リポジトリに star を付ける

補足(機能プレビューは流動的): 上記の一覧は
当時プレビュー中だった機能であり、現在は多くが
正式提供(New Issues Experience、Command Palette など)または
撤回されている。
ハンズオンの手順どおりに UI が出てこない場合は、
既に既定になっている可能性を疑うとよい。

ドメイン3: 共同作業機能

Issue、Pull request、Discussion の違い

  • Issue

    • シンプルなタスクを登録し、管理する。
    • Pull requests や Projects と組み合わせ複雑なタスク管理に対応。
  • Pull request(Gitの基本

    • Git のブランチ間の差分から作成
    • 変更内容をレビューするために利用
  • Discussion

    • 議論や質疑応答
    • アイディアやフィードバックの収集
    • Issue に起こす前段階の議論や調査

Issues

  • Issue の作成、Issue から Branch を作成

  • Issue を検索およびフィルタリング

    • フィルタによる絞込み、検索
    • プルダウンでフィルタ追加して絞込み、検索
  • 基本的な Issue 管理

    • 割り当て

      • 担当者
      • Label、Milestone、Project
      • Development: Branch、PullRequest
    • ピン留め

    • # による各種リンク

    • 重複としてマーク(Duplicate of #xx

    • クローズ、再オープン、転送、削除

  • Issue キーワード

    • 特定のアクションを自動化
    • Issue やプルリクエストの状態を管理
  • Issue Template と Issue Form

    • 複数作成できる。

    • 定義ファイルは .github/ISSUE_TEMPLATE/ に置く。

    • Issue Template

      • Markdown の形式でテンプレートを作成(*.md
      • ユーザーが自由に編集できる(入力必須項目などの制約なし)
    • Issue Form

      • YAML で記述でテンプレートを作成(*.yml
      • 構造化された Issue を作成
      • フォームで必須項目を設定し入力を強制
      • 入力フィールドの種類を指定可能

Pull requests

  • Pull request の作成

    • Pull request のタブ
    • ベースブランチと比較ブランチ
    • Issue と比較すると追加で Reviewers を指定できる。
    • テンプレートを活用して作成できる。
  • Pull request のステータス

    • Draft(ドラフト):作業中の PR で、レビューやマージがまだ行われない状態。
    • Open(オープン):PR が作成され、まだマージやクローズされていない状態。
    • Closed(クローズ):PR がマージされずに終了した状態。
    • Merged(マージ済み):PR の変更がメインブランチなどに統合された状態。
  • アクティビティをリンク

    • 別の Pull Request を参照
    • Issue を参照
      • Issue 連動クローズのキーワード
      • メタデータの Development から追加
    • コメントをリンク
    • コミットをリンク
    • コードの特定行をリンク
  • ナビゲーション

    • Conversation(会話)

      • PR の概要やディスカッションのやりとりが表示されるタブ。
      • レビューコメントやステータス、マージの可否に関する情報を表示
    • Commits(コミット)

      • PR に含まれるコミットの一覧が表示されるタブ。
      • それぞれのコミットメッセージや変更履歴を確認
    • Checks(チェック)

      • CI/CD のステータスや、自動テストの結果が表示されるタブ。
      • 失敗したチェックの詳細を確認し、修正が必要かどうか判断
    • Files changed(変更されたファイル)

      • PR で変更されたファイルの一覧が表示されるタブ。
      • 変更内容を差分表示で確認し、コードレビューを行う
  • レビュー関連

    • ファイルのコード行へのリンクにコメント

    • レビューを行う

      • 単一コメント:「Add single comment」
      • 複数コメント:「Start a review - Finish your review」
    • コメントの書き方

      • 変更の提案(suggested changes)は
        ```suggestion``` で囲んで書く。
      • 変更の提案を、提案の確定(commit suggestion)で反映できる。
    • レビュー結果のステータス
      Review changes(Finish your review)でオプション選択

      • コメント(Comment)
        変更の提案やフィードバックを提供する場合に選択
      • 承認(Approve)
        変更を承認する場合に選択
      • 変更要求(Request changes)
        修正が必要であることを示す場合に選択
    • 既定のレビュアーを CODEOWNERS ファイルに指定しておくと良い。

Discussions

  • Issues とは異なり、コードに関連しない会話や質問、情報共有を行うための場で
    2021 年 8 月に正式版となった。

  • 既定で OFF、リポジトリのナビゲーションの Settings から Discussions を有効化

  • Discussions タブから「New discussion」or「Start a discussion」で新規作成

  • Discussion と Issue の違い

    • Issue

      • 主にバグの修正、機能の提案、改善のリクエストなど、
        具体的な作業に関連するものに使用
      • トラッキングに適したフィールド(ラベル、マイルストーン、プロジェクト)に
        より管理を容易にする。
    • Discussions

      • 形式にとらわれない広範で自由なコミュニケーション、議論、
        アイデアの共有に使用
      • チームメンバーだけでなく、コミュニティ全体が参加できる。
  • 初期で用意されているカテゴリ

    • General: 全般
    • Announcements: お知らせ
    • Ideas: アイディア
    • Q&A: 質疑応答
    • Show and tell: 知見共有
  • コメントを Discussion の回答としてマーク

  • Discussion を Issue に変換(自動リンク)

  • Discussion をピン留め

Notifications

  • ソース(パブリッシャ的な)

    • Repository、Issue & Pull Request
    • GitHub Actions、Dependabot
  • サブスクリプションの管理

    • アクティビティ、イベント

    • Ignored repositories

    • 他のオプション

      • エンティティ毎メールアドレスを変える
      • 自動的に追加される Repository、Teams の条件

GitHub Gist

コードスニペットを他の人と共有する簡単な方法を提供

  • Gist は Git リポジトリであり、作成、フォークやクローンが可能
  • Gist はパブリックまたはシークレットに設定可能
  • パブリック → シークレットへの変更は不可能
  • シークレットは検索にヒットしないだけで URL 直アクセスは可能

GitHub Wiki、Pages

  • Wiki

    • リポジトリのドキュメントを Wiki に作成できる。
    • Wiki 編集はリポジトリへの書き込みアクセス権を持つユーザーができる。
  • Pages

ハンズオン: 共同作業

https://github.com/alterbooth/hol-github-foundations/blob/main/domain3/README.md

  • Issue

    • 「New issue」ボタンで 1 つめの Issue を作る。
    • Issue の画面右側のメタデータを確認
    • Development から Issue をブランチと紐付け
    • ピン留めする。
    • 「New issue」ボタンで 2 つめの Issue を作る。
    • Issue の一覧で、フィルターやソートをしてみる
    • Issue の一番下のボタンからクローズ(2 種類)、再オープン
    • コメントに Duplicate of #1 と入力
      (した後に削除しないでクローズする作法)
    • リポジトリを作成してそちらに Issue を転送してみる。転送を確認後、削除。
    • Template と Forms を作って、それを使用して Issue を作成する。
  • Pull request

    • ユーザをリポジトリに招待して CODEOWNERS ファイルを新規作成し
      ソコにレビュアーとして追加
    • master ブランチを編集し「create a new branch for this commit...」で
      branch しつつ commit & Pull request。
    • Pull request を新規作成し、Description は適宜入力しつつ、Close #X を入れる。
    • レビュアーに自動的に CODEOWNERS に追加したアカウント名が
      追加されたことを確認する。
    • Draft、Close、Reopen などのステータス変更の操作を試してみる。
    • 説明された様々なレビュー・プロセスを実行し、最後に Pull request をマージする。
    • マージされたら Reopen できない。
      また、Delete branch ボタンから branch を削除できる。
    • Pull request テンプレートを作って、
      テンプレートを使った Pull request を作ってみる

移行メモ(誤字): 元ページの「転送を確認削除」を「確認削除」、
「Delete brunch」「brunchを削除」を
「Delete branch」「branch を削除」に修正した。

  • Discussions

    • Repository の settings から Discussions を有効化
    • 有効化して Discussions が表示されることを確認
    • 「New discussion」ボタンを押し新しい Discussions を作成
    • カテゴリの中から「Q&A」の「Get started」を押す
    • Title と Body を入力して「Start discussion」を押す
    • 回答を書き込み、「Comment」ボタンを押す
    • 回答として採用するコメントの「Mark as answer」を押す
    • マークされたコメントが回答として表示されることを確認する
    • ピン留めは、全体かカテゴリ毎かを選択可能。
    • Discussion に移動し「Create issue from discussion」から Issue を作成できる。
  • Notifications

    • トレイのアイコンを押下すると notifications の画面に遷移する。
    • 「Manage notifications」の「Subscriptions」からエンティティ一覧を確認できる。
    • エンティティから Issue を選択&表示してメタデータから Unsubscribe できる。
    • Repository の場合は「Manage notifications」の「Watched repositories」で
      一覧を確認できる。
    • Repository に遷移して、Code の Watch から監視オプションを選択する。
    • 「Manage notifications」の「Notification settings」は
      個人 Account の settings → Notification と同じ。
  • GitHub Gist

    • 個人 Account の「Your Gists」から「+」でファイルを開き
      「Create secret gist」で保存。
    • 「Edit」ボタンを押し、右上の「Make public」ボタンでパブリック化できる
      (逆はできない)。
    • GitHub Gist は、fork/clone できる。
      クローンしローカルで編集してプッシュすることで編集できる。
  • GitHub Wiki

    • Wiki は、リポジトリのナビゲーションの Wiki から構成できる。
    • Create the first page で新設、編集したら、Save page。
    • 以降、New page でページを追加し、編集したら、Save page。
    • Sidebar を作成したり settings → Features → Wiki から権限を見たり。
  • GitHub Pages

    • Pages は、リポジトリのナビゲーションの Pages から構成できる。
    • Pages は gh-pages という別ブランチを作成して公開する方法や
      master ブランチにて「docs」フォルダーを公開する方法があるもよう。

ドメイン4: モダンな開発

GitHub Actions

自動化によるワークフローを更に加速する。

  • 20 以上のプロジェクト・イベントに対応する自動化トリガーにより、
    CI/CD だけでなく、あらゆる API の呼び出しの自動化が可能

  • シンプルで使いやすい
    (YAML に基づく設定と、学習および開始に役立つ多数のサンプルワークフロー)

  • アクションのためのグローバルコミュニティ
    (コミュニティおよび企業によって維持されている
    17,000 以上のオープンソースアクション)

  • YAML の基本構造

    name: CI Workflow  # ワークフロー名
    
    on:  # トリガー
      push:
        branches:
          - main
      pull_request:
        branches:
          - main
      schedule:
        - cron: '0 12 * * 1'  # 毎週月曜日12:00 UTCに実行
    
    jobs:
      build:  # ジョブの定義
        runs-on: ubuntu-latest  # 実行環境(macos-latest, windows-latest も可)
    
        steps:
          - name: リポジトリをチェックアウト
            uses: actions/checkout@v4
    
          - name: Node.js セットアップ
            uses: actions/setup-node@v4
            with:
              node-version: '20'
    
          - name: 依存関係のインストール
            run: npm install
    
          - name: テスト実行
            run: npm test
  • https://github.com/features/actions

GitHub Copilot

あなたの AI ペアプログラマー

  • コードをより速く、少ない労力で書くのを助ける AI ペアプログラマー

  • コメントやコードからコンテキストを引き出し、次の入力や全体の関数を瞬時に提案

  • 実装したいロジックをコメントで記述し、GitHub Copilot にコードを組み立てさせる。

  • UT パッケージをインポートし、GitHub Copilot にテストコードを提案させる。

  • https://github.com/features/copilot/

GitHub Codespaces

妥協のないコーディング

  • ブラウザ内で完全な開発環境を使用して、コードの記述、ビルド、テスト、
    デバッグ、およびデプロイが可能

  • 開発環境のセットアップ時間を週に数時間から数分に短縮、
    リポジトリへの迅速な貢献を可能にする。

  • dotfiles リポジトリや VS Code 拡張機能を使用してエディタを設定し、
    すべての Codespace で一貫した環境を作成

  • VS Code の Web 版、デスクトップ版を併用可能
    (デスクトップ版のリモート環境接続機能を使用)

  • エディタ以外は VM、コンテナの特性を活かした機能が多い

    • Deep Links(環境のコピー)
    • Live Share(コードの共同編集機能)
    • GitHub Actions との統合(テスト)
    • シークレット管理
    • リモート接続(VS Code の Remote - SSH、Remote - Containers)
  • Lifecycle

    • Creating a Codespace(VM 課金)
    • Rebuilding a Codespace(VM 課金)
    • Stopping a Codespace(ストレージ課金)
    • Deleting a Codespace
  • github.dev(簡易エディタ) vs Codespaces(開発環境)

github.dev Codespace
コスト 無料 個人アカウントには無料の月間使用枠がある
利用可能 github.com の全ユーザーが利用可能
起動 すぐに使用を開始できる VM が割り当てられ、devcontainer.json ファイルの内容に基づいてコンテナが設定される
コンピュート エディタのみ VM 上でデバッグできる
ターミナルアクセス なし ローカルと同様に IDE ウィンドウからターミナルを操作できる
拡張機能 Web 上で実行できる拡張機能のサブセットのみ VS Code Marketplace のほとんどの拡張機能を使用できる

移行メモ(セル結合): 「利用可能」の行は、元ページでは
PukiWiki の横方向セル結合(|>|)で
「github.com の全ユーザーが利用可能」が 2 列にまたがっていた。
GitHub Markdown はセル結合に対応しないため、
2 列目に内容を置き、3 列目を「〃」とした。

ハンズオン: モダン開発

https://github.com/alterbooth/hol-github-foundations/blob/main/domain4/README.md

  • はじめに、簡単な HTML と JavaScript で作られた電卓アプリの
    サンプル・リポジトリを用意

  • GitHub Actions

    • ナビゲーションの Actions からテンプレートを使用してワークフローを作成する。
    • サンプルではコミットすると Actions のワークフローが実行されるので、
      ログを確認する。
    • トリガーに workflow_dispatch が指定されているので、
      ワークフローを手動で実行できる。
  • GitHub Copilot

    • 次を準備する。
    • VS Code に GitHub Copilot の拡張機能をインストール
    • Copilot Chat の動作を確認
    • Copilot Code completion(コード補完)の動作を確認
  • GitHub Codespaces

    • リポジトリのナビゲーションの Code に遷移する。
    • Code ボタンのプルダウンから Codespaces タブの
      「Create codespace on main」ボタンで codespace を開く。
    • ブラウザで VS Code の画面が開き、ファイルが修正出来ることを確認
    • 画面上部の「Terminal」→「New terminal」からターミナルを開き、
      npm install を実行
    • 一度、ブラウザのタブを閉じ、同じ環境に再接続できることを確認
    • https://github.com/codespaces にアクセスし、
      起動している codespace の一覧を確認
    • codespace を停止、ターミナルの履歴が消えていることを確認、
      codespace を削除
  • github.dev

    • リポジトリを開き、キーボードの「.」(ドット) を押して、github.dev を開く
    • ターミナルを開いたり、複数のファイルを保存して
      1 つのコミットにまとめることはできない
    • ドメインの github.com を github1s.com に変更して
      GitHub のリポジトリコードを VS Code 風に表示してくれるツールにアクセス

ドメイン5: プロジェクト管理

GitHub Projects

  • Issues や Pull requests をインポートしタスク管理

  • プロジェクトには、リポジトリ、組織、個人のプロジェクトがある。

    • このうち、グループ(リポジトリ、組織)、個人で機能は別になる。
    • グループの共同作業プロジェクトと個人のタスク管理プロジェクト
  • 刷新された 3 種類のレイアウトで、様々な表示に対応

    • テーブル形式、テーブルレイアウト
    • カンバン形式、ボードレイアウト
    • ロードマップ形式、ロードマップレイアウト(= ガントチャート)
  • Issue や Pull request にはない項目を自由に構成

    • テキスト型、数値型、選択肢型、日付型
    • イテレーション型でスプリントを表現・管理
  • 簡易的なワークフロー(フィールドの自動更新、GitHub Actions 連携)

    • Item added to project
    • Item reopened
    • Item closed
    • Code changes requested
    • Code review approved
    • Pull request merged
  • 以前からあった Projects(classic) は 2022 年に刷新され今の Projects に

    • Projects(classic) は、2024 年 8 月にサービス提供が終了
    • Projects(classic) は、
      • 基本的なカンバンボードのみ、カスタマイズ性が低く
      • GraphQL API のサポートがなく、データ取得の柔軟性が低かった。
  • その他の機能

    • Repository から独立したアクセス管理が可能
    • GitHub Projects のレイアウト上で「Draft Issue」を作成し、
      後に Issue に変換
    • 既存の Label と Milestones を可視化、作業を追跡できる。
    • インサイト:現在または時系列のデータを様々なグラフチャートで可視化
    • テンプレート:Project(レイアウト、Label と Milestones など)、
      返信(度々お世話になります... 的な)

ハンズオン: プロジェクト管理

https://github.com/alterbooth/hol-github-foundations/blob/main/domain5/README.md

  • 作成したリポジトリのナビゲーションの Projects を選択
  • 自身のプロフィールページのナビゲーションの Projects から「Your projects」を選択
  • テンプレートから「Start from scratch」→「Table」を選択
  • 「Project name」を入力し「Create project」ボタンを選択
  • Issue を 2 つ作り、「Projects」の歯車アイコンから、Project に紐付ける
  • 3 種類のレイアウトを切り替え様々な表示を確認
  • ステータス「No Status」「Todo」「done」変更と確認を行う。
  • Status を Done に変えると Issue が自動で Close されることを確認
    (Workflow の機能)。
  • 「Draft Issue」を作成し、後に Issue に変換してみる。
  • 「Iteration」列を追加、「Options」に「Starts on」「Duration」を追加
  • Issue に追加した「Iteration」列の設定を行いソートなどを試みる。
  • Issue の Label と Milestones を Projects でもフィルタなどに
    利用できることを確認。
  • Milestones がロードマップレイアウトでの表示に影響を与えることを確認
  • Project Insights で様々なグラフチャートを確認
  • Project のテンプレート、返信テンプレートを確認

ドメイン6: プライバシー、セキュリティ、および管理

Authentication and Security

  • 2FA(Two-Factor Authentication)でアカウント保護
    • TOTP(Time-based One-time Password)アプリ
    • モバイルまたはデスクトップ、またはテキストメッセージ

移行メモ(略語): 元ページの「2FA(2FA Authentication)」は
「Two-Factor Authentication」の誤りと解して修正した。

  • ロールによる異なるアクセス権限

    • GitHub のアクセス許可は RBAC(Role-Based Access Control)に基づいている。

    • RBAC はユーザにロールを割り当てることでアクセスを許可する。

    • RBAC ではロールに対象エンティティとエンティティ操作が定義されている。

    • エンティティレベル:Enterprise、Organization、Team、Repository

      • Enterprise、Organization、Team エンティティに対する権限は
        ユーザにロールを割り当てる。
      • Repository エンティティに対する権限は
        ユーザにアクセス許可を割り当てる。
    • policy, role の継承フロー

  • EMU(Enterprise Managed Users)

    • GHEC アカウントはエンタープライズ管理者によって所有、作成、管理、
      および監査される GHEC アカウント
    • ライフサイクル管理の自動化、IdP を使用して
      プロビジョニング / デプロビジョニングワークフローを自動化

GitHub Administration

  • 機能を有効化および無効化

  • リポジトリの権限レベルを認識

権限 説明 推奨
Read (読み取り) Repository のコードとアクションの読み取り専用アクセスを持ち、Issue や PullRequest、Discussion にコメントを追加することが可能。 非コードコントリビューター
Triage (トリアージ) 読み取り専用権限に加え、Issues、Pull Requests、Discussion の Label およびアサインメントの管理が可能。ただし、書き込み権限はない。 管理コントリビューター
Write (書き込み) Repository 設定を除くすべての部分への書き込みアクセスを許可。 コードコントリビューター
Maintain (メンテナンス) Repository の管理を行うための権限を持つ。デリートやセキュリティ関連の操作は行えない。 プロジェクトマネージャー
Admin (管理者) Repository のすべての機能、設定、および構成に対する完全な管理アクセスを持つ最も権限の強い役割 リポジトリの全体管理者
  • リポジトリ可視性
可視性 説明
Public (公開リポジトリ) GitHub 未登録ユーザー含め、世界中から閲覧可能。オープンソース プロジェクトとして活用できる。
Internal (Enterprise 内の内部リポジトリ) Enterprise Account が所有している Organization でのみ作成可能で、同 Enterprise に所属するメンバー全員がアクセス可能。インナーソース プロジェクト用
Private (非公開リポジトリ) 明示的に追加されたユーザーまたは Teams のみがアクセス可能。個人での使用や特定メンバーのみアクセスを許可する用途で活用できる。
  • ブランチ保護
    • リポジトリの「Settings」「Code and automation」「Rules」「Rulesets」
      「New ruleset」「New branch ruleset」でルールを追加
    • バイパスリストでルールを設定した後も管理者が制限を回避できるかどうかを制御。
    • 対象ブランチでは、保護対象のブランチ名を「release-*」などの
      パターンも指定できる。
    • マージとコミット制限、多数のオプションがある。CODEOWNERS との関係。

補足(Branch protection rules と Rulesets): GitHub には
従来の Branch protection rules と、後発の Rulesets
2 系統がある。上記の手順は Rulesets 側で、
こちらの方が バイパス リスト(管理者でも回避させない設定)や
タグの保護組織レベルでの一括適用ができる。
新規に組むなら Rulesets が推奨される。

  • Security:機能とオプション

    • Security policy
    • Security advisories
    • Private vulnerability reporting
    • Dependabot alerts
    • Code scanning alerts
    • Secret scanning alerts
  • Insights:インサイトを定義

    • Pulse
    • Contributors
    • Community
    • Community Standards
    • Traffic
    • Commits
    • Code frequency
    • Dependency graph
    • Network
    • Forks
    • Actions Usage Metrics
    • Actions Performance Metrics
    • People
  • Repository

    • 外部コラボレーター (Outside Collaborator) を招待
    • 個人の Repository だとロール設定はできない。
  • Organization、Team

    • Team 細分化、階層化が可能

    • ロール(アクセス許可レベル)の説明

      • Organization

        ロール 説明
        所有者 (Owner) 所有者は、組織のメンバーができることをすべて実行でき、ユーザーを追加削除ができる。2 人以上指定する。
        メンバー (Member) メンバーは、リポジトリとチームを作成および管理できる。
        モデレーター (Moderator) メンバー以外の共同作成者をブロックおよびブロック解除、相互作用の制限、コメント非表示の設定ができる
        支払いマネージャー (Billing manager) 課金情報を表示して管理できる
        セキュリティマネージャー (Security managers) リポジトリのアクセス許可、セキュリティ アラートを管理できる
        外部コラボレーター (Outside collaborator) 1 つ以上の Organization リポジトリにアクセスできる。
      • Team

        ロール 説明
        メンバー (Member) Organization メンバーと同じ機能セット
        メンテナ (Maintainer) メンバーができるすべてのことに加えてチームのメンテナンス操作を実行できる

移行メモ(表のヘッダ): Organization / Team のロール表は、
元ページではヘッダ行が無く 2 列のデータのみだったため、
「ロール|説明」のヘッダを補った。

ハンズオン: プライバシー、セキュリティ、および管理

https://github.com/alterbooth/hol-github-foundations/blob/main/domain6/README.md

  • 2 要素認証について確認

  • Repository のロールを確認

    • 「Pre-defined roles」で定義済みのロールを確認
    • 「Custom roles」で「Create a role」ボタンを選択し、新しいロールを作成
      • 「Choose a role to inherit」で「Write」を選択し、
        継承するパーミッションを確認
      • 「Add permissions」で、追加できるパーミッションを確認
  • Repository の Settings、Security、Insights を確認

  • Organization/Enterprise の設定

    • Organization 配下のリポジトリで、
      Settings > Access > Collaborators and teams を開く
    • 「Add people」ボタンを選択し、追加するユーザーをアカウント名で検索、選択
    • 招待するユーザーのロールを選択
      (シートが消費されるので、ハンズオンでは実際に招待しない)
    • Organization と Enterprise の設定を確認、Organization で Team 階層を作る。
    • 「Collaborators and teams」で Team に対してロールを指定して招待

ドメイン7: GitHub コミュニティの利点

オープンソースコミュニティ

  • オープンソースコミュニティの利点

    • オープンソースとは?

    • GitHub がオープンソースプロジェクトをどのように進めるか?

    • 人々をフォローする方法
      (通知を受け取る、コミュニティ内のプロジェクトを発見)

    • Organization をフォローする方法(活動に関する通知を受け取る)

    • GitHub Sponsors:金銭的支援のための機能

    • GitHub Marketplace:開発で使えるツールを販売するウェブサイト

      • 「Code quality」(コード品質)
      • 「Code review」(コードレビュー)
      • 「Continuous integration」(継続的インテグレーション)
      • 「Monitoring」(モニタリング)
      • 「Project management」(プロジェクト管理)
  • オープンソースの利点を適用する方法

    • インナーソース

      • コラボレーション強化
      • サイロ打破
      • 開発者の満足度向上
    • 発見して fork して貰うためのリポジトリの構成要素

      • トピック設定
      • README を適切に構成
      • CONTRIBUTING.md など整備
      • 適切なラベルを設定
    • Issue、Pull request テンプレートの用意

ハンズオン: GitHub コミュニティの利点

https://github.com/alterbooth/hol-github-foundations/tree/main/domain7

  • アカウントや Organization のフォロー
  • Marketplace について

参考


Tags: .NET開発, 構成管理ツール, CI, BI/AI

⚠️ **GitHub.com Fallback** ⚠️