♻️
今すぐGitHub ActionsでCI/CDを構築したいときのノート
対象者
- いちいちデプロイするのがめんどくさい人
- プロセスを自動化したい人
設定しておくこと
レポジトリの設定から各種secretsを設定しておく
SSH_PRIVATE_KEY
SSH_HOST
SSH_USERNAME
SSH_PORT
レポジトリにコンフィグファイルを追加する
対象ディレクトリ: .github/workflows
ファイル名は任意(ここではdeploy.yml)
name: Build and deploy an example repository
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Clone checkout@v4
uses: actions/checkout@v4
- name: Setup SSH agent
uses: webfactory/ssh-agent@v0.5.3
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Deploy to Linux server
env:
SSH_HOST: ${{secrets.SSH_HOST}}
SSH_USERNAME: ${{secrets.SSH_USERNAME}}
SSH_PORT: ${{secrets.SSH_PORT}}
PROJECT_PATH: hogehoge/hogehoge
REPOSITORY_NAME: hogehoge.git
run: |
ssh -o StrictHostKeyChecking=no -p $SSH_PORT $SSH_USERNAME@$SSH_HOST << EOF
set -e
if [ -d "$PROJECT_PATH" ]; then
cd $PROJECT_PATH
git reset --hard
git pull
else
git clone git@github.com:$REPOSITORY_NAME $PROJECT_PATH
cd $PROJECT_PATH
fi
# envファイルとかをコピーするならここで
# 今回はDockerを使用
docker compose up --build -d --no-deps
EOF
コンフィグの解説
タイトル設定
name: Build and deploy an example repository
実行環境の設定
ここでは最新のUbuntuを使う
runs-on: ubuntu-latest
対象のブランチ設定
on:
push:
branches:
- main
リポジトリをクローンするための設定
- name: Clone checkout@v4
uses: actions/checkout@v4
- name: Setup SSH agent
uses: webfactory/ssh-agent@v0.5.3
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
サーバーへアクセスして実行するコマンド
- name: Deploy to Linux server
env:
SSH_HOST: ${{secrets.SSH_HOST}}
SSH_USERNAME: ${{secrets.SSH_USERNAME}}
SSH_PORT: ${{secrets.SSH_PORT}}
PROJECT_PATH: hogehoge/hogehoge
REPOSITORY_NAME: hogehoge.git
run: |
ssh -o StrictHostKeyChecking=no -p $SSH_PORT $SSH_USERNAME@$SSH_HOST << EOF
set -e
# 必要なコマンドをここに追加
EOF
Discussion