やること
今回はconcourseを通してpcfにdeployまでをやります。
- credential.ymlの作成
- pipeline.ymlの作成
- concourseを走らせる
前提環境
pcfとconcourseの環境が整っていること。pcfにあげるアプリがあること
以前書いたpcfの環境構築について
http://qiita.com/yuichi10/items/228f90b6750a715de605
concourseの環境構築について
http://qiita.com/yuichi10/items/c26359b8339186818951
参考のコード
https://github.com/yuichi10/pcf-app
下準備
-
pcfでつかったアプリを用意してください。(動くなら他のアプリで大丈夫です)
-
まずci/というディレクトリを作ってそこにconcoursに関わるファイルを作っていきます。
-
また今回はgithubからコードを参照するためアプリをgithubに上げておいてください。
ci/credential.ymlの作成
まずpcfにdeployするために必要なクレデンシャルな情報をcredentail.ymlというファイルに書いていきます。このファイルはgithubに上げないようにしましょう。.gitignoreにかいておくことをオススメします。
pcf-username: admin # pcfで使用したusername
pcf-password: admin # pcfで使用したpassword
pcf-org: pcfdev-org # pcfのデプロイする先のorganization
pcf-space: pcfdev-space # pcfでデプロイする先のspace
これでcredential.ymlは完成です。
ci/pipeline.ymlの作成
ここから実際にconcourseのpipelineを書いていきます
リソースの追加
まずresourcesを追加していきます。
resourcesについてですがこれらはバージョンがありpushまたはpullができるような概念を指しています。
まずここにソースコードをとってくるgithubのresourceとdeploy先のpcfを追加します。
---
resources:
- name: repo # resourceの名前
type: git # リソースの種類(git)
source:
uri: 'https://github.com/<自分のレポジトリ>' # gitのurl
branch: master # デプロイするbranch
- name: pcf
type: cf # リソースの種類(pcf)
source:
api: 'https://api.local.pcfdev.io' # pcfのapi url
username: ((pcf-username)) # pcf username
password: ((pcf-password)) # pcf password
organization: ((pcf-org)) # pcf organization
space: ((pcf-space)) # pcf space
skip_cert_check: true # sslの有効性確認をスキップ
これで必要なリソースは整いました。pcfのsourceのapiについては
cf api --skip-ssl-validation
で確認できます。
ジョブの追加
次にjobを追加します。今回のjobのすることはgithubからとってきたリソースをpcfにdeployすることです。
pipelineを見てみましょう
resources:
...
skip_cert_check: true
jobs:
- name: deploy # ジョブの名前
serial: true # これをtrueにすることで非同期にせずキューにためて一つづつ実行します。
plan: # ジョブの実行に必要なinputやoutputを設定
- get: repo # resourceをgetする(resourceのnameと同じじゃないとだめ)
- put: pcf # 出力先。ここもresourceを指定する。
params: # タスクを実行するときの環境変数
manifest: repo/manifest.yml
path: repo # タスクを実行する場所
今回はjobというjobはせずにただgithubからとってきたコードをpcfにアウトプットしています。これだけでdeployができます。
concourseを回す
まず先ほど作ったpipelineを生成しましょう
fly -t my-target set-pipeline -p my-app-concourse -c ci/pipeline.yml -l ci/credential.yml
-t でターゲットを指定してます
-p はpipelineの名前です
-c はセットするpipelineのymlファイルを指定します。
-l は-cで指定したファイルの(())で指定した場所に値を入れるファイルです。
これでpipelineの作成ができました。
それではconcourseのweb uiをみましょう。
- 左の=みたいなボタンを押すとパイプラインが生成できてるのを確認できると思います。
- そしたら今回生成したパイプラインの再生ボタンをおしてください。
- パイプラインの名前が書いてあるところをクリックするとパイプラインが実際に見れると思います。
- そのごdeployと書かれてるところをクリックしてください。すると下記のような画面が見れると思います。
そしたら右上にある+ぼたんを押してください。実際にdeployが走るはずです。
続き
続きは以下になります