4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

concourse-ciの環境構築(Mac編)

Last updated at Posted at 2019-03-27

concourse-ciの環境構築(Mac編)

はじめに

concourse-ciはパイプラインベースのCIツールです。
YAMLで処理を定義して、実行と実行結果についてはWebで確認が出来ます。
ここでは、ローカルのMac上での環境構築を適当に纏めています。

環境

  • Mac os x HighSierra
  • Docker Desktop for Mac Version 2.0.0.3
  • concourse/concourse 5.0.1

構築

docker-composeを利用して構築を行います。
今回は、タスクの実行環境はlinuxとdarwinを使用出来るようにします。
linuxはDockerイメージを利用したい時に利用していて、
darwinはMac上でしか実行出来ないとかDockerだと面倒な時に利用しています。

docker-compose.ymlの作成

docker-compose.yml
version: '3'

services:
  concourse-db:
    image: postgres
    environment:
      POSTGRES_DB: concourse
      POSTGRES_USER:
      POSTGRES_PASSWORD:
      PGDATA: /database

  concourse-web:
    image: concourse/concourse
    command: web
    privileged: true
    depends_on: [concourse-db]
    volumes: ["./keys/web:/concourse-keys"]
    ports: ["8080:8080","2222:2222"]
    environment:
      CONCOURSE_POSTGRES_HOST: concourse-db
      CONCOURSE_POSTGRES_USER:
      CONCOURSE_POSTGRES_PASSWORD:
      CONCOURSE_POSTGRES_DATABASE: concourse
      CONCOURSE_EXTERNAL_URL: http://localhost:8080
      CONCOURSE_ADD_LOCAL_USER: test:test
      CONCOURSE_MAIN_TEAM_LOCAL_USER: test

  concourse-worker:
    image: concourse/concourse
    command: worker
    privileged: true
    depends_on: [concourse-web]
    volumes: ["./keys/worker:/concourse-keys"]
    environment:
      CONCOURSE_TSA_HOST: concourse-web:2222

.envの作成

環境毎の設定やログイン情報を設定

.env
POSTGRES_USER=concourse_user
POSTGRES_PASSWORD=concourse_pass
CONCOURSE_POSTGRES_USER=concourse_user
CONCOURSE_POSTGRES_PASSWORD=concourse_pass
CONCOURSE_ADD_LOCAL_USER=test:test

ssh-keyの作成

concourse-ciで使用するssh-keyを作成します。
必要なKeyを作成するshellが用意されているので使用します。
https://github.com/concourse/concourse-docker/blob/master/generate-keys.sh

$ sh generate-keys.sh --use-pem

--use-pemがないと、以下のエラーを吐いて起動してくれない
https://github.com/concourse/concourse/issues/2590

エラー
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xf726f5]

goroutine 1 [running]:
crypto/rsa.(*PrivateKey).Public(0x0, 0x0, 0x0)
	/usr/local/go/src/crypto/rsa/rsa.go:100 +0x5
golang.org/x/crypto/ssh.NewSignerFromSigner(0x7f6f930c8320, 0xc00000ea78, 0xc00000ea78, 0x7f6f930c8320, 0xc00000ea78, 0xe18e01)
	/tmp/build/9674af12/concourse/src/golang.org/x/crypto/ssh/keys.go:681 +0x35
golang.org/x/crypto/ssh.NewSignerFromKey(0x2924340, 0xc00000ea78, 0xe18e08, 0x30, 0x2a085a0, 0xc000c3b778)
	/tmp/build/9674af12/concourse/src/golang.org/x/crypto/ssh/keys.go:656 +0x16a
github.com/concourse/tsa/tsacmd.(*TSACommand).configureSSHServer(0xc000ef8e70, 0xc000639080, 0xc00015cd70, 0x1, 0x1, 0x0, 0x0, 0x0, 0xc00019a620, 0x7, ...)
	/tmp/build/9674af12/concourse/src/github.com/concourse/tsa/tsacmd/command.go:197 +0x167
...

起動

docker-composeで起動させます。
起動して、localhost:8080にアクセス出来たら成功

構成
├── .env
├── docker-compose.yml
├── generate-keys.sh
└── keys
    ├── web
    │   ├── authorized_worker_keys
    │   ├── session_signing_key
    │   ├── session_signing_key.pub
    │   ├── tsa_host_key
    │   └── tsa_host_key.pub
    └── worker
        ├── tsa_host_key.pub
        ├── worker_key
        └── worker_key.pub
$ docker-compose up -d
Creating network "concourse_default" with the default driver
Creating concourse_concourse-db_1 ... done
Creating concourse_concourse-web_1 ... done
Creating concourse_concourse-worker_1 ... done

停止または削除

docker-composeの停止させます。

停止
$ docker-compose stop
削除
$ docker-compose down

##flyのインストール
concourse-ciでは、パイプラインの実行はWEBから操作出来ますが登録や削除などはFlyというCLIツールを使って行います。

以下の場所からダウンロードしてください。
https://concourse-ci.org/download.html
あとは任意の場所に置いてパスを通してください。

とりあえず起動
$ wget https://github.com/concourse/concourse/releases/download/v5.0.1/fly-5.0.1-darwin-amd64.tgz
$ tar zxvf fly-5.0.1-darwin-amd64.tgz
$ ./fly --version
5.0.1

flyを使うには、ログインする必要がありますが、ブラウザを使ってログインする必要があります。
以下のコマンドを叩いて、表示されたURLでログインすればflyコマンドが使えるようになります。

$ ./fly -t tutorial login -c http://localhost:8080
logging in to team 'main'

navigate to the following URL in your browser:

  http://localhost:8080/login?fly_port=59005

or enter token manually: 
target saved

tutorialは任意のターゲット名を指定しています。

##Macのworkerを構築
workerを起動させる為にはconcourse-ciをMacにインストールさせる必要があります。

以下の場所からダウンロードしてください。
https://concourse-ci.org/download.html
あとは任意の場所に置いてパスを通してください。

とりあえず起動
$ wget https://github.com/concourse/concourse/releases/download/v5.0.1/concourse-5.0.1-darwin-amd64.tgz
$ tar zxvf concourse-5.0.1-darwin-amd64.tgz
$ sudo concourse/bin/concourse worker --work-dir /opt/concourse/worker --tsa-host 127.0.0.1:2222 --tsa-public-key ./keys/worker/tsa_host_key.pub --tsa-worker-private-key ./keys/worker/worker_key
{"timestamp":"2019-03-27T08:28:51.806578000Z","level":"info","source":"baggageclaim","message":"baggageclaim.listening","data":{"addr":"127.0.0.1:7788"}}
{"timestamp":"2019-03-27T08:28:51.806565000Z","level":"info","source":"worker","message":"worker.garden.started","data":{"session":"1"}}
{"timestamp":"2019-03-27T08:28:51.843553000Z","level":"info","source":"worker","message":"worker.beacon-runner.beacon.registered","data":{"session":"9.1"}}

concourse-ciがdockerで起動していなかったり、接続情報が間違っているとエラーを吐き出していると思います。

エラー
{"timestamp":"2019-03-27T08:32:15.293364000Z","level":"info","source":"worker","message":"worker.garden.started","data":{"session":"1"}}
{"timestamp":"2019-03-27T08:32:15.293453000Z","level":"info","source":"baggageclaim","message":"baggageclaim.listening","data":{"addr":"127.0.0.1:7788"}}
{"timestamp":"2019-03-27T08:32:15.293484000Z","level":"error","source":"worker","message":"worker.beacon-runner.beacon.failed-to-connect-to-tsa","data":{"error":"dial tcp 127.0.0.1:2222: connect: connection refused","session":"9.1"}}
{"timestamp":"2019-03-27T08:32:15.293673000Z","level":"error","source":"worker","message":"worker.beacon-runner.beacon.dial.failed-to-connect-to-any-tsa","data":{"error":"all worker SSH gateways unreachable","session":"9.1.1"}}
{"timestamp":"2019-03-27T08:32:15.293707000Z","level":"error","source":"worker","message":"worker.beacon-runner.beacon.failed-to-dial","data":{"error":"all worker SSH gateways unreachable","session":"9.1"}}
{"timestamp":"2019-03-27T08:32:15.293747000Z","level":"error","source":"worker","message":"worker.beacon-runner.beacon.exited-with-error","data":{"error":"all worker SSH gateways unreachable","session":"9.1"}}
{"timestamp":"2019-03-27T08:32:15.293808000Z","level":"error","source":"worker","message":"worker.beacon-runner.failed","data":{"error":"all worker SSH gateways unreachable","session":"9"}}

###起動の確認

以下のコマンドで、platformdarwinが追加されてれば大丈夫

$ fly -t tutorial workers
name                   containers  platform  tags  team  state    version
d06145c75abb           0           linux     none  none  running  2.1    
hostname.local         0           darwin    none  none  running  2.1   

これで、一旦concourse-ciが使える状態になったので使い方を別記事で書くかも

##参考

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?