GitHub Actionsによる自動化入門

こんにちは。今回は、GitHub初心者に向けて、GitHub Actionsによる自動化の基本について解説します。

はじめに

GitHub Actionsは、GitHubが提供する自動化ツールです。GitHub上で行われるイベントやタスクをトリガーに、様々なプロセスを自動実行できます。例えば、コードをプッシュすると自動的にテストを実行したり、リリースを行うと自動的にデプロイを行うことができます。

GitHub Actionsの基本

ワークフローファイルの作成

GitHub Actionsは、ワークフローファイル(yaml形式)によって定義されます。ワークフローファイルは、.github/workflowsディレクトリに配置する必要があります。以下は、Node.jsで書かれたアプリケーションを自動テストするワークフローファイルの例です。

name: CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14.x'
    - run: npm ci
    - run: npm run test

このワークフローファイルでは、GitHub上でのpushイベントをトリガーに、ubuntu-latest環境でNode.jsのテストを実行しています。

アクションの利用

ワークフローファイルの中で、アクションを指定することで、特定のタスクを実行できます。アクションには、GitHubが提供する公式のアクションや、コミュニティが作成したアクションを利用できます。

以下の例では、公式のアクションであるactions/checkoutを利用して、リポジトリをクローンしています。

steps:
- uses: actions/checkout@v2

また、以下の例では、アクションとしてactions/upload-artifactを指定して、ビルド成果物をアップロードしています。

steps:
- uses: actions/upload-artifact@v2
  with:
    name: binary
    path: path/to/binary

環境変数の設定

ワークフローの中で、環境変数を設定することができます。以下の例では、環境変数API_KEYを設定しています。

env:
  API_KEY: ${{ secrets.API_KEY }}

環境変数には、GitHubのシークレット機能を利用して、APIキーやパスワードなどの機密情報を安全に設定することができます。

ジョブの並列実行

複数のジョブを同時に実行することができます。以下の例では、job1job2を並列で実行しています。

jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
    - run: echo Hello from Job 1

  job2:
    runs-on: ubuntu-latest
    steps:
    - run: echo Hello from Job 2

ワークフローのトリガーの設定

ワークフローをトリガーするイベントを指定することができます。以下の例では、pushイベントとpull_requestイベントをトリガーに設定しています。

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

ワークフローの実行状況の確認

GitHub Actionsの実行状況は、GitHubのUIから確認することができます。また、以下のコマンドを利用することで、CLIからも確認することができます。

$ gh run list

サンプルコード

以下は、Pythonで書かれたアプリケーションを自動テストするワークフローファイルの例です。

name: CI

on: [pull_request]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.x'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings.
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

    - name: Test with pytest
      run: |
        pytest --cov=./ tests/

注意点

  • GitHub Actionsは、無料で利用できますが、一定の制限があります。詳細は、公式ドキュメントを参照してください。
  • ワークフローファイルは、yaml形式であるため、インデントが正しく設定されているかを確認する必要があります。
  • アクションを利用する際には、そのアクションがどのような権限を必要とするかを確認し、必要な権限を付与する必要があります。

GitHub Actionsは、様々なタスクを自動化できる非常に便利なツールですが、誤った設定によってセキュリティ上の問題を引き起こす可能性があります。注意深く設定を行い、セキュリティを確保するようにしましょう。

まとめ

今回は、GitHub Actionsによる自動化の基本について解説しました。GitHub Actionsを利用することで、開発プロセスの自動化が容易になります。ぜひ、自身のプロジェクトに導入してみてください。

 

Github 関連のまとめ

Github 関連のまとめ
GitHub Actionsによる自動化入門   Github ActionsによるCI/CDの自動化   Github Actions CI/CD   Github Actionsの無料プランと有料プランの比較   Github Acti...

 

オンラインスクールを講師として活用する!

【完全無料】使えるプログラミングスクール体験セミナー
【完全無料】使えるプログラミングスクール体験セミナー WEB制作の無料教材がここにきてどんどん増えてきてるので、使えるものをまとめようと思います。 TecAcademy(テックアカデミー) TechAcademyの無料体験 Samurai ...

 

0円でプログラミングを学ぶという選択

タイトルとURLをコピーしました