概要
Concourse CIの環境構築手順です。
関連記事
環境
- CentOS 7.2
- kernel 4.12.4-1.el7.elrepo.x86_64
- fly 3.3.4
- docker 17.05.0-ce
- docker-compose version 1.15.0
必要要件
以下にあるように、Concourse CIを使うためには、kernelのバージョンは、v3.19以上である必要があります。
uname -r
コマンドで、kernelのバージョンを確認してください。
For Linux you'll need kernel v3.19 or later, with user namespace support enabled. Windows and Darwin don't really need anything special.
もし、バージョンが低い場合は、以下を参考にして、アップデートしてください。
VagrantのCentOS7のカーネルを更新(yum)
追記
kernelをupdateするためのシェルスクリプトを作成しました。
こちらを実行すれば、カーネルがアップデートされます。
CentOS7.2でしか動作検証していません。
https://github.com/Esfahan/kernel-updater
docker-composeのインストール
こちらを参照
docker(docker-engine), docker-composeのインストール
docker-compose.ymlを作成
任意の場所に、docker-compose.ymlを作成してください。
version: '3'
services:
concourse-db:
image: postgres:9.5
environment:
POSTGRES_DB: concourse
POSTGRES_USER: "${CONCOURSE_POSTGRES_USER}"
POSTGRES_PASSWORD: "${CONCOURSE_POSTGRES_PASSWORD}"
PGDATA: /database
concourse-web:
image: concourse/concourse
links: [concourse-db]
command: web
depends_on: [concourse-db]
ports: ["8080:8080"]
volumes: ["./keys/web:/concourse-keys"]
restart: unless-stopped # required so that it retries until conocurse-db comes up
environment:
CONCOURSE_BASIC_AUTH_USERNAME: "${CONCOURSE_BASIC_AUTH_USERNAME}"
CONCOURSE_BASIC_AUTH_PASSWORD: "${CONCOURSE_BASIC_AUTH_PASSWORD}"
CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}"
CONCOURSE_POSTGRES_HOST: concourse-db
CONCOURSE_POSTGRES_USER: "${CONCOURSE_POSTGRES_USER}"
CONCOURSE_POSTGRES_PASSWORD: "${CONCOURSE_POSTGRES_PASSWORD}"
CONCOURSE_POSTGRES_DATABASE: concourse
concourse-worker:
image: concourse/concourse
privileged: true
links: [concourse-web]
depends_on: [concourse-web]
command: worker
volumes: ["./keys/worker:/concourse-keys"]
environment:
CONCOURSE_TSA_HOST: concourse-web
.envの作成
CONCOURSE_EXTERNAL_URL
にブラウザからアクセスできるURLをセットします。
127.0.0.1 or localhostではダメです。
CONCOURSE_BASIC_AUTH_USERNAME
, CONCOURSE_BASIC_AUTH_PASSWORD
には、
ConcourseCIにログインするためのアカウントを設定します。
CONCOURSE_POSTGRES_USER
, CONCOURSE_POSTGRES_PASSWORD
には、postgresのアカウントを設定します。
以下のような.envを作成します。
CONCOURSE_BASIC_AUTH_USERNAME=concourse
CONCOURSE_BASIC_AUTH_PASSWORD=changeme
CONCOURSE_EXTERNAL_URL=http://192.168.33.10:8080
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=changeme
ssh-keyを作成
webとworkerのためにキーを作成。
docker-compose.ymlと同じ階層で実行します。
$ 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
docker-compose
$ docker-compose up -d --build
ブラウザでアクセス
CLIのインストール
http://192.168.33.10:8080
で表示されるページの以下の3つのアイコンが、それぞれ、mac, windows, linux用のcliのダウンロードリンクになっているので、環境にあったものをダウンロードするか、
こちらのリンク先の、Fly Binariesからダウンロードします。
https://concourse.ci/downloads.html
$ curl -L https://github.com/concourse/concourse/releases/download/v3.5.0/fly_linux_amd64 > /tmp/fly
$ sudo mv /tmp/fly /usr/local/bin/fly
$ sudo chmod 775 /usr/local/bin/fly
login
http://192.168.33.10:8080 にログインします。
アカウントは、.envで設定した、以下のものになります。
CONCOURSE_BASIC_AUTH_USERNAME=concourse
CONCOURSE_BASIC_AUTH_PASSWORD=changeme
$ fly -t concourseci login -c http://192.168.33.10:8080
login時に、以下のようなメッセージが出る場合は、最新版のflyをインストールしなおしてください。
fly version (3.4.1) is out of sync with the target (3.5.0). to sync up, run the following:
fly -t rails-sample sync
https://concourse.ci/fly-cli.html
List the current targets
$ fly targets
name url team expiry
concourseci http://192.168.33.10:8080 main Sat, 05 Aug 2017 03:46:25 UTC
動作確認
パイプラインをセットして、動作確認をします。
flight-schoolのサンプルを使ってpipelineを作成してみます。
railsアプリケーションになります。
---
resources:
- name: flight-school
type: git
source:
uri: https://github.com/concourse/flight-school
branch: master
jobs:
- name: test
plan:
- get: flight-school
# Resourceに変更があれば自動でジョブを実行するかどうか
trigger: true
- task: run-tests
config:
platform: linux
image_resource:
type: docker-image
source:
repository: ruby
inputs:
- name: flight-school
run:
path: /bin/bash
args:
- -c
- |
cd flight-school
bundle install
bundle exec rspec
pipelineをセットします。
$ fly -t concourseci set-pipeline -c pipeline.yml -p flight-school
resources:
resource flight-school has been added:
name: flight-school
type: git
source:
branch: master
uri: https://github.com/concourse/flight-school
jobs:
job test has been added:
name: test
plan:
- get: flight-school
- task: run-tests
config:
platform: linux
image_resource:
type: docker-image
source:
repository: ruby
params: {}
run:
path: /bin/bash
args:
- -c
- |
cd flight-school
bundle install
bundle exec rspec
dir: ""
inputs:
- name: flight-school
path: ""
apply configuration? [yN]: y
pipeline created!
you can view your pipeline here: http://192.168.33.10:8080/teams/main/pipelines/flight-school
the pipeline is currently paused. to unpause, either:
- run the unpause-pipeline command
- click play next to the pipeline in the web ui
パイプラインを有効にします。
$ fly -t concourseci unpause-pipeline -p flight-school
unpaused 'flight-school'
jobを実行
コマンドラインで実行する場合
$ fly -t concourseci trigger-job -j flight-school/test --watch
web画面で実行する場合
右上のloginをクリック -> 画面中央のmainをクリックして、以下の画面が表示されたら、.envで設定したアカウントを入力してください。
CONCOURSE_BASIC_AUTH_USERNAME=concourse
CONCOURSE_BASIC_AUTH_PASSWORD=changeme
ログインしたら、以下の画面が表示されるので、testをクリックしてください。
以下の画面が表示されたら、右上の +
ボタンをクリックしてください。ビルドが始まります。
ビルドが始まると、こんな感じになります。
正常に完了すると、緑色になります。
エラーが出ずに完了し、緑色になれば成功です。
以上