目次

Concourse

事前に

kernelのバージョンは、v3.19以上

uname -r コマンドで、kernelのバージョンを確認して、バージョンが低い場合はアップデート

前提

構築

Docker

インストール

AmazonLinux2では一部ソフトがExtras Libraryからのインストールに切り替わっています

そのためDockerもそちらからインストール1)

# amazon-linux-extras install docker
......
17  gimp   disabled  [ =2.8.22 ]
18  docker=latest  enabled  [ =17.12.1  =18.03.1 ]
           ^^^^^^^^
......

バージョン固定など

# amazon-linux-extras install -y docker=18.03.1

起動

# systemctl start docker
# systemctl enable docker

docker-composeのインストール

# curl -L "https://github.com/docker/compose/releases/download/1.xx.xx/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

バージョンは以下のurlで確認してください。

https://github.com/docker/compose/releases

※ pipでも可能

# pipの場合
pip install docker-compose

Keyの作成

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.yaml
version: '3'                                  # docker-composeの使用バージョン

services:                                     # コンテナから作られるサービス
  concourse-db:                               # コンテナの名前
    image: postgres:9.5                       # コンテナを作るためのイメージ
    environment:                              # 環境変数の設定
      POSTGRES_DB: concourse
      POSTGRES_USER: concourse
      POSTGRES_PASSWORD: changeme
      PGDATA: /database

  concourse-web:
    image: concourse/concourse:3.9.2          # 最新版(4.0.0,3.14.1)では動作しないためバージョン指定
    links: [concourse-db]                     # コンテナを他のサービスにリンク
    command: web                              # デフォルトのコマンドを上書き
    depends_on: [concourse-db]
    ports: ["8080:8080"]                      # ポートを公開(expose)。ホストとポートを指定(ホスト:コンテナ)するか、コンテナのポートのみ指定
    volumes: ["./keys/web:/concourse-keys"]   # パスをボリュームとしてマウント
    restart: unless-stopped # required so that it retries until conocurse-db comes up
    environment:
      CONCOURSE_BASIC_AUTH_USERNAME: concourse
      CONCOURSE_BASIC_AUTH_PASSWORD: changeme
      CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}"
      CONCOURSE_POSTGRES_HOST: concourse-db
      CONCOURSE_POSTGRES_USER: concourse
      CONCOURSE_POSTGRES_PASSWORD: changeme
      CONCOURSE_POSTGRES_DATABASE: concourse

  concourse-worker:
    image: concourse/concourse:3.9.2
    privileged: true                          # コンテナに拡張権限を適用する
    links: [concourse-web]
    depends_on: [concourse-web]
    command: worker
    volumes: ["./keys/worker:/concourse-keys"]
    environment:
      CONCOURSE_TSA_HOST: concourse-web

https://github.com/concourse/concourse/releases

環境変数

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=changePassw0rd
CONCOURSE_EXTERNAL_URL=http://192.168.xx.xx:8080
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=changePassw0rd

クライアント

立ち上がっているWebにアクセスし、ビルドパイプライン設定用のCLIツールであるflyをダウンロードする。

http://127.0.0.1:8080/
http://192.168.xx.xx:8080/
......

または、ここからダウンロードしてインストールする。

Login

flyコマンドで、concourseにログインする

アカウント情報は“.env”で設定した情報。

$ fly -t concourseci login -c http://192.168.xx.xx:8080

ワーカー一覧

$ ./fly -t concourseci workers
name          containers  platform  tags  team  state    version
5cxxxxxxxx60  0           linux     none  none  running  1.3    

参考

https://qiita.com/cacarrot/items/8cb4a13b10d408a108c3

https://qiita.com/mumoshu/items/aab5de3b9c73e6c7dd56

https://github.com/tichimura-pivotal/concourse-workshop/blob/master/README.md

https://github.com/tenten0213/ios-concourse

https://concoursetutorial.com/basics/task-hello-world/

https://docs.docker.com/compose/gettingstarted/

1)
F○ck!