GCEのmicroプランだとメモリが500MB弱しかなく、Jenkinsを常駐させるのはちょっとアレなので、乗り換え先を探していたところ、Concourse CI というパイプラインベース、かつ、コマンドラインから操作出来てymlで管理出来る 、そしてGoで書かれていて軽量 、さらに、コマンドラインから操作出来る (2回言った)というCIツールがよさそうだったのでいれてみたメモ
コンテナ作成 公式から、Dockerイメージとdocker-compose.yml が提供されているので、それを使います
yml見て知ったけど、postgresベースぽい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 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
この後も、公式のマニュアル 通りに
1 2 3 4 5 6 7 8 9 10 11 12 13 // 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版を使用します
1 2 // DLしたflyを、適当なPATHの通った所に置く $ mv fly ~/bin/
使ってみる 1 2 3 4 5 6 7 8 // ログイン $ fly -t lite login -c [CONCOURSE_EXTERNAL_URLに設定したURL] logging in to team 'main' username: concourse password: target saved
公式のhello を実行してみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ 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!"]
1 2 // 実行 $ 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からどのぐらい軽くなってるのか見てみた
1 2 3 4 5 6 7 8 9 10 11 $ 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