LoginSignup
3
3

More than 3 years have passed since last update.

CI/CDパイプラインとDocker

Posted at

Dockerを使ったCI/CDパイプラインを学習したときのメモです。

CI/CDとは

CI/CDのプロセス

画像引用:ThikIT「DevOps、CI/CDパイプラインでもコンテナは大活躍!」

継続的インテグレーション、継続的デリバリー(デプロイ)するためのプロセスを仕組み化。CIツールの代表的なものに以下がある。

  • Jenkins
  • Travis CI
  • circleci
  • Git Hub Actions

CI/CDとGitコマンド

TravisCI+Docker+Heroku+Railsを使った例。TravisCIの流れとGitコマンドのみ記載。

ワークディレクトリに以下YAMLファイルを格納。

sudo: required

services: docker

before_install:
  - docker-compose up --build -d
  - docker login -u "$HEROKU_USERNAME" -p "$HEROKU_API_KEY" registry.heroku.com 

script:
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:create
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:migrate
  - docker-compose exec --env 'RAILS_ENV=test' web rails test

deploy:
  provider: script
  script:
    docker build -t registry.heroku.com/$HEROKU_APP_NAME/web -f Dockerfile.prod .;
    docker push registry.heroku.com/$HEROKU_APP_NAME/web;
    heroku run --app $HEROKU_APP_NAME rails db:migrate;
  on:
    branch: master

権限の設定、Dockerを使う、コンテナを起動、DB準備、テスト実行、デプロイ実行(gitブランチがmasterの場合のみ)が順番に記述されている。

featureブランチを作成

$ git checkout -b feature

変更したファイルをGitのステージングに上げる

$ git add .

変更をコミットする

$ git commit -m '<commit message>'

featureブランチにpush

$ git push origin feature

TravisCIのbuildが走り、テストコードが実行される。

GitHubでプルリクエストを作成・Merge

GitでMasterブランチに反映されることで、TravisCIのbuildが走り、アプリがデプロイされる。

3
3
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
3
3