CircleCI OrbsでパブリッククラウドをCI/CDする

1. Orbsについて

CircleCI OrbsはCircleCIでパブリッククラウドを操作したり、GoやPython等のテスト環境を容易に準備するためのライブラリツールです。設定ファイルはconfig.ymlでYAMLファイル形式で記述します。

前回の記事でCircleCI Orbsを利用したのですが、今回はconfig.ymlの内容を確認していきます。

2. ファイル構成

CircleCIの構成ファイルはgitリポジトリのルートディレクトリに以下の様に設置します。今回見ていくファイルはこの中のconfig.ymlです。

/git-root-folder
 |-.circleci
 |    |- config.yml
 |
 |- README.md
 |- app.yaml
 |- main.py
 |- requirements.txt


3. サンプルコード

3-1. YAMLの基本

CircleCIを始める上で最低限把握しておかないといけないYAML文法は多くなく、以下の5点程度です。

  • 指定したいパラメータ(key)に対し値(value)をセットで記載する。
  • パラメータの階層はインデントで表現する。
  • 各コレクション(複数のデータを要素として持つデータ)は”- “で指定する
  • コメントは”#”で指定する
  • CirclCIでは操作する為の独自のkeyセットが存在する

サンプル

key: value
  - entry1
  - entry2:
      argument-key: argument-value
  # this is comment.

3-2. CircleCIの基本文法

参考ファイル

今回はGCPのAppEngineを利用する想定で、ローカル(CirclCI上)でテスト(ローカルWebサーバでのpytest)の上、デプロイしてみます。

バージョンと共通で利用する環境の定義

versionは必ず指定します。executorsは任意で指定でき、jobで利用するdockerイメージファイル等を共通で指定する場合に利用します。

# *[]内は任意の文字列で指定
version: 2.1
executors:
  [executor-name]:
    working_directory: [~/project]
    docker:
      - image: [google/cloud-sdk:latest]

docker image

imageはcircleciが準備しているものの他に、各ベンダが公開しているものも利用可能です。

    docker:
      - image: [docker-image-name:version]

CircleCIのImageと使い方

CircleCI DockerImageとPre-Install-Tool

Public Docker Images

docker hub

Orbsの利用宣言

orbsの利用は複数指定できます。

orbs:
  gcp-cli: circleci/gcp-cli@1.8.4
  browser-tools: circleci/browser-tools@0.1.4

ワークフローの指定

ワークフローを利用する事でジョブの実行順序、並列実行、実行条件等を指定する事ができます。

workflows:
  version: 2.1
  [workflow-name]:
    jobs:
      - [job-name1]
      - [job-name2]:
          filters:
            branches:
              ignore:
                #このブランチの際にはこのjobは実行しない
                - [ignore git branch name]
      - [job-name3]:
          requires:
       #このジョブが成功している時に実行する
            - [job-name2]
          filters:
            branches:
              only:
         # masterブランチの時のみ実行する
                - [master]

jobの指定

jobはjobsの中に記載します。予約keyは以下の通り。

executor:

DockerImage,Workdirectory等を指定

– checkout

gitリポジトリからソースコードをダウンロード

– run

ジョブを構成するステップ。ビルド,テスト,デプロイ等で分割して実施内容を記載する

– restore_cache: , – save_cache:

ジョブ実行環境をキャッシュ保存、リストアする

– store_artifacts:

ビルド成果物等を取得する(CircleCI画面よりDL可能。)

– store_test_results:

テスト結果を保存する(CircleCI画面よりXML形式で閲覧可能。)

コードサンプル

jobs:
  [job-name]:
    executor: [executor-name]
    steps:
      - checkout   
      - run:
          name: [job step name]
          command: |
            echo "sample job."
            echo "run毎にシェルセッションが切りかわるイメージ"
      - restore_cache:
          key: deps2-{{ .Branch }}-{{ checksum "[requirements.txt]" }}
      - run:
          command: |
            python3 -m venv env
            source env/bin/activate
            pip install -r [requirements.txt]
            mkdir -pv test-reports
      - save_cache:
          key: deps2-{{ .Branch }}-{{ checksum "[requirements.txt]" }}
          paths:
            - 'env'
      - run:
          command: |
            source env/bin/activate
            pytest -rapP --durations=10  --junitxml=[test-reports/junit.xml ] [test_main.py]
      - store_artifacts:
          path: [test-reports]
      - store_test_results:
          path: [test-reports]
      - add_ssh_keys:
          fingerprints:
            - 'YO:UR:FI:NG:ER:PR:IN:TS'

4. 参考URL

参考URL

参考gitリポジトリ

コメントを残す

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)