はじめに
前回ドキュメントを作成するための環境を整えましたが、引き続き複数人でドキュメントを管理していく方法を考えます。
merkdown形式でドキュメントが作成できるようになったので、ExcelやWordに比べて差分チェックが容易になりました。
というわけでGitで管理しましょう、GitHub(クローン)を利用してGitHub Flowで運用するとレビューもやりやすくなってステキです。
ドキュメントに対するレビュー文化を根付かせることで不可解な仕様を事前に指摘&排除できるようにしましょう。
また、PullRequestを経由してのmergeさせることで設計者以外が自由にドキュメントを修正することができるようになります。
設計者に求めることはドキュメントに対しての責任を負うことで、ドキュメントを作成することではありません。
直接的な仕様に関わらないtypoや分かりづらい表現などは誰が修正しても同じです。気付いた人がその場でパパっと修正できるような仕組みが理想です。
Azure DevOpsでプロジェクトを作成する
Azure DevOpsでプロジェクトを作成してください。
今回はCI/CDを行うことが目的なのでVersion control
もWork item process
もなんでもいいです。
PullRequest作成時に自動でビルドする
PipeLines > Builds
から新しいビルドパイプラインを作成します。
タスクを設定する
Select a source
今回はGitHubのリポジトリを利用します。
PullRequestをトリガーとするのでDefault branch for manual and scheduled builds
は初期値で構いません。
Select a template
MkDocs用のテンプレートがあるわけではないので空のテンプレートを選択します。
Pipeline
良い感じの名前を設定し、Agent poolにHosted VS2017
を選択します。
※Pythonが動作する環境であれば他のAgentでも構いません。
Get sources
Report build status
にチェックを入れるとPullRequestにステータスが表示されるようになるのでチェックを入れましょう。
Agent Job
MkDocsでビルドする
PowerShellタスクを追加し、InlineにMkDocsをビルドするためのScriptを記載するか、ScriptファイルのPathを設定します。
pip install mkdocs
pip install mkdocs-material
mkdocs build
ls ./site
ビルド成果物をコピーし公開する
Copy and Publish Build Artifactsタスクを追加し、site配下をすべてコピーし公開するようにします。
タスク設定完了
PullRequest検証のトリガーを設定する
Enable pull request validation
にチェックを入れ、フィルタの設定を行います。
初期設定だとmasterに対してのPullRequestだけが対象になります。
すべてのbranchに対して有効にしたい場合は*
を設定しましょう。
除外したいbranchがある場合はTypeをExclude
にしてbranchを選択すればいいです。
PullRequestからの動作確認
適当にPullRequestを作成すると自動でビルドパイプラインが動作します。
正常にビルドが終了するとArtifacts
から成果物を取得することができます。
masterへのpush時に自動でビルドしデプロイする
ビルドパイプラインを作成する
PullRequest作成時に自動でビルドするときと同様にPipeLines > Builds
から新しいビルドパイプラインを作成します。
タスクの設定まで全く同じなので、ExportしてからImport a pipeline
で作成するとちょっとだけ楽です。
masterに対するCIのトリガーを設定する
Enable continuous integration
にチェックを入れます。
リリースパイプラインを作成する
PipeLines > Releases
から新しいリリースパイプラインを作成します。
Select a template (releases)
今回はAzure App Service
に対してデプロイするので、Azure App Service deployment
のテンプレートを選択します。
成果物を選択する
Add an artifact
からリリース対象の成果物を選択します。
masterに対するCDのトリガーを設定する
タスクを設定する (release)
ステージの1 job, 1 task
をクリックしてタスクを設定します。
Stage
デプロイ先のAzure App Service
の設定をします。
Deploy Azure App Service
サンプル
TODO
- 画像の差し替え
- markdownlintのルール設定
- textlintの利用とルール設定
- PlantUMLを利用した図の作成
- 特定のファイルが更新されたときのみ動作するパイプラインの設定