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