DockerでDevOpsな環境を整える
ここ数年、炎上してる案件にアサインされてる。。
傾向として、svnでブランチがいっぱい作ってマージでデグレしたり、
Excelでバグ表を管理したり、ガントチャートを手作業で管理したり、
結合テストの段階までプログラムを動かしたテストをしてない、
テストが自動化されていないと惨憺たる状況が見られる。。。
正直、付き合ってられない😭
チンパンジーを相手にしてる気分、
ということで、docker-compose
を使って、進捗/バグ管理にRedmine
ソース管理と自動テストのためにgitlab,gitlab-runnerの環境を整えてみました。
ソースコードやバグの管理、テストの自動化などに使っていただければ幸いです。
docker-compose.ymlファイル
version: "3"
volumes:
# gitlab関連Volume
gitlab-config:
name: gitlab-config
gitlab-logs:
name: gitlab-logs
gitlab-data:
name: gitlab-data
gitlab-runner-config:
name: gitlab-runner-config
# redmine関連 Volume
redmine-plugins:
name: redmine-plugins
redmine-themes:
name: redmine-themes
redmine-db:
name: redmine-db
networks:
cicd-network: # gitlab-redmine用ネットワーク
name: cicd-network
driver: bridge
ipam:
driver: default
config:
- subnet: 172.27.11.0/24
gateway: 172.27.11.1
services:
# redmine 本体
redmine:
container_name: redmine
image: redmine
restart: always
ports: # Redmine公開port
- 8081:3000
environment:
REDMINE_DB_MYSQL: redmine-db
REDMINE_DB_PASSWORD: redminepass
volumes:
- redmine-plugins:/usr/src/redmine/plugins
- redmine-themes:/usr/src/redmine/public/themes
networks:
cicd-network:
ipv4_address: 172.27.11.2
redmine-db:
image: mysql:5.7
container_name: redmine-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: redminepass
MYSQL_DATABASE: redmine
volumes:
- redmine-db:/var/lib/mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
networks:
cicd-network:
ipv4_address: 172.27.11.3
# GitLab関連コンテナ
lab:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gitlab.com'
container_name: gitlab
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.my.com'
ports: # git公開ポート
- '8080:80'
# - '443:443'
# - '22:22'
volumes:
- 'gitlab-config:/etc/gitlab'
- 'gitlab-logs:/var/log/gitlab'
- 'gitlab-data:/var/opt/gitlab'
shm_size: '256m'
networks:
cicd-network:
ipv4_address: 172.27.11.4
runner:
image: gitlab/gitlab-runner:latest
restart: always
container_name: gitlab-runner
volumes:
# dind でもいいが、今回はDooDでDockerHostのソケットファイルを共有
- /var/run/docker.sock:/var/run/docker.sock
- gitlab-runner-config:/etc/gitlab-runner
networks:
cicd-network:
ipv4_address: 172.27.11.5
コンテナを起動する。
上記のdocker-compose.yml
を格納したディレクトリで以下のコマンドを実行するだけです。
docker-compose up -d
GitLabにログインする
http://<DockerhostのIP>:8080/
でログイン画面を開く、
初回はroot
でログインする。
パスワード以下のコマンドで取得できる。
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
Redmineにログインする
http://<DockerhostのIP>:8081/
でログイン画面を開く。
デフォルトでユーザー名,パスワードが共にadminとなっている。
gitlab-runnerでCI/CDの設定をする
-
gitlab-runnerのコンテナに入り、
gitlab-runner register
を実行する。# runner のコンテナに入って、gitlab-runnerに登録する docker exec -it gitlab-runner /bin/bash gitlab-runner register
-
URLを聞かれたら、
http://172.27.11.4:80
を入力する
(docker-compose.ymlでipを振ってるので、DockerホストのIPに置き換えなくていいです。🤗) -
tokenを聞かれたら、
gitlabのページから「settings」→「CI/CD」→「Runners」をクリックして、
「Specific runners」でtokenをコピーする。
-
runnerのdescription、テストを実行するタグなどが聞かれる。
(適当に入力してください、入力せずにenterでも大丈夫) -
実行環境が聞かれるので、やりたいことに合わせて適宜入力する。
(shellにするとあれこれ聞いてこないので楽🤗) -
gitlab-runner register
の設定が終わって、gitlabの画面を更新すると
追加したrunnerが確認できる。 -
追加されたrunnerでeditをクリックし、「Run untagged jobs」にチェックする。
-
最後に
.gitlab-ci.yml
ファイルをコミットするとrunner
が動くようになる。