LoginSignup
28
25

More than 5 years have passed since last update.

Concourse CIの環境構築手順

Last updated at Posted at 2017-08-04

概要

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

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

ブラウザでアクセス

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

右上の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

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

以上

参考

28
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
25