SlideShare une entreprise Scribd logo
1  sur  19
SphinxのCI:Azure DevOpsでのビルド結果を、認証付きAzure App Service
に公開するところまで
サイエンスパーク株式会社 須藤圭太
1
• ID:suusanex( connpass・Twitter・GitHub共通)
• 名前:須藤圭太
• サイエンスパーク株式会社という独立系ソフトウェアベンダーに所属
• 4年ほど受託開発で、上流から下流まで全部を回す
• ここ6年ほどは、自社製品開発を担当
勉強会、今後も開いていきます。
https://sciencepark.connpass.com/
自己紹介
2
• Sphinx+PlantUMLで、UML図入りの仕様書がテキストで書ける
• とても便利なので、皆で使おう!
• ところが・・・
• 環境構築で結構躓くので、対策を考えてみました
• 構築済みのコンテナを用意し、各自がDockerでビルド
前回の話
3
Sphinx(md + PlantUML)の簡単な例
4
• コンテナでビルドできたので、CIしてみよう
• Azure DevOps(Pipelines)のホストで実行
• ビルド結果をzipでDLしたり、Webサイトで公開したりします
今回の話
5
コンテナをAzure Container Registryにアップロード
ドキュメントをAzure DevOpsのgitリポジトリへpush
6
Azure
Azure Pipelinesで実行
Hosted Agent(Linux)
コンテナを使ったビルドが成功
7
Azure
Pipelinesのスクリプトはこんな感じ
8
Azure
pool:
vmImage: 'ubuntu-16.04'
container:
image: sphinxtest1.azurecr.io/sphinx:mpecustom
endpoint: sphinxtest1.azurecr.io
steps:
- script: |
cd Doc
make html
displayName: 'sphinx build html'
Azure PipelinesからContainer Registryにアクセスできるように、認証情報を追加する必要が
ある
9
ポイント1
Azure PipelinesからContainer Registryにアクセスできるように、認証情報を追加する必要が
ある
10
ポイント1
• ビルドしたドキュメントが取り残さ
れている・・・
• オンプレのAgentなら良いが、
Hostedを使うなら成果物を取り出す
処理が必要
11
ポイント2
• Azureのホストを使ってSphinxドキュメントをビルドできるようになった
• pushするたびにビルドするようなCIも可能になった
• 次は成果物を取り出せるようにする
前半まとめ
12
とりあえずzipでDLできるようにする
Artifactにアップロードして、Web画面から
DL
13
Zipでの成果物ダウンロード
14
Zipでの成果物ダウンロード
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: 'Doc/_build/html'
artifactName: SphinxHtmlOutput
• HTMLなので、zipではなくWebから直接
見れるようにする
• しかし、インターネットに全公開は避
けたいので、認証を付けたい
15
Webサイトで直接見れるようにする
• Azure AppServicesのEasyAuthで手軽に行
けた
• 簡易と詳細がある
• 通常は簡易で十分
• 詳細の場合は、Azure ADの設定で「ID
トークン」をONにしないと、認証失
敗する(静的HTMLだから?)
16
Webサイトで直接見れるようにする
17
Webサイトで直接見れるようにする
- task: AzureRMWebAppDeployment@4
displayName: Azure App Service Deploy
inputs:
appType: webApp
ConnectedServiceName: '<Azureとの接続
の名前>'
WebAppName: 'azureappserviceauthtest1'
Package: 'Doc/_build/html/'
• 常に最新版を、認証付きのWeb公開までできるようになった
• zipでとりあえずDLといった運用も可能
• Sphinxのビルド問題がだいぶ片付いた
• 便利!
まとめ
18
SP1909-E07-01

Contenu connexe

Tendances

巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
Kiyotaka Oku
 

Tendances (20)

ポンコツエンジニアのAZ-400受験期
ポンコツエンジニアのAZ-400受験期ポンコツエンジニアのAZ-400受験期
ポンコツエンジニアのAZ-400受験期
 
Azure DevOps ハンズオン Vo.1 ~Azure Boards を用いたアジャイル計画とポートフォリオマネジメント~
Azure DevOps ハンズオン Vo.1 ~Azure Boards を用いたアジャイル計画とポートフォリオマネジメント~Azure DevOps ハンズオン Vo.1 ~Azure Boards を用いたアジャイル計画とポートフォリオマネジメント~
Azure DevOps ハンズオン Vo.1 ~Azure Boards を用いたアジャイル計画とポートフォリオマネジメント~
 
Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!
 
Windows serverとインフラ関連アップデート
Windows serverとインフラ関連アップデートWindows serverとインフラ関連アップデート
Windows serverとインフラ関連アップデート
 
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
 
Azure Cloud Shell
Azure Cloud ShellAzure Cloud Shell
Azure Cloud Shell
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
 
コンテナ管理 プラットフォーム 比較 ~Kubernetes~予告編
コンテナ管理 プラットフォーム 比較 ~Kubernetes~予告編 コンテナ管理 プラットフォーム 比較 ~Kubernetes~予告編
コンテナ管理 プラットフォーム 比較 ~Kubernetes~予告編
 
開発環境をDockernizeした話
開発環境をDockernizeした話開発環境をDockernizeした話
開発環境をDockernizeした話
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
 
Chef, Ansible, Consul, … 自働化ツールとその組み合わせ方
Chef, Ansible, Consul, … 自働化ツールとその組み合わせ方Chef, Ansible, Consul, … 自働化ツールとその組み合わせ方
Chef, Ansible, Consul, … 自働化ツールとその組み合わせ方
 
Chef, Consul を使ったクラウドオーケストレーション
Chef, Consul を使ったクラウドオーケストレーションChef, Consul を使ったクラウドオーケストレーション
Chef, Consul を使ったクラウドオーケストレーション
 
AWS Amplify 入門
AWS Amplify 入門AWS Amplify 入門
AWS Amplify 入門
 
Ansible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみたAnsible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみた
 
OsakaArchVizCamp#1 - UE4 Introduction
OsakaArchVizCamp#1 - UE4 IntroductionOsakaArchVizCamp#1 - UE4 Introduction
OsakaArchVizCamp#1 - UE4 Introduction
 
OsakaArchVisCamp#1 - UE4 on OculusQuest
OsakaArchVisCamp#1 - UE4 on OculusQuestOsakaArchVisCamp#1 - UE4 on OculusQuest
OsakaArchVisCamp#1 - UE4 on OculusQuest
 
Terraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on AzureTerraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on Azure
 
Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015
 
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
 

Similaire à SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで

Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Takeshi Komiya
 
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjpSphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Takeshi Komiya
 

Similaire à SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで (20)

Sphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみたSphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみた
 
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すこれ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
 
自社製品のバージョン管理 進化と問題解決の道のり
自社製品のバージョン管理 進化と問題解決の道のり自社製品のバージョン管理 進化と問題解決の道のり
自社製品のバージョン管理 進化と問題解決の道のり
 
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしようC++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
 
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
 
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
 
ローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみた
 
Keep a diary
Keep a diaryKeep a diary
Keep a diary
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]
 
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjpSphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
 
2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」
2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」
2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」
 

Plus de Study Group by SciencePark Corp.

Plus de Study Group by SciencePark Corp. (20)

YOLOとご一緒にPandasはいかがですか
YOLOとご一緒にPandasはいかがですかYOLOとご一緒にPandasはいかがですか
YOLOとご一緒にPandasはいかがですか
 
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
 
ドライバへのETWの埋め込み
ドライバへのETWの埋め込みドライバへのETWの埋め込み
ドライバへのETWの埋め込み
 
JTAGを使ってみよう
JTAGを使ってみようJTAGを使ってみよう
JTAGを使ってみよう
 
JTAG入門
JTAG入門JTAG入門
JTAG入門
 
初心者向けデバイスドライバ講座(6)
初心者向けデバイスドライバ講座(6)初心者向けデバイスドライバ講座(6)
初心者向けデバイスドライバ講座(6)
 
02.超初心者向けセキュリティ入門(IoT)
02.超初心者向けセキュリティ入門(IoT)02.超初心者向けセキュリティ入門(IoT)
02.超初心者向けセキュリティ入門(IoT)
 
06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)
 
Visual StudioでWixをビルドしてみた
Visual StudioでWixをビルドしてみたVisual StudioでWixをビルドしてみた
Visual StudioでWixをビルドしてみた
 
MacOS10.15への対応について
MacOS10.15への対応についてMacOS10.15への対応について
MacOS10.15への対応について
 
リモートでの勉強会参加方法
リモートでの勉強会参加方法リモートでの勉強会参加方法
リモートでの勉強会参加方法
 
初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2) 初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2)
 
No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門
 
初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)
 
01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門
 
無線通信にて遠隔操作を行うVRトラッキングカメラ
無線通信にて遠隔操作を行うVRトラッキングカメラ無線通信にて遠隔操作を行うVRトラッキングカメラ
無線通信にて遠隔操作を行うVRトラッキングカメラ
 
デバイスドライバのオープンソースフレームワーク
デバイスドライバのオープンソースフレームワークデバイスドライバのオープンソースフレームワーク
デバイスドライバのオープンソースフレームワーク
 
雰囲気で​マインドフルネスしてみた​
雰囲気で​マインドフルネスしてみた​雰囲気で​マインドフルネスしてみた​
雰囲気で​マインドフルネスしてみた​
 
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくするgitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
 

SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで