地方在住IT系ニート

bkds

GitHub Actionsのメモ

はじめに

GitHub Actionsは、CI/CDのためのツールです。
GitHubリポジトリ内でワークフローを定義することができます。

GitHub Actionsには下記のような概念があります。

  • Workflow:一連のプロセスを.github/workflows/ディレクトリ内のYAMLファイルで定義します。
  • Job:ワークフロー内の単位作業を定義します。
  • Step:ジョブ内のタスクを定義します。
  • Action:再利用可能なコマンドセット。GitHub Marketplaceから取得できます。

ワークフローの作成

リポジトリの作成

GitHub上でリポジトリを作成します。
手順

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

リポジトリ内に.github/workflows/ ディレクトリを作成し、その中にYAMLファイル(例: main.yml)を作成します。

下記のワークフローは、リポジトリにコードがプッシュされるたびに、Pythonのセットアップをし、テストを実行します。

   name: CI

   on: [push]

   jobs:
     build:
       runs-on: ubuntu-latest
       steps:
         - name: Checkout code
           uses: actions/checkout@v3

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

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

         - name: Run tests
           run: |
             pytest

リモートサーバへSSHする場合

GitHubリポジトリの設定からワークフローで利用するSSH_KEYを設定する必要があります。
設定はSettings -> Secrets and variables -> ActionsからNew repository secretを押下することでできます。

ワークフロー内でssh-agentを利用してSSH_KEYの値を登録します。
この設定のみでは、hostname contains invalid charactersエラーが発生したため、ssh-keyscanを用いてホストキーの登録を実施します。
これでssh接続が可能になります。

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Set up SSH
        uses: webfactory/[email protected]
        with:
          ssh-private-key: ${{ secrets.SSH_KEY }}

      - name: Add SSH keyscan to known_hosts
        run: |
          ssh-keyscan -H ServerName >> ~/.ssh/known_hosts
にほんブログ村 IT技術ブログ IT技術メモへPVアクセスランキング にほんブログ村