====== Concourse ======
===== 事前に =====
kernelのバージョンは、v3.19以上
**uname -r** コマンドで、kernelのバージョンを確認して、バージョンが低い場合はアップデート
===== 前提 =====
* 大人の事情で、aws+Docker+AmazonLinux2
* epelリポジトリを有効化
===== 構築 =====
==== Docker ====
=== インストール ===
AmazonLinux2では一部ソフトがExtras Libraryからのインストールに切り替わっています
そのためDockerもそちらからインストール((F○ck!))
# 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 の設定 ====
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ファイルを作成します。
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/
......
{{:development:cicd:pasted:20180807-152457.png}}
または、[[https://github.com/concourse/concourse/releases|ここ]]からダウンロードしてインストールする。
==== 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/