- CI/CDとは
- ツールの紹介
- GitHub Actions概要
- ハンズオン
- まとめ
- おまけ
--
継続的インテグレーション、CI(continuous integration)とは、すべての開発者の作業コピーを定期的に共有されたメインラインにマージすることである。
- 継続的インテグレーション
- 短期間でメインのラインにマージする
--
継続的デリバリー(continuous delivery、CD)とは、チームが短いサイクルでソフトウェアを生産し、いつでも確実にソフトウェアをリリースできるようにし、ソフトウェアをリリースする際には、手動で行うソフトウェアエンジニアリングのアプローチである。
- 継続的デリバリー
- 継続的デプロイともいう
- 短期間でデプロイする
--
- 差分の把握が容易
- 変更量が少ない
- 問題特定の難易度が低い
--
- レビューやテスト、マージを迅速に行う必要がある
- 自動化
--
- CIを行うための一連の流れ
- リポジトリへのコミットがトリガーとして処理を行う
- 静的解析、テスト、ビルド、デプロイなど
--
--
--
- GitLab
- AWS
- CodePipeline, CodeBuild, CodeDeploy
- Azure
- Azure DevOps, Pipelines
- GCP
- Cloud Build
--
- GitHubのCI/CD機能
- yamlファイルで設定を記載
--
- GitHubの1機能
- CI/CDサービスとしては後発
- Microsoftの子会社
--
- GitHub関連サービスと連携が容易
- ユーザ数が桁違い
- MarketPlaceが活発
- コミット以外もトリガーに指定可能
--
- 2019年11月正式に公開
- 既存のサービスの良いとこ取り
- アップデートが早い
- シェアを取るためにサービスが良い
--
- 💰
- 開発スピードが早い
- Azureが裏にいるため信頼性が高い
--
- GitHubのアカウント作成
--
- リポジトリ作成
- GitHub Actionsを使ってみる
- pylintでPythonコードをチェック
- flake8でPythonコードをチェック
- 指摘内容をPRにコメントさせる
--
--
--
--
--
※simple
で検索→Simple workflow
→Configure
--
※中身をサラッと見てechoなどが書かれている事を確認
--
--
--
※ymlに書かれていたコマンドが実行されている
--
※リポジトリトップに戻ってから。
--
- linterに指摘されそうなコードを書く
- 使用しないimport、余計なスペースとか
--
--
--
※pylintで検索してConfigure
--
- 中身をサラッと見て以下を確認
- Pythonのセットアップ、複数のバージョン、依存ライブラリ、pylint実行
--
--
※Actions→Pylint→コミットメッセージ
--
※複数のバージョンで実行されている事を確認
--
--
※Actions
→New Workflow
→Pylint
--
※ファイル名、pip、実行コマンドは必須
--
name: flake8
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8
- name: Analysing the code with flake8
run: |
flake8 $(git ls-files '*.py')
--
※コミットして結果を確認
--
--
※2ページ目くらいにある「Run flake8 with reviewdog」を選択
--
--
on
をpull_request
に変更Set up Python
以下に貼り付けて設定
--
name: flake8
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Run flake8 with reviewdog
uses: reviewdog/action-flake8@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
fail_on_error: true
reporter: github-pr-review
--
※実行が pull_request
のため動作しない
--
※リポジトリトップから Add file
--
- linterに指摘されそうなコードを書く
- 使用しないimport、余計なスペースとか
--
※ Create a new branch...
を選択
--
--
--
- 簡単
- 汎用性高い
- 効果抜群
--
- GitLabもCI機能を持っている
--