5
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 3 years have passed since last update.

CircleCIについて

Posted at

成果物を本番環境にデプロイするにあたってCircleCIを利用するとのことで,学習した内容を共有してみたい.

1. CIとは

Continuous Integrationの略で、継続的インテグレーション.
複数人のコードを統合したときのエラー発見を早期に行える.
ビルドやテストを自動化し簡単に行うことができ,ビルドが常に通る状態を維持しやすくなる.
ミルプラトーではAPIで叩くことで,本番環境で運用したりしている.

2. CircleCI入門

CircleCIの公式日本語リファレンスが充実している.自分のGithubアカウントで色々試してみると,感覚が掴めてくるだろう. GithubやDockerと同様,慣れれば簡単なので,がんばろう.

2.1 基本的な使い方の手順

  1. ディレクトリに.circleciフォルダを作成し,その中でconfig.ymlを作成する.このconfig.ymlで色々設定することで,circleCIに指示を出す感じになる.
  2. Gitでpushまで行うと,CircleCIが自動で変更を検知し,勝手にビルドしてくれる.CircleCIにログインしてビルドがちゃんと通っているか確認する.通ってなければ書き直す.

2.2 config.yml

 Dockerfileやdocker-compose.ymlと同じ感じ.独特のお作法が色々あるので,公式ドキュメントを参照しながら動かしていこう.以下はconfig.ymlの記述例となる.

config.yml
# 最新バージョンは2.1.最新バージョン2.1でないとcommandやexecutorsが使えないので,2.1を使おう.
version: 2.1

# stepsを実行するための環境を定義.dockerやlinuxなど.
executors: 
  my-executor:
    # デフォルトでは~/project. ~は「チルダ」と読み,Linuxにおけるユーザのホームを表す.
    working_directory: ~/app
    docker:
    # dockerイメージを指定.circleciの公式イメージを利用するのが良い.circleciを動作させるのに必要なパッケージが含まれているから.
      - image: circleci/python:3.8-buster
    resource_class: xlarge

# 実行処理を行う.
jobs: 
  build:
    executor: my-executor
    steps: # buildジョブを構成するステップ.
      # ソースコードを作業ディレクトリにチェックアウトする.この場合では~/app.
      - checkout

      # Install ffmpeg
      - restore_cache:
          key: dependency-cache-ffmpeg-v0.0.1
      - run: 
          name: Install ffmpeg 
          command: |  # 複数コマンドを実行する際にcommandを用いる
            sudo apt -y update
            sudo apt install -y ffmpeg
      - save_cache:
          key: dependency-cache-ffmpeg-v0.0.1
          # cacheにその他のキャッシュ全般.venvにpythonの依存関係のキャッシュ.
          paths:
            - ~/cache

      # pythonの依存関係をインストールする
      # 依存関係をインストールする前に,利用できるキャッシュがあるか検索する.
      - restore_cache:
          key:  dependency-cache-{{ checksum "requirements.txt" }}-20201127
      - run:
          name: Install python dependencies
        # Python の依存関係をインストールする仮想環境を作成してアクティブ化する.
          command: |
            # 仮想環境の作成 python -m venv <name>
            python3 -m venv venv
            # 仮想環境をアクティベートする
            . venv/bin/activate
            pip3 install --upgrade pip
            pip3 install -r requirements.txt
      # キャッシュを保存する.次回restoreするため.
      - save_cache:
          key: dependency-cache-{{ checksum "requirements.txt" }}-20201127
          # 指定したパスにキャッシュを作成する.生成されたキーに一致するキャッシュが既に存在する場合、CircleCI は新しいキャッシュを保存しない.
          paths: 
            - "venv"

      # Predict
      - run: 
          name: run.py
          command: | 
            . venv/bin/activate
            python3 run.py
# 2.1ではworkflowsへのversion指定は必要がない
# workflowsを用いない場合は,job内のbuildが自動的に選択されて実行される.

workflows:
  build:
    jobs:
      # jobで定義したbuildを実行する
      - build

# Dockerfileは環境構築のマニュアルとして作成する.CircleCIやAWS,ローカル環境など,様々な環境に対応する元のスクリプトとなる.
# DLCはコストの関係で用いない.CircleCIに任せる.Dockerfileを利用するよりもキャッシュを利用しやすい.

参考文献

公式レファレンスが充実しているので,それを読めばほとんどの知識は得られる.ブログの数は多くなく,公式の方が内容も良い.

5
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
5
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?