こちらの記事を見て触発されました。作業メモです
How To Set Up Continuous Integration Pipelines with Azure Pipelines and PCF
前の記事を改変していく形で説明します。よってこの記事を進める前に、前の記事の手順を済ませておいてください
(※一旦こちらでreleaseしますが。もしかしたらもっといいやり方があるかも。適宜次第更新していこうと思います)
#目次
#pcfの環境設定
cf CLIのインストール
https://docs.run.pivotal.io/cf-cli/install-go-cli.html
ローカルPCにインストールします。今回はUbuntu 18.04 on WLS利用なのでLinux Installationの手順に従います
pcfのトライアル環境の設定
以下のSIGN UP FOR FREEからトライアル環境を申し込みます
https://run.pivotal.io/
続いてトライアル環境にOrgとSpaceを作ります。それぞれの意味は以下です
https://docs.cloudfoundry.org/concepts/roles.html
- Org: 開発環境。Org毎にメモリが割り当てられる
- Space: アプリ毎の環境
完了したらCLIからログインしてみます
cf login -a https://api.run.pivotal.io
トライアル環境に登録したEmailアドレスとパスワードを聞かれます。ログイン成功すると以下の形になるかと思います
#Azure DevOpsの設定
##Cloud Foundry Extensionのインストール
記事に従ってCloud Foundry ExtensionをAzure DevOpsにインストールします
(ちなみにAzure DevOpsの環境は、https://dev.azure.com/に遷移し、画面上の「Sign in to Azure DevOps」からたどっていけます)
Service connectionを設定する
続いて、同様に上記記事の「Service Endpoint for Cloud Foundry extension」に従って、pcf環境に対するService connectionを設定します
##cf CLIのバイナリをGitHubのソースレポジトリに配備
pcfにアプリをデプロイ(push)するのはCLIからcf push を行うのですが、Azure DevOpsにはデフォルトではcf CLIが入っていません(CF Extensionに入れて欲しいものですが…)。ですので自分のアプリのソースツリーに"cf"バイナリを含める必要があります。バイナリはこちら。Azure DevOpsのRelease Pipelineの環境にあわせたバイナリを選択ください。自分はLinux版のバイナリをこんな感じで直下に配置しました
##Build pipelineの修正
前の記事で作成したbuild pipelineを改変します。Copy Files to:xx のタスクのContentsに、"cf"と追加入力ください。こうすることでソースツリー中のcfバイナリもコピー対象に含まれ、Release pipelineで使えるようになります
##Release pipelineの作成
こちらは新規に作っていきます。New release pipelineから
以下の画面になればOKです。右肩のXをクリックしてStageブレードは一旦閉じます
左側の四角中のAdd an artifactをクリックして、先ほど修正したBuild pipelineを選択します。Source aliasは短くしたかったので_pcftest1
に変えました。
続いて右側四角中の1 job, 0 taskのリンクをクリックし、遷移した画面の"Agent job"右の+をクリックします
BashとCloud Foundry CLIの2つのタスクをAddします
設定していきます。まずAgent jobをクリック、Agent Specificationを、先に選択したcfバイナリのプラットフォームとあわせます。今回はUbuntu-18.04としました
Bashタスクを設定します。Script欄にchmnod 755 ./cf
を入力します(これが無いとこの後のcf pushで権限エラーとなってしまう…)。ここに入れたコマンドの出力はログに載るので、必要に応じて追加してもOKです
更にAdvanced>Working Directoryを以下の設定にしました(current directoryをはっきりさせたかったため。無くてもいいかも)
最後にcf CLIタスクを設定します。Cloud Foundry Endpointは前の手順で設定した、pcf環境に対するService connectionを選択します
更にAdvanced>Working Directoryを以下に設定
Release pipelineへの設定はこれで完了です
pcfへデプロイ
画面上部の"Create release"をクリックしてデプロイします
画面上部の"Release-xx has been created"のリンクをクリックして状況を確認します
pcfのコンソール上でもデプロイ完了を確認できます。(PCFのコンソールはこちら: https://console.run.pivotal.io/)
Route列に記載のURLの末尾に"/hello"を付け加えて、作成したSpring boot appが動くことを確認ください
Spring Bootのコードを、Azure DevOpsを使ってpcfにCI/CDした手順は以上となります。お疲れ様でした