Skip to content

Latest commit

 

History

History
504 lines (305 loc) · 8.86 KB

slide.md

File metadata and controls

504 lines (305 loc) · 8.86 KB
<style type="text/css"> .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { text-transform: none; } .reveal blockquote p { font-size: 32px; } </style>

CI/CDとGitHub Actions


アジェンダ

  • CI/CDとは
  • ツールの紹介
  • GitHub Actions概要
  • ハンズオン
  • まとめ
  • おまけ

CI/CDとは

--

CI とは

継続的インテグレーション、CI(continuous integration)とは、すべての開発者の作業コピーを定期的に共有されたメインラインにマージすることである。

--

CD とは

継続的デリバリー(continuous delivery、CD)とは、チームが短いサイクルでソフトウェアを生産し、いつでも確実にソフトウェアをリリースできるようにし、ソフトウェアをリリースする際には、手動で行うソフトウェアエンジニアリングのアプローチである。

--

なぜ短期間なのか

  • 差分の把握が容易
  • 変更量が少ない
  • 問題特定の難易度が低い

--

短期間で行うためには

  • レビューやテスト、マージを迅速に行う必要がある
  • 自動化

CIツールの紹介

--

パイプライン

  • CIを行うための一連の流れ
  • リポジトリへのコミットがトリガーとして処理を行う
  • 静的解析、テスト、ビルド、デプロイなど

--

代表的なCIツール

--

モバイル系

  • Bitrise
    • モバイルアプリ開発だと良く名前が出てくる
  • Codemagic
    • Flutterに強い

--

その他

  • GitLab
  • AWS
    • CodePipeline, CodeBuild, CodeDeploy
  • Azure
    • Azure DevOps, Pipelines
  • GCP
    • Cloud Build

GitHub Actions概要

--

GitHub Actionsとは

  • GitHubのCI/CD機能
  • yamlファイルで設定を記載

--

強味

  • GitHubの1機能
  • CI/CDサービスとしては後発
  • Microsoftの子会社

--

GitHubの1機能

  • GitHub関連サービスと連携が容易
  • ユーザ数が桁違い
  • MarketPlaceが活発
  • コミット以外もトリガーに指定可能

--

CI/CDサービスとしては後発

  • 2019年11月正式に公開
  • 既存のサービスの良いとこ取り
  • アップデートが早い
  • シェアを取るためにサービスが良い

--

Microsoftの子会社

  • 💰
  • 開発スピードが早い
  • Azureが裏にいるため信頼性が高い

ハンズオン

--

事前準備

  • GitHubのアカウント作成

--

やること

  • リポジトリ作成
  • GitHub Actionsを使ってみる
  • pylintでPythonコードをチェック
  • flake8でPythonコードをチェック
  • 指摘内容をPRにコメントさせる

リポジトリ新規作成

--

リポジトリ新規作成

リポジトリ新規作成

https://github.com/new

--

READMEは作成しておく

READMEは作成しておく


GitHub Actionsを使ってみる

--

Actionsクリック

Actionsクリック

--

画面から設定ファイルを追加

画面から設定ファイルを追加

--

画面が少し違う場合

画面が少し違う場合

simpleで検索→Simple workflowConfigure

--

画面から設定ファイルを追加

画面から設定ファイルを追加

※中身をサラッと見てechoなどが書かれている事を確認

--

Actions からコミットメッセージをクリック

Actions からコミットメッセージをクリック

--

buildをクリック

buildをクリック

--

結果を確認

結果を確認

※ymlに書かれていたコマンドが実行されている


pylintでPythonコードをチェック

--

Add file

Add file

※リポジトリトップに戻ってから。

--

.py を追加

.py を追加

  • linterに指摘されそうなコードを書く
  • 使用しないimport、余計なスペースとか

--

fileをコミット

fileをコミット

--

Actionsから New workflow

Actionsから New workflow

--

pylintのworkflowを選択

pylintのworkflowを選択

※pylintで検索してConfigure

--

コミット

コミット

  • 中身をサラッと見て以下を確認
  • Pythonのセットアップ、複数のバージョン、依存ライブラリ、pylint実行

--

コミット

コミット

--

Actionsから結果を確認

Actionsから結果を確認

※Actions→Pylint→コミットメッセージ

--

Jobを選択

Jobを選択

※複数のバージョンで実行されている事を確認

--

pylintの結果を確認

pylintの結果を確認


flake8でPythonコードをチェック

--

先ほどと同じようにpylintのworkflowを選択

先ほどと同じようにpylintのworkflowを選択

ActionsNew WorkflowPylint

--

pylint→flake8に変更

pylint→flake8に変更

※ファイル名、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')

--

flake8の結果を確認

flake8の結果を確認

※コミットして結果を確認


指摘内容をPRにコメントさせる

--

flake8の設定ファイルを変更

flake8の設定ファイルを変更

--

Marketplaceでflake8を検索

pylint→flake8に変更

※2ページ目くらいにある「Run flake8 with reviewdog」を選択

--

設定をコピー

設定をコピー

--

設定を追加

設定を追加

  • onpull_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

--

.pyを追加

.pyを追加

  • linterに指摘されそうなコードを書く
  • 使用しないimport、余計なスペースとか

--

PRを作成

PRを作成

Create a new branch... を選択

--

PRを作成

PRを作成

--

PRにコメントが付く

PRにコメントが付く


まとめ

--

まとめ

  • 簡単
  • 汎用性高い
  • 効果抜群

おまけ

--

--