Edited at

Concourse CIの環境構築手順

More than 1 year has passed since last update.


概要

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のバージョンを確認してください。

https://concourse.ci/single-page.html


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を作成してください。


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を作成します。


.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


ブラウザでアクセス

http://192.168.33.10:8080

f19e3022d995da01d350220100bed8ac.png


CLIのインストール

http://192.168.33.10:8080

で表示されるページの以下の3つのアイコンが、それぞれ、mac, windows, linux用のcliのダウンロードリンクになっているので、環境にあったものをダウンロードするか、

f880efe45c135a80605bb01ac35a4b8d.png

こちらのリンク先の、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で設定した、以下のものになります。


.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アプリケーションになります。


pipeline.yml

---

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画面で実行する場合

http://192.168.33.10:8080

右上のloginをクリック -> 画面中央のmainをクリックして、以下の画面が表示されたら、.envで設定したアカウントを入力してください。


.env

CONCOURSE_BASIC_AUTH_USERNAME=concourse

CONCOURSE_BASIC_AUTH_PASSWORD=changeme

19ff2a52fd25bcd3198c9907fc7874f2.png

ログインしたら、以下の画面が表示されるので、testをクリックしてください。

b4af30637a76d996bd8e7ecfcc9ed50e.png

以下の画面が表示されたら、右上の + ボタンをクリックしてください。ビルドが始まります。

30f4ddb62e38a90c110ff2c43f16bfb8.png

ビルドが始まると、こんな感じになります。

d0e9918b78a983774d14fc66ab540e69.png

正常に完了すると、緑色になります。

52890a64207d0831c1e3c402160d5cf2.png

エラーが出ずに完了し、緑色になれば成功です。

以上


参考