ConcourseのチュートリアルでHello worldをやってみた

2019-07-17 2019-07-18

このチュートリアルをやりました。

環境構築

git repository: https://github.com/starkandwayne/concourse-tutorial.git
commit: 0214f622cdf912307a50817398a71014bf90032c

環境を構築する。
チュートリアルのリポジトリをクローンしてきます。
僕がやった時点では、masterブランチのコミットIDが0214f622cdf912307a50817398a71014bf90032cでした。

$ git clone https://github.com/starkandwayne/concourse-tutorial.git
$ git checkout 0214f622cdf912307a50817398a71014bf90032c

リポジトリを持ってきたら、dockerを起動します。

$ cd concourse-tutorial
$ docker-compose up -d
$ docker-compose ps
           Name                         Command             State           Ports
------------------------------------------------------------------------------------------
concourse-                    docker-entrypoint.sh          Up      5432/tcp
tutorial_concourse-db_1       postgres
concourse-                    /usr/local/bin/dumb-init /    Up      0.0.0.0:8080->8080/tcp
tutorial_concourse_1          ...

コンテナが起動したら、http://localhost:8080/ にアクセスして、flyコマンドをダウンロードします。僕はMacなので、りんごマークをクリックしてダウンロードしました。
ダウンロードしたfly~/bin/に入れ、実行許可を与えました。

$ mv ~/Downloads/fly ~/bin/fly
$ chmod +x ~/bin/fly
$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc # ~/binにパスが通ってなかったらやる(bashを使っているなら、.bashrc)
$ source ~/.zshrc
$ fly --version
5.3.0

Hello worldする

task-hello-worldに移動して、task_hello_world.ymlのタスクを実行してみる。

$ cd concourse-tutorial/tutorials/basic/task-hello-world
$ fly -t tutorial execute -c task_hello_world.yml
could not find a valid token.
logging in to team 'main'

navigate to the following URL in your browser:

  http://127.0.0.1:8080/sky/login?redirect_uri=http://127.0.0.1:62081/auth/callback

or enter token manually:
target saved
executing build 1 at http://127.0.0.1:8080/builds/1
initializing
waiting for docker to come up...
Pulling busybox@sha256:c94cf1b87ccb80f2e6414ef913c748b105060debda482058d2b8d0fce39f11b9...
sha256:c94cf1b87ccb80f2e6414ef913c748b105060debda482058d2b8d0fce39f11b9: Pulling from library/busybox
8e674ad76dce: Pulling fs layer
8e674ad76dce: Download complete
8e674ad76dce: Pull complete
Digest: sha256:c94cf1b87ccb80f2e6414ef913c748b105060debda482058d2b8d0fce39f11b9
Status: Downloaded newer image for busybox@sha256:c94cf1b87ccb80f2e6414ef913c748b105060debda482058d2b8d0fce39f11b9

Successfully pulled busybox@sha256:c94cf1b87ccb80f2e6414ef913c748b105060debda482058d2b8d0fce39f11b9.

running echo hello world
hello world
succeeded

以下が、 このタスクを実行した時の出力のようだ。

running echo hello world
hello world
succeeded

task_hello_world.ymlの中身。

---
platform: linux

image_resource:
  type: docker-image
  source: {repository: busybox}

run:
  path: echo
  args: [hello world]

以下のURLでwebで実行結果を確認できる。

http://127.0.0.1:8080/builds/1

unameを実行するタスクを実行する

concourse-tutorial/tutorials/basic/task-hello-worldの中にあるtask_ubuntu_uname.ymlを実行する。

$ fly -t tutorial execute -c task_ubuntu_uname.yml
executing build 4 at http://127.0.0.1:8080/builds/4
initializing
running uname -a
Linux 7e70fe4d-b162-4156-5fee-4b90282d6d6b 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
succeeded

task_hello_world.ymlの中身は以下なので、ubuntuでuname -aが実行されている事がわかる。

---
platform: linux

image_resource:
  type: docker-image
  source: {repository: ubuntu}

run:
  path: uname
  args: [-a]

わかったこと

  • concourseの構築は、docker-composeでできる
  • flyコマンドでconcourseを操作する
  • タスクは、yaml形式で記述する
  • image_resourceに指定したイメージは、自動でpullされる
  • http://127.0.0.1:8080/builds/{build番号}でwebから結果を見れる

わかってないこと

  • platform:は何を意味しているのか?
  • タスク実行時の-tでtargetを指定しているが、targetがよくわかってない
    • docker-composeで起動した時のコンテナ名のプレフィックスと同じ値になっているような気がする。