透過這幾天的練習跟討論,是時候來測試自訂資源是否可以和原本的專案互相搭配。
假設我們之前建立的怪物資料適用於攻略網站的資料,我們可以利用第 18 天的 Middleman 專案,做出一些修改讓他可以讀取一個叫做 monsterdb.csv
的檔案,並且把怪物的名稱、生命值以及魔力顯示出來。
resource_types:
- name: game-db
type: docker-image
source:
repository: elct9620/concourse-example-custom-resource
tag: latest
resources:
- name: monster-db
type: game-db
source:
uri: http://192.168.2.102:3000
- name: middleman
type: git
source:
uri: https://github.com/elct9620/concourse-example-middleman.git
branch: custom-resource
- name: gh-release
type: github-release
source:
user: elct9620
repository: concourse-example-middleman
access_token: {{github-token}}
我們先對原本的資源設定增加了 game-db
和 monster-db
的設定,讓我們可以存取資料庫。
jobs:
- name: build-and-public
plan:
- get: monster-db
trigger: true
- get: middleman
trigger: true
- task: build
file: middleman/concourse/build-task.yml
- put: gh-release
params:
name: build/name
tag: build/tag
globs:
- build/build-*.tar.gz
接著在工作的部分新增要 get
的項目,把 monster-db
加到裡面。
關於 Trigger 的配置,可以視情況決定要由哪些資源觸發。
inputs:
- name: middleman
- name: monster-db
在 inputs
設定增加 monster-db
來取得資源。
run:
path: sh
args:
- -exc
- |
env
apk --update add build-base git libffi-dev libxml2-dev libxslt-dev \
nodejs openssl-dev ruby ruby-bigdecimal \
ruby-dev ruby-io-console ruby-json zlib-dev
cp monster-db/monsters.csv middleman/source/monsterdb.csv
cd middleman
bundle install
bundle exec middleman build
export VERSION=$(date +"%Y%m%d%H%M%S")
echo "Build Name: CR-$VERSION"
echo "Build - CR-$VERSION" > ../build/name
echo "Build Version: v1.0.0-CR-$VERSION"
echo "v1.0.0-CR-$VERSION" > ../build/tag
tar -cvzf ../build/build-CR-$VERSION.tar.gz build/*
原本的 run
設定則是要增加下面這行。
cp monster-db/monsters.csv middleman/source/monsterdb.csv
簡單說就是將 monster-db
資源的 monsters.csv
複製到 middleman
資源的目錄讓 Middleman 可以存取到最新版的怪物資料。
之後執行 set-pipeline
動作,等待任務被觸發之後,就能在 Github 上面看到新部署的版本。
目前 Concourse 使用的是 1.0 版的建置。
並且可以看到 Middleman 生成的是 1.0 版的怪物列表。
稍微修改怪物列表,然後新增一個版本觸發建置。
就可以取得更新過後的頁面。
透過這樣的搭配使用,除了用來跑測試和建置之外,也能做很多不同的應用。像是利用 time
資源設計成 CronJob 來運行等等。
下一篇會做一個總結,並回顧一下這一個月來的東西。