※こちらは旧サイトです(新サイトはこちら)
GCEのmicroプランだとメモリが500MB弱しかなく、Jenkinsを常駐させるのはちょっとアレなので、乗り換え先を探していたところ、Concourse CIというパイプラインベース、かつ、コマンドラインから操作出来てymlで管理出来る、そしてGoで書かれていて軽量、さらに、コマンドラインから操作出来る(2回言った)というCIツールがよさそうだったのでいれてみたメモ
公式から、Dockerイメージとdocker-compose.ymlが提供されているので、それを使います
yml見て知ったけど、postgresベースぽい
version: '3'
services:
concourse-db:
image: postgres:9.6
environment:
POSTGRES_DB: concourse
POSTGRES_USER: concourse // ←※postgresのユーザ名
POSTGRES_PASSWORD: changeme // ←※postgresのパスワード
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 concourse-db comes up
environment:
CONCOURSE_BASIC_AUTH_USERNAME: concourse // ←※Web画面のユーザ名
CONCOURSE_BASIC_AUTH_PASSWORD: changeme // ←※Web画面のパスワード
CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}"
CONCOURSE_POSTGRES_HOST: concourse-db
CONCOURSE_POSTGRES_USER: concourse // ←※postgresのユーザ名
CONCOURSE_POSTGRES_PASSWORD: changeme // ←※postgresのパスワード
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
この後も、公式のマニュアル通りに
// SSH鍵を発行
$ 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
// アクセスURLを設定
$ export CONCOURSE_EXTERNAL_URL=http://[DockerホストのIPやドメインなど]:8080
// コンテナ作成
$ docker-compose up -d
作成後、CONCOURSE_EXTERNAL_URL
にアクセスすると、Web画面が見れます
この画像がfly
ファイルのDLリンクになっているので、自分の環境のflyコマンドをDLします。本記事では、DebianなのでLinux版を使用します
// DLしたflyを、適当なPATHの通った所に置く
$ mv fly ~/bin/
// ログイン
$ fly -t lite login -c [CONCOURSE_EXTERNAL_URLに設定したURL]
logging in to team 'main'
username: concourse
password:
target saved
公式のhelloを実行してみる
$ vim hello.yml
jobs:
- name: hello-world
plan:
- task: say-hello
config:
platform: linux
image_resource:
type: docker-image
source: {repository: ubuntu}
run:
path: echo
args: ["Hello, world!"]
// 実行
$ fly -t lite set-pipeline -p hello-world -c hello.yml
実行すると、Webで進捗が見れるよ的なメッセージが出るので、Web画面を見に行きます
なぜかぼくの、TinyCoreLinux環境(=DockerToolBox)では、checking pipeline is not paused
という所がずっとぐるぐるして進まなかったので、後日別の環境でやってみることにする(きょうはもうじかんがない)
タスク実行すると、permission denied
が出てたので、DockerToolBoxのユーザ権限まわりかと
バリ重のJenkinsからどのぐらい軽くなってるのか見てみた
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2caac143e7c0 concourse/concourse "/usr/local/bin/du..." 30 minutes ago Up 30 minutes concorseci_concourse-worker_1
01802741363b concourse/concourse "/usr/local/bin/du..." 30 minutes ago Up 30 minutes 0.0.0.0:8080->8080/tcp concorseci_concourse-web_1
38d07bfd168d postgres:9.6 "docker-entrypoint..." 30 minutes ago Up 30 minutes 5432/tcp concorseci_concourse-db_1
$ docker stats
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
2caac143e7c0 0.02% 15.48MiB / 995.8MiB 1.55% 222kB / 207kB 517MB / 0B 9
01802741363b 2.52% 12.51MiB / 995.8MiB 1.26% 3.72MB / 34.9MB 55.3MB / 0B 9
38d07bfd168d 1.86% 16.16MiB / 995.8MiB 1.62% 1.84MB / 2.03MB 48.7MB / 32.1MB 14
すばらC