TOP

JenkinsからConcourseに乗り換えてみた話

2017-12-06 14:47:15

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画面を見に行きます

helloの結果

なぜかぼくの、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