SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
takemikamiʼs note ‒ http://takemikami.com/
GitHubの機能を活⽤した
GitHub Flowによる開発の進め⽅
Copyright (C) Takeshi Mikami. All rights reserved. 1
三上 威 - @takemikami
アーリース情報技術株式会社 代表取締役 社⻑
2019.6.12
takemikamiʼs note ‒ http://takemikami.com/
はじめに
•テーマ
GitHubの機能を活⽤した
GitHub Flowによる開発の進め⽅
•内容
• GitHub Flowの概要
• GitHub Flowによる開発の流れ
• GitHub FlowのためのGitHub機能の活⽤
Copyright (C) Takeshi Mikami. All rights reserved. 2
本資料で説明する内容の概要を⽰します
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowの概要
Copyright (C) Takeshi Mikami. All rights reserved. 3
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowとは
• 次のフローで運⽤
• masterブランチは常にデプロイ可能な状態であること
• 開発を始める時は、masterからブランチを切り、開発内容がわかるようにブラン
チ名をつける
• ローカルPCの作業は、同じブランチ名でサーバ(GitHub)にpushする
• 意⾒を求めたり、教えて欲しいことがある場合は、Pull Requestを使う
• 開発ブランチは、誰かにレビューを依頼して承認をもらったら、masterにマージ
できる
• masterにマージしたら、直ちにデプロイする
Copyright (C) Takeshi Mikami. All rights reserved. 4
GitHub Flowの概要
GitHub Flowを紹介します
「シンプルさ」に特徴がある
Gitによる開発ワークフローのモデル
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowのブランチモデル
• GitHub Flowのブランチモデルは以下のようになります
Copyright (C) Takeshi Mikami. All rights reserved. 5
GitHub Flowの概要
GitHub Flowのブランチモデルを⽰します
commit
branch
branch
commit
merge
merge
(rebase) merge
commit
master branch
descriptive branch
descriptive branch
開発を始める時は
masterからブランチを切る
masterにマージしたら
直ちにデプロイ
レビュー承認をもらったら
masterにマージできる
masterは常に
デプロイ可能な状態に
開発中はPullRequestを使って相談
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowによる開発の流れ
Copyright (C) Takeshi Mikami. All rights reserved. 6
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowによる開発の流れ
• GitHub Flowでは、次の流れで開発を⾏います
• 開発の着⼿
• ローカルPCでの実装作業
• GitHubへのpush
• Pull Requestの発⾏
• Pull Requestのステータス確認
• Reviewの依頼
• Reviewの実施・承認
• 不具合や指摘事項の対応
• Mergeの実施
• デプロイ
Copyright (C) Takeshi Mikami. All rights reserved. 7
GitHub Flowによる開発の流れ
GitHub Flowによる開発の流れを⽰します
takemikamiʼs note ‒ http://takemikami.com/
GitHub FlowとCI・レビュー・デプロイの関連
Copyright (C) Takeshi Mikami. All rights reserved. 8
GitHub Flowによる開発の流れ
GitHub FlowとCI・レビュー・デプロイの関連を図に⽰します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:開発の着⼿
Copyright (C) Takeshi Mikami. All rights reserved. 9
GitHub Flowによる開発の流れ
開発を着⼿する際に⾏う⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
開発着⼿時は、
masterブランチをGitHubからローカルPCに取り込み、
ブランチを切ります
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:開発の着⼿
• ローカルPCにrepositoryをcloneします
Copyright (C) Takeshi Mikami. All rights reserved. 10
GitHub Flowによる開発の流れ
開発を着⼿する際に⾏う⼿続きを説明します
$ git clone git@github.com:<organization>/<repository>.git
$ cd <repository>
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:開発の着⼿
• masterから開発作業⽤のブランチを切ります
• ローカルPCのブランチは以下のようになります
Copyright (C) Takeshi Mikami. All rights reserved. 11
GitHub Flowによる開発の流れ
開発を着⼿する際に⾏う⼿続きを説明します
$ git checkout -b fix-something
$ git branch
* fix-something
master
ブランチ名は、開発する内容を⽰す適当な名称にします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:ローカルPCでの実装作業
Copyright (C) Takeshi Mikami. All rights reserved. 12
GitHub Flowによる開発の流れ
ローカルPCでの実装作業を⾏う際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
ファイルを修正し
開発作業⽤のブランチにcommitします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:ローカルPCでの実装作業
• ローカルPC上でファイルを変更し、commitします
Copyright (C) Takeshi Mikami. All rights reserved. 13
GitHub Flowによる開発の流れ
ローカルPCでの実装作業を⾏う際の⼿続きを説明します
$ git commit <file> -m <comment>
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:GitHubへのpush
Copyright (C) Takeshi Mikami. All rights reserved. 14
GitHub Flowによる開発の流れ
GitHubへpushする際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
開発作業⽤のブランチを
GitHubにpushします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:GitHubへのpush
• ファイルの変更&commitを⾏ったら、変更をGitHubにpushします
Copyright (C) Takeshi Mikami. All rights reserved. 15
GitHub Flowによる開発の流れ
GitHubへpushする際の⼿続きを説明します
$ git push origin fix-something
GitHubにブランチが作成されます
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestの発⾏
Copyright (C) Takeshi Mikami. All rights reserved. 16
GitHub Flowによる開発の流れ
GitHubでPull Requestを作成する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
GitHubでPull Requestを作成します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestの発⾏
Copyright (C) Takeshi Mikami. All rights reserved. 17
GitHub Flowによる開発の流れ
GitHubでPull Requestを作成する際の⼿続きを説明します
• GitHubのUIからPull Requestを作成します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestのステータス確認
Copyright (C) Takeshi Mikami. All rights reserved. 18
GitHub Flowによる開発の流れ
GitHubでPull Requestのステータスを確認する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
Pull Requestの⽣成後、⾃動的に、
CIによるテスト・開発環境へのデプロイを
⾏うようにしておきます
必要に応じて
Pull Requestのコメント機能を使い、
開発に関する相談を⾏います
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestのステータス確認
• CIサービスとの連携で、Pull Requestからテスト結果を確認できます
• 全てのcheckがpassedになるまでコードの修正を⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 19
GitHub Flowによる開発の流れ
GitHubでPull Requestのステータスを確認する際の⼿続きを説明します
※Deployment APIを利⽤するとデプロイの状況も確認できます
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの依頼
Copyright (C) Takeshi Mikami. All rights reserved. 20
GitHub Flowによる開発の流れ
GitHubでReviewを依頼する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
⾃動テスト・セルフレビュー・動作確認が
完了したらReviewを依頼します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの依頼
• ⾃動テスト・セルフレビュー・動作確認が完了したら、
GitHubのUIからReviewを依頼します
Copyright (C) Takeshi Mikami. All rights reserved. 21
GitHub Flowによる開発の流れ
GitHubでReviewを依頼する際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの実施・承認
Copyright (C) Takeshi Mikami. All rights reserved. 22
GitHub Flowによる開発の流れ
GitHubでReviewを実施する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
Reviewerは
コード差分・開発環境のモジュールを参照して
レビューを⾏います
問題なければApproveします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの実施・承認
• ReviewerはGitHubのUIから、コメントやApproveを⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 23
GitHub Flowによる開発の流れ
GitHubでReviewを実施する際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:不具合や指摘事項の対応
• テストやレビューで検出した不具合や指摘事項は、
修正してcommit/pushを⾏います
→「ローカルPCでの実装作業」〜「GitHubへのpush」と同じ⼿続き
Copyright (C) Takeshi Mikami. All rights reserved. 24
GitHub Flowによる開発の流れ
不具合や指摘事項の対応する際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:不具合や指摘事項の対応
• masterブランチに変更があった場合は、以下のように追従します
• ローカルPCのmasterブランチを最新化します
• 開発作業⽤ブランチをmasterからrebaseします
• conflictが無ければ、GitHubにforce pushします
Copyright (C) Takeshi Mikami. All rights reserved. 25
GitHub Flowによる開発の流れ
不具合や指摘事項の対応する際の⼿続きを説明します
$ git checkout master
$ git pull
$ git checkout fix-something
$ git rebase master
$ git push origin fix-something -f
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:不具合や指摘事項の対応
• rebase時にconflictが発⽣した場合は、以下のように解消させます
• conflictが発⽣すると以下のように表⽰されます
• conflictしているファイルを修正した後、rebaseをcontinueします
Copyright (C) Takeshi Mikami. All rights reserved. 26
GitHub Flowによる開発の流れ
不具合や指摘事項の対応する際の⼿続きを説明します
$ git rebase master
※省略※
CONFLICT (content): Merge conflict in README.md
※省略※
$ git st
※省略※
both modified: README.md
※省略※
$ git add README.md
$ git rebase --continue
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Mergeの実施
Copyright (C) Takeshi Mikami. All rights reserved. 27
GitHub Flowによる開発の流れ
GitHubでmasterへのMergeを⾏う際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
テスト・レビューで問題が無くなったら
(=本番deploy可能な状態になったら)、
masterブランチにmergeします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Mergeの実施
• GitHubのUIからMergeを⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 28
GitHub Flowによる開発の流れ
GitHubでmasterへのMergeを⾏う際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:デプロイ
Copyright (C) Takeshi Mikami. All rights reserved. 29
GitHub Flowによる開発の流れ
デプロイを⾏う際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
masterブランチにmergeしたら、
⾃動でstaging環境にdeployします
takemikamiʼs note ‒ http://takemikami.com/
GitHub FlowのためのGitHub機能の活⽤
Copyright (C) Takeshi Mikami. All rights reserved. 30
takemikamiʼs note ‒ http://takemikami.com/
GitHub FlowのためのGitHub機能の活⽤
• GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します
• Pull Request機能
→masterブランチへのmergeする前の承認ワークフローとして使⽤
• BranchのProtect機能
→ステータス正常&レビュー済みPull Request以外からの変更を禁⽌し、
masterブランチを常にデプロイ可能な状態に保つために使⽤
• CIとの連携機能
→Pull Requestの⽣成後のテスト実⾏を⾃動化するために使⽤
• CDとの連携機能
→開発環境・本番環境へのデプロイを⾃動化するために使⽤
Copyright (C) Takeshi Mikami. All rights reserved. 31
GitHub FlowのためのGitHub機能の活⽤
GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestのステータス確認
• CIサービスとの連携で、Pull Requestからテスト結果を確認できます
• 全てのcheckがpassedになるまでコードの修正を⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 32
GitHub FlowのためのGitHub機能の活⽤
GitHubでPull Requestのステータスを確認する際の⼿続きを説明します
※Deployment APIを利⽤するとデプロイの状況も確認できます
CIとの連携機能によって、
テスト結果をステータスに反映
BranchのProtect機能によって、
ステータス正常&レビュー済みで無ければ、
Merge出来ないように制御
takemikamiʼs note ‒ http://takemikami.com/
BranchのProtect機能
• GitHub Flowでは
『masterブランチは常にデプロイ可能な状態であること』が必要
→ masterブランチに誤った修正が⼊らないようにしたい
• BranchのProtect機能で以下のような条件を設定
• レビューを必須にする
• codeownerを設定しておくと、指定レビューアのレビューを必須に出来る
• CIの成功を必須にする
• 「Require status checks to pass before merging」以下で対象とするCIを指定可能
• Pull Requestをマージできる⼈を制限する
Copyright (C) Takeshi Mikami. All rights reserved. 33
GitHub FlowのためのGitHub機能の活⽤
BranchのProtect機能で設定したい項⽬について⽰します

Contenu connexe

Tendances

オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 

Tendances (20)

PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
 
Go入門
Go入門Go入門
Go入門
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
アジャイル開発とメトリクス
アジャイル開発とメトリクスアジャイル開発とメトリクス
アジャイル開発とメトリクス
 
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 

Similaire à GitHubの機能を活用したGitHub Flowによる開発の進め方

20120324 git training
20120324 git training20120324 git training
20120324 git training
Takeshi AKIMA
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
Takashi Imagire
 

Similaire à GitHubの機能を活用したGitHub Flowによる開発の進め方 (20)

CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
20120324 git training
20120324 git training20120324 git training
20120324 git training
 
Gitを使った運用方法
Gitを使った運用方法Gitを使った運用方法
Gitを使った運用方法
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
 
Github第8章
Github第8章Github第8章
Github第8章
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2
 
こわくないプルリク
こわくないプルリクこわくないプルリク
こわくないプルリク
 
RedmineとGitとスクラム
RedmineとGitとスクラムRedmineとGitとスクラム
RedmineとGitとスクラム
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
 

Plus de Takeshi Mikami

Plus de Takeshi Mikami (20)

rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れ
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
 
SPARQL入門
SPARQL入門SPARQL入門
SPARQL入門
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
 
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
 

GitHubの機能を活用したGitHub Flowによる開発の進め方

  • 1. takemikamiʼs note ‒ http://takemikami.com/ GitHubの機能を活⽤した GitHub Flowによる開発の進め⽅ Copyright (C) Takeshi Mikami. All rights reserved. 1 三上 威 - @takemikami アーリース情報技術株式会社 代表取締役 社⻑ 2019.6.12
  • 2. takemikamiʼs note ‒ http://takemikami.com/ はじめに •テーマ GitHubの機能を活⽤した GitHub Flowによる開発の進め⽅ •内容 • GitHub Flowの概要 • GitHub Flowによる開発の流れ • GitHub FlowのためのGitHub機能の活⽤ Copyright (C) Takeshi Mikami. All rights reserved. 2 本資料で説明する内容の概要を⽰します
  • 3. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowの概要 Copyright (C) Takeshi Mikami. All rights reserved. 3
  • 4. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowとは • 次のフローで運⽤ • masterブランチは常にデプロイ可能な状態であること • 開発を始める時は、masterからブランチを切り、開発内容がわかるようにブラン チ名をつける • ローカルPCの作業は、同じブランチ名でサーバ(GitHub)にpushする • 意⾒を求めたり、教えて欲しいことがある場合は、Pull Requestを使う • 開発ブランチは、誰かにレビューを依頼して承認をもらったら、masterにマージ できる • masterにマージしたら、直ちにデプロイする Copyright (C) Takeshi Mikami. All rights reserved. 4 GitHub Flowの概要 GitHub Flowを紹介します 「シンプルさ」に特徴がある Gitによる開発ワークフローのモデル
  • 5. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowのブランチモデル • GitHub Flowのブランチモデルは以下のようになります Copyright (C) Takeshi Mikami. All rights reserved. 5 GitHub Flowの概要 GitHub Flowのブランチモデルを⽰します commit branch branch commit merge merge (rebase) merge commit master branch descriptive branch descriptive branch 開発を始める時は masterからブランチを切る masterにマージしたら 直ちにデプロイ レビュー承認をもらったら masterにマージできる masterは常に デプロイ可能な状態に 開発中はPullRequestを使って相談
  • 6. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowによる開発の流れ Copyright (C) Takeshi Mikami. All rights reserved. 6
  • 7. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowによる開発の流れ • GitHub Flowでは、次の流れで開発を⾏います • 開発の着⼿ • ローカルPCでの実装作業 • GitHubへのpush • Pull Requestの発⾏ • Pull Requestのステータス確認 • Reviewの依頼 • Reviewの実施・承認 • 不具合や指摘事項の対応 • Mergeの実施 • デプロイ Copyright (C) Takeshi Mikami. All rights reserved. 7 GitHub Flowによる開発の流れ GitHub Flowによる開発の流れを⽰します
  • 8. takemikamiʼs note ‒ http://takemikami.com/ GitHub FlowとCI・レビュー・デプロイの関連 Copyright (C) Takeshi Mikami. All rights reserved. 8 GitHub Flowによる開発の流れ GitHub FlowとCI・レビュー・デプロイの関連を図に⽰します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request
  • 9. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:開発の着⼿ Copyright (C) Takeshi Mikami. All rights reserved. 9 GitHub Flowによる開発の流れ 開発を着⼿する際に⾏う⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request 開発着⼿時は、 masterブランチをGitHubからローカルPCに取り込み、 ブランチを切ります
  • 10. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:開発の着⼿ • ローカルPCにrepositoryをcloneします Copyright (C) Takeshi Mikami. All rights reserved. 10 GitHub Flowによる開発の流れ 開発を着⼿する際に⾏う⼿続きを説明します $ git clone git@github.com:<organization>/<repository>.git $ cd <repository>
  • 11. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:開発の着⼿ • masterから開発作業⽤のブランチを切ります • ローカルPCのブランチは以下のようになります Copyright (C) Takeshi Mikami. All rights reserved. 11 GitHub Flowによる開発の流れ 開発を着⼿する際に⾏う⼿続きを説明します $ git checkout -b fix-something $ git branch * fix-something master ブランチ名は、開発する内容を⽰す適当な名称にします
  • 12. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:ローカルPCでの実装作業 Copyright (C) Takeshi Mikami. All rights reserved. 12 GitHub Flowによる開発の流れ ローカルPCでの実装作業を⾏う際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request ファイルを修正し 開発作業⽤のブランチにcommitします
  • 13. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:ローカルPCでの実装作業 • ローカルPC上でファイルを変更し、commitします Copyright (C) Takeshi Mikami. All rights reserved. 13 GitHub Flowによる開発の流れ ローカルPCでの実装作業を⾏う際の⼿続きを説明します $ git commit <file> -m <comment>
  • 14. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:GitHubへのpush Copyright (C) Takeshi Mikami. All rights reserved. 14 GitHub Flowによる開発の流れ GitHubへpushする際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request 開発作業⽤のブランチを GitHubにpushします
  • 15. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:GitHubへのpush • ファイルの変更&commitを⾏ったら、変更をGitHubにpushします Copyright (C) Takeshi Mikami. All rights reserved. 15 GitHub Flowによる開発の流れ GitHubへpushする際の⼿続きを説明します $ git push origin fix-something GitHubにブランチが作成されます
  • 16. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestの発⾏ Copyright (C) Takeshi Mikami. All rights reserved. 16 GitHub Flowによる開発の流れ GitHubでPull Requestを作成する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request GitHubでPull Requestを作成します
  • 17. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestの発⾏ Copyright (C) Takeshi Mikami. All rights reserved. 17 GitHub Flowによる開発の流れ GitHubでPull Requestを作成する際の⼿続きを説明します • GitHubのUIからPull Requestを作成します
  • 18. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestのステータス確認 Copyright (C) Takeshi Mikami. All rights reserved. 18 GitHub Flowによる開発の流れ GitHubでPull Requestのステータスを確認する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request Pull Requestの⽣成後、⾃動的に、 CIによるテスト・開発環境へのデプロイを ⾏うようにしておきます 必要に応じて Pull Requestのコメント機能を使い、 開発に関する相談を⾏います
  • 19. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestのステータス確認 • CIサービスとの連携で、Pull Requestからテスト結果を確認できます • 全てのcheckがpassedになるまでコードの修正を⾏います Copyright (C) Takeshi Mikami. All rights reserved. 19 GitHub Flowによる開発の流れ GitHubでPull Requestのステータスを確認する際の⼿続きを説明します ※Deployment APIを利⽤するとデプロイの状況も確認できます
  • 20. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの依頼 Copyright (C) Takeshi Mikami. All rights reserved. 20 GitHub Flowによる開発の流れ GitHubでReviewを依頼する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request ⾃動テスト・セルフレビュー・動作確認が 完了したらReviewを依頼します
  • 21. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの依頼 • ⾃動テスト・セルフレビュー・動作確認が完了したら、 GitHubのUIからReviewを依頼します Copyright (C) Takeshi Mikami. All rights reserved. 21 GitHub Flowによる開発の流れ GitHubでReviewを依頼する際の⼿続きを説明します
  • 22. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの実施・承認 Copyright (C) Takeshi Mikami. All rights reserved. 22 GitHub Flowによる開発の流れ GitHubでReviewを実施する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request Reviewerは コード差分・開発環境のモジュールを参照して レビューを⾏います 問題なければApproveします
  • 23. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの実施・承認 • ReviewerはGitHubのUIから、コメントやApproveを⾏います Copyright (C) Takeshi Mikami. All rights reserved. 23 GitHub Flowによる開発の流れ GitHubでReviewを実施する際の⼿続きを説明します
  • 24. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:不具合や指摘事項の対応 • テストやレビューで検出した不具合や指摘事項は、 修正してcommit/pushを⾏います →「ローカルPCでの実装作業」〜「GitHubへのpush」と同じ⼿続き Copyright (C) Takeshi Mikami. All rights reserved. 24 GitHub Flowによる開発の流れ 不具合や指摘事項の対応する際の⼿続きを説明します
  • 25. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:不具合や指摘事項の対応 • masterブランチに変更があった場合は、以下のように追従します • ローカルPCのmasterブランチを最新化します • 開発作業⽤ブランチをmasterからrebaseします • conflictが無ければ、GitHubにforce pushします Copyright (C) Takeshi Mikami. All rights reserved. 25 GitHub Flowによる開発の流れ 不具合や指摘事項の対応する際の⼿続きを説明します $ git checkout master $ git pull $ git checkout fix-something $ git rebase master $ git push origin fix-something -f
  • 26. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:不具合や指摘事項の対応 • rebase時にconflictが発⽣した場合は、以下のように解消させます • conflictが発⽣すると以下のように表⽰されます • conflictしているファイルを修正した後、rebaseをcontinueします Copyright (C) Takeshi Mikami. All rights reserved. 26 GitHub Flowによる開発の流れ 不具合や指摘事項の対応する際の⼿続きを説明します $ git rebase master ※省略※ CONFLICT (content): Merge conflict in README.md ※省略※ $ git st ※省略※ both modified: README.md ※省略※ $ git add README.md $ git rebase --continue
  • 27. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Mergeの実施 Copyright (C) Takeshi Mikami. All rights reserved. 27 GitHub Flowによる開発の流れ GitHubでmasterへのMergeを⾏う際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request テスト・レビューで問題が無くなったら (=本番deploy可能な状態になったら)、 masterブランチにmergeします
  • 28. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Mergeの実施 • GitHubのUIからMergeを⾏います Copyright (C) Takeshi Mikami. All rights reserved. 28 GitHub Flowによる開発の流れ GitHubでmasterへのMergeを⾏う際の⼿続きを説明します
  • 29. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:デプロイ Copyright (C) Takeshi Mikami. All rights reserved. 29 GitHub Flowによる開発の流れ デプロイを⾏う際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request masterブランチにmergeしたら、 ⾃動でstaging環境にdeployします
  • 30. takemikamiʼs note ‒ http://takemikami.com/ GitHub FlowのためのGitHub機能の活⽤ Copyright (C) Takeshi Mikami. All rights reserved. 30
  • 31. takemikamiʼs note ‒ http://takemikami.com/ GitHub FlowのためのGitHub機能の活⽤ • GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します • Pull Request機能 →masterブランチへのmergeする前の承認ワークフローとして使⽤ • BranchのProtect機能 →ステータス正常&レビュー済みPull Request以外からの変更を禁⽌し、 masterブランチを常にデプロイ可能な状態に保つために使⽤ • CIとの連携機能 →Pull Requestの⽣成後のテスト実⾏を⾃動化するために使⽤ • CDとの連携機能 →開発環境・本番環境へのデプロイを⾃動化するために使⽤ Copyright (C) Takeshi Mikami. All rights reserved. 31 GitHub FlowのためのGitHub機能の活⽤ GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します
  • 32. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestのステータス確認 • CIサービスとの連携で、Pull Requestからテスト結果を確認できます • 全てのcheckがpassedになるまでコードの修正を⾏います Copyright (C) Takeshi Mikami. All rights reserved. 32 GitHub FlowのためのGitHub機能の活⽤ GitHubでPull Requestのステータスを確認する際の⼿続きを説明します ※Deployment APIを利⽤するとデプロイの状況も確認できます CIとの連携機能によって、 テスト結果をステータスに反映 BranchのProtect機能によって、 ステータス正常&レビュー済みで無ければ、 Merge出来ないように制御
  • 33. takemikamiʼs note ‒ http://takemikami.com/ BranchのProtect機能 • GitHub Flowでは 『masterブランチは常にデプロイ可能な状態であること』が必要 → masterブランチに誤った修正が⼊らないようにしたい • BranchのProtect機能で以下のような条件を設定 • レビューを必須にする • codeownerを設定しておくと、指定レビューアのレビューを必須に出来る • CIの成功を必須にする • 「Require status checks to pass before merging」以下で対象とするCIを指定可能 • Pull Requestをマージできる⼈を制限する Copyright (C) Takeshi Mikami. All rights reserved. 33 GitHub FlowのためのGitHub機能の活⽤ BranchのProtect機能で設定したい項⽬について⽰します