DockerでConcourse CIを動かしてみた
Docker Repositoryに書いてあるのと同様ですが、https://github.com/PigumerGroup/sbt-aws-cloudformationを例に手順を説明します。
1. キーを作成し、web と worker の信頼関係を構築します
mkdir -p keys/web keys/worker ssh-keygen -t rsa -f ./keys/web/tsa_host_key -N '' ssh-keygen -t rsa -f ./keys/web/session_signing_key -N '' ssh-keygen -t rsa -f ./keys/worker/worker_key -N '' cp ./keys/worker/worker_key.pub ./keys/web/authorized_worker_keys cp ./keys/web/tsa_host_key.pub ./keys/worker
- keysに作成したキーがあります。
2. docker-compose の設定
docker-compose.yaml を記述します
concourse-db: image: postgres:9.5 environment: POSTGRES_DB: concourse POSTGRES_USER: concourse POSTGRES_PASSWORD: changeme PGDATA: /database concourse-web: image: concourse/concourse links: [concourse-db] command: web ports: ["8080:8080"] volumes: ["./keys/web:/concourse-keys"] environment: CONCOURSE_BASIC_AUTH_USERNAME: concourse CONCOURSE_BASIC_AUTH_PASSWORD: changeme CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}" CONCOURSE_POSTGRES_DATA_SOURCE: |- postgres://concourse:changeme@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
3. docker-compose コマンドを使って起動します
次のようなイメージでdocker-compose.yamlのあるディレクリに移動します
cd concourseci
起動するとき、各Dockerが通信を行うため、webの${CONCOURSE_EXTERNAL_URL}には、http://127.0.0.1:8080やhttp://loalhost:8080のようなアドレスを使用することはできません。PCに割り当てられたIPアドレス等を使用するようにします。
PCに割り当てられたIPアドレスが192.168.0.1だとすると次のようになります。
CONCOURSE_EXTERNAL_URL=http://192.168.0.1:8080 docker-compose up -d
4. ブラウザでアクセス
http://localhost:8080 にアクセスしてみてください。下のような画面が開きます。この画面で使用しているOSのflyコマンドをダウンロードします。
5. タスクの動作確認
fly execute を使って、タスクの動作を確認することができます。
まず、fly login でログインします。この例では、username は concourse, password は changeme です。
fly -t concourseci login -c http://192.168.0.1:8080
ここでのタスク例は、AWS S3やAWS CloudFormationへのアクセスが必要となるため、AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY が必要です。aws-cli を使っている場合は、~/.aws/credentials に記述されています。
AWS_ACCESS_KEY_ID=<YOUR AWS ACCESS KEY ID> AWS_SECRET_ACCESS_KEY=<YOUR SECRET ACCESS KEY> \ fly -t concourseci execute \ -c ci/build.yaml \ -i sbt-aws-cloudformation-src=.
Docker for Mac を使っていてうまく動かないなというときは、aufs driverを試してみてください
Docker → Preferences → Daemon → Advanced を次のように設定します
{ "storage-driver" : "aufs" }
6. パイプラインの登録
パイプラインの登録は次の通りです。
fly -t concourseci set-pipeline \ -p sbt-aws-cloudformation \ -c ci/buildPipeline.yaml \ -v 'AWS_ACCESS_KEY_ID=<YOUR AWS ACCESS KEY ID>' -v 'AWS_SECRET_ACCESS_KEY=<YOUR SECRET KEY>'
pause を解除します
fly -t concourseci unpause-pipeline \ -p sbt-aws-cloudformation
7. パイプラインの実行
ブラウザを開き、右上のloginのリンクを使ってログインします。チームはmainを選択します。
sbt-aws-cloudformation をクリックします
右上の + のボタンをクリックすると、パイプラインの実行が開始します