MS_GitHubFoundationsHandsOn - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
https://github.com/alterbooth/hol-github-foundations/tree/main
補足(本ページの位置づけ): 学習ガイドPDFの
7 ドメインに沿って構成された ハンズオン教材の要点整理である。
本シリーズの中で最も内容が厚く、
MS Learn Collections側は
「本ページとの差分のみ」を記録する構成になっている。
通読するならまず本ページからがよい。
エンティティのセッティングを定義できる。
- 個人 Account の設定
- Repository の設定
- Organization の設定
- Enterprise の設定
エンティティのテンプレートを定義できる。
-
以下のテンプレートがある。
- Repository
- Issue
- Pull Request
- GitHub Actions の Workflow
-
以下の定義方法がある。
-
簡単なもの
- Markdown の形式でテンプレートを作成(
*.md) - フォーマット(シンプルなガイドラインや記述例)を提供する目的。
- Markdown の形式でテンプレートを作成(
-
複雑なもの
- YAML で記述でテンプレートを作成(
*.yml) - マークアップなので複雑な定義が可能。
- YAML で記述でテンプレートを作成(
-
-
以下の配置場所がある。
-
.github→ root →docsディレクトリなどに配置。 -
複数ファイルを配置する場合の場所(フォルダ名)は、
エンティティや下記「リポジトリのドキュメントファイル」毎に決まっている。
-
- エンティティによっては、ボードや一覧がある。
- 一覧にはフィルタリング用のフィルターが存在する。
- ボードや一覧があるエンティティはピン留めで一番上に来る。
- Repository、Issue、Discussion、Project
- Pull Request にはピン留めはないのでラベルを使う。
-
バージョン管理を説明する
-
分散バージョン管理を定義する
-
Git、GitHub の差異を含め説明する
-
GitHub リポジトリを説明する
-
コミットを説明する
-
ブランチを説明する
-
Git 用語でリモートを定義する
-
GitHub フローを説明する(Github - フロー関連)
-
機能階層
Git を修飾する各種機能が実装されている。-
コード管理・コラボレーション
- Git リポジトリ
- Issue
- Pull requests
- Projects
- Discussions
-
運用支援・開発環境
- Actions
- Codespaces
- Copilot
-
セキュリティ
- Dependabot
- Code scanning
- Secret scanning
-
管理
- Organization
- Enterprise
-
-
参考
-
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、リポジトリ、
ピン留めされたリポジトリ、スターなど
- Markdown と、その使用方法
- Issue および Pull request コメントなどで使用
- 基本的なフォーマット構文(見出し、リンク、タスクリスト、コメントなど)
- テキストフォーマットツールバーを使用する
- スラッシュコマンドでフォーマット構文を見つける。
-
GitHub Desktop と github.com の違い
- github.com:Git ホスティング・サービス
- GitHub Desktop:クライアント・ツール
-
GitHub Desktop の利用可能な機能
- GitHub Desktop で開発ワークフローを簡素化
- クローンしたリポジトリで全ての git 操作を実行
GitHub Mobile の利用可能な機能
- 素早く Issue やプルリクエストのダッシュボードにアクセス
- 外出先でプルリクエストを承認
- モバイル最適化デザインで GitHub を閲覧し共同作業できる。
- GitHub の様々なエレメント的なものを検索
- 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 などを使用して共同作業をやってみる。
-
良い 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)を使用し、
研究者が論文などでプロジェクトを正しく引用できるようにする。
補足(
CODEOWNERSとLICENSEの拡張子): 本文では
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 が出てこない場合は、
既に既定になっている可能性を疑うとよい。
Issue、Pull request、Discussion の違い
-
Issue
- シンプルなタスクを登録し、管理する。
- Pull requests や Projects と組み合わせ複雑なタスク管理に対応。
-
Pull request(Gitの基本)
- Git のブランチ間の差分から作成
- 変更内容をレビューするために利用
-
Discussion
- 議論や質疑応答
- アイディアやフィードバックの収集
- Issue に起こす前段階の議論や調査
-
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) - ユーザーが自由に編集できる(入力必須項目などの制約なし)
- Markdown の形式でテンプレートを作成(
-
Issue Form
- YAML で記述でテンプレートを作成(
*.yml) - 構造化された Issue を作成
- フォームで必須項目を設定し入力を強制
- 入力フィールドの種類を指定可能
- YAML で記述でテンプレートを作成(
-
-
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)で反映できる。
- 変更の提案(suggested changes)は
-
レビュー結果のステータス
Review changes(Finish your review)でオプション選択- コメント(Comment)
変更の提案やフィードバックを提供する場合に選択 - 承認(Approve)
変更を承認する場合に選択 - 変更要求(Request changes)
修正が必要であることを示す場合に選択
- コメント(Comment)
-
既定のレビュアーを CODEOWNERS ファイルに指定しておくと良い。
-
-
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 をピン留め
-
ソース(パブリッシャ的な)
- Repository、Issue & Pull Request
- GitHub Actions、Dependabot
-
サブスクリプションの管理
-
アクティビティ、イベント
-
Ignored repositories
-
他のオプション
- エンティティ毎メールアドレスを変える
- 自動的に追加される Repository、Teams の条件
-
コードスニペットを他の人と共有する簡単な方法を提供
- Gist は Git リポジトリであり、作成、フォークやクローンが可能
- Gist はパブリックまたはシークレットに設定可能
- パブリック → シークレットへの変更は不可能
- シークレットは検索にヒットしないだけで URL 直アクセスは可能
-
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 を作ってみる
- ユーザをリポジトリに招待して CODEOWNERS ファイルを新規作成し
移行メモ(誤字): 元ページの「転送を確認ご削除」を「確認後削除」、
「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 できる。
クローンしローカルで編集してプッシュすることで編集できる。
- 個人 Account の「Your Gists」から「+」でファイルを開き
-
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」フォルダーを公開する方法があるもよう。
自動化によるワークフローを更に加速する。
-
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
あなたの AI ペアプログラマー
-
コードをより速く、少ない労力で書くのを助ける AI ペアプログラマー
-
コメントやコードからコンテキストを引き出し、次の入力や全体の関数を瞬時に提案
-
実装したいロジックをコメントで記述し、GitHub Copilot にコードを組み立てさせる。
-
UT パッケージをインポートし、GitHub Copilot にテストコードを提案させる。
妥協のないコーディング
-
ブラウザ内で完全な開発環境を使用して、コードの記述、ビルド、テスト、
デバッグ、およびデプロイが可能 -
開発環境のセットアップ時間を週に数時間から数分に短縮、
リポジトリへの迅速な貢献を可能にする。 -
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 風に表示してくれるツールにアクセス
-
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 のテンプレート、返信テンプレートを確認
- 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 エンティティに対する権限は
ユーザにアクセス許可を割り当てる。
- Enterprise、Organization、Team エンティティに対する権限は
-
policy, role の継承フロー
-
-
EMU(Enterprise Managed Users)
- GHEC アカウントはエンタープライズ管理者によって所有、作成、管理、
および監査される GHEC アカウント - ライフサイクル管理の自動化、IdP を使用して
プロビジョニング / デプロビジョニングワークフローを自動化
- GHEC アカウントはエンタープライズ管理者によって所有、作成、管理、
-
機能を有効化および無効化
-
リポジトリの権限レベルを認識
| 権限 | 説明 | 推奨 |
|---|---|---|
| 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 との関係。
- リポジトリの「Settings」「Code and automation」「Rules」「Rulesets」
補足(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」で、追加できるパーミッションを確認
- 「Choose a role to inherit」で「Write」を選択し、
-
Repository の Settings、Security、Insights を確認
-
Organization/Enterprise の設定
- Organization 配下のリポジトリで、
Settings > Access > Collaborators and teams を開く - 「Add people」ボタンを選択し、追加するユーザーをアカウント名で検索、選択
- 招待するユーザーのロールを選択
(シートが消費されるので、ハンズオンでは実際に招待しない) - Organization と Enterprise の設定を確認、Organization で Team 階層を作る。
- 「Collaborators and teams」で Team に対してロールを指定して招待
- Organization 配下のリポジトリで、
-
オープンソースコミュニティの利点
-
オープンソースとは?
-
GitHub がオープンソースプロジェクトをどのように進めるか?
-
人々をフォローする方法
(通知を受け取る、コミュニティ内のプロジェクトを発見) -
Organization をフォローする方法(活動に関する通知を受け取る)
-
GitHub Sponsors:金銭的支援のための機能
-
GitHub Marketplace:開発で使えるツールを販売するウェブサイト
- 「Code quality」(コード品質)
- 「Code review」(コードレビュー)
- 「Continuous integration」(継続的インテグレーション)
- 「Monitoring」(モニタリング)
- 「Project management」(プロジェクト管理)
-
-
オープンソースの利点を適用する方法
-
インナーソース
- コラボレーション強化
- サイロ打破
- 開発者の満足度向上
-
発見して fork して貰うためのリポジトリの構成要素
- トピック設定
- README を適切に構成
- CONTRIBUTING.md など整備
- 適切なラベルを設定
-
Issue、Pull request テンプレートの用意
-
https://github.com/alterbooth/hol-github-foundations/tree/main/domain7
- アカウントや Organization のフォロー
- Marketplace について
- 本 Wiki 内
Tags: .NET開発, 構成管理ツール, CI, BI/AI