Docker for MacをつかってConcourse CIを動かすとtaskのplaftformがLinuxの場合上手く動かないらしい。
別途OS Xバイナリでworkerを動かしてやるとplatformがdarwinであれば動かすことができました。
基本以下の通りに行う。
つかったdocker-composeです。 port 2222を空けてます。
docker-compose.yaml
concourse-db:
image: postgres:9.5
environment:
POSTGRES_DB: concourse
POSTGRES_USER: ${DATABASE_USER}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
PGDATA: /database
concourse-web:
image: concourse/concourse
links: [concourse-db]
command: web
ports: ["1111:8080", "2222:2222"]
volumes: ["./keys/web:/concourse-keys"]
environment:
CONCOURSE_BASIC_AUTH_USERNAME: ${CONCOURSE_USER}
CONCOURSE_BASIC_AUTH_PASSWORD: ${CONCOURSE_PASSWORD}
CONCOURSE_EXTERNAL_URL: ${CONCOURSE_EXTERNAL_URL}
CONCOURSE_POSTGRES_DATA_SOURCE: |-
postgres://${DATABASE_USER}:${DATABASE_PASSWORD}@concourse-db:5432/concourse?sslmode=disable
concourse-worker:
image: concourse/concourse
privileged: true
links: [concourse-web]
command: worker
volumes: ["./keys/worker:/concourse-keys"]
environment:
CONCOURSE_TSA_HOST: concourse-web
別途workerを起動します。
sudo concourse worker \ 19:32:34
--work-dir work \
--tsa-port 2222 \
--tsa-host localhost \
--tsa-public-key keys/worker/tsa_host_key.pub \
--tsa-worker-private-key keys/worker/worker_key
試しに用意したpipeline
hello-darwin.yml
resources:
- name: every-1m
type: time
source: {interval: 1m}
jobs:
- name: navi
plan:
- get: every-1m
trigger: true
- task: say-hello
config:
platform: darwin
run:
path: echo
args: ["Hello, world!"]
fly -t ${TARGET} set-pipeline -p hello-darwin -c hello-darwin.yml
その他はまったこととか
workerはdarwinがいるから削って大丈夫だろうと思って、docker-composeのworkerを削ってたんですが、付属のResourceはLinuxのworkerがいないとダメだそうです。