Upgrade to Pro — share decks privately, control downloads, hide ads and more …

202307_GitLab入門 ~特徴的な機能にふれるワークショップ~

kidapan
July 08, 2023
850

202307_GitLab入門 ~特徴的な機能にふれるワークショップ~

kidapan

July 08, 2023
Tweet

Transcript

  1. •DevOps におけるライフサイクルツール ◦ 開発と運用を橋渡しする •Git レポジトリマネージャ ◦ 共有リポジトリで互いのコードをインテグレーションする •CI/CD ◦

    チーム全体で協力しあって力を合わせる ◦ パワフルで、スケールし、エンドツーエンドの自動化を 可能にする
  2. GitLab コンポー ネント 機能 Project 作業が整理、管理、追跡、配信される中心的なビルディングブロックであり、チームがイシューという形で共同作業を行い、 作業計画を立てることを支援 Group プロジェクトの集合体。フォルダのようなもの Issue

    イシューはプロジェクトの一部です。チームが説明のユースケースを文書化し、アプローチを議論し、サイズ/労力(イシュー の重み)を見積もり、実際の時間/労力を追跡し、作業を割り当て、進捗を追跡する基本的な計画オブジェクト Epic テーマごとの整理に役立つ、異なるグループやプロジェクトにまたがる関連するイシューの集合 Merge Request イシューと実際のコード変更との関連。設計、実装の詳細(コード変更)、議論(コードレビュー)、承認、テスト(CIパイプライ ン)、セキュリティスキャンの実施 Label プロジェクトやグループの作業にタグを付けて追跡し、イシューを異なるイニシアチブに関連付けるために使用 Board プロジェクトとイシューを視覚的に一覧できるため、チームが作業のバックログを管理し、項目に優先順位をつけ、イシュー をチームやプロジェクトの特定のステージに移動させるのに使う Milestone スプリントまたは成果物(複数)、コード、イシュー、マージリクエストをまとまったグループの整理に使う Roadmap グループの様々なエピックをビジュアルに表現したもの
  3. グループとは • 会社の組織や製品を反映する ◦ チーム/部門/組織機能でのグループ単位 ◦ ソフトウェア製品あるいはアーキテクチャ単位 ◦ 地理的場所単位 •

    あるGitLabコンポーネントを保持する • メンバーを持つことができる • メンバーに対して権限アクセスを付与することができる サブグループ • ネストされたグループ(最大20レベルまで可能) • 大きなプロジェクト群をまとめる • より柔軟なアクセス権限のコントロールをしたい • GitLabへのアクセス時のURLに含めることができる グループ サブグループ プロジェクト プロジェクト
  4. プロジェクト • グループの中に存在できる • ソフトウェアプロジェクト、チーム、あるいは他のエンティティを示す • チームの計画や作業の完了を管理することができる • ソフトウェアを示す場合が多いが、必ずしもソフトウェアだけではない •

    プロジェクトは、グループ直下、またはサブグループ配下に作成することができる • グループ ◦ サブグループ ▪ プロジェクト • イシュー ◦ コメント ◦ 参加者 ◦ アサイン ◦ プロジェクト ▪ イシュー • …
  5. issueとは • 管理を目的とした、単一のワークアイテム(作業アイテム)として詳細を 記述したもの ◦ 説明 ◦ メタデータ(ほとんどはオプション扱い) ◦ スレッドで議論できる

    • コラボレーション参加者 • プロジェクトレベルで使える • プログラム開発だけじゃなく、あらゆる作業を記述できる • (プログラム開発じゃなくても)ブランチやマージリクエストを絡めるこ ともある • GitLabでプロジェクト管理をする際、最も最小単位のオブジェクト イシューは、GitLab上での 最小単位オブジェクト
  6. • イシューや、マージリクエスト、エピックに付与できる ◦ オーナーをアサインする ◦ ステータスを示す ◦ 優先度をセットする • フィルタリングのために利用し、ビューを複数持つことができる

    • イシューボードをより便利に使うことができる • スコープ外なのか、スコープ内なのか、といった使い方もできる • ラベルには[購読機能]があるので、付与された際に通知を受け取ることができる • ラベルには[優先度]があるので、優先度別でソートすることができる • すでに定義済みのデフォルトのラベルを使うか、オリジナルのものを使うか ◦ プロジェクトレベル、グループレベル、グローバルレベルで設定できる • レベルについては、最も高いレベルで定儀すべき • 注意:レベルが異なれば、同じ名前で作成できる • 一つのアイテムには、複数のラベルを付与することができる
  7. • プライベート ◦ グループ/プロジェクトに対する明示的なアクセス権 ◦ プロジェクトのクローン作成と閲覧は、プロジェクトメンバーのみ可能 ▪ (ゲストは除く) • インターナル

    (セルフホスティングのみ、SaaSでは利用不可) ◦ すべてのログインユーザーは、リポジトリに対してゲスト権限を持つ ◦ 内部プロジェクトのクローン作成は、ログインしているユーザーであれば誰でも可能 • パブリック ◦ すべてのログインユーザーは、リポジトリに対してゲスト権限を持つ ◦ プロジェクトは、https や ssh 認証なしでクローンできる
  8. マージリクエストによるトレーサビリティ • CI/CD パイプラインの状態 • レビュー用アプリへのリンク • 承認プロセス • テスト、検証結果

    ◦ コード品質 ◦ セキュリティスキャン ◦ ライセンスコンプライアンス ◦ パフォーマンス • コードレビュー • コミット履歴 • ソースコードの変更 • コメント
  9. Git

  10. ブランチ • 同じコードベースの異なるバージョンを管理するため の仕組み • チームから分離・独立した機能を開発するために使 用される • 独立した開発ライン •

    同じソースコードを共有し、作業する • メインブランチは、main(デフォルト)ブランチ • git branch <branch name> プッシュ • ローカルリポジトリからリモートリポジトリにコンテンツ を転送またはアップロード • ローカルからリモートリポジトリへプッシュして送信 • コミット内容をプッシュしてエクスポート • コミット内容をフェッチしてインポート チェックアウト • ブランチの作成・移動・切り替え • git checkout コミット • 変更をローカルリポジトリに保存する仕組み • ある時点でのスナップショット