Zenn
♻️

今すぐGitHub ActionsでCI/CDを構築したいときのノート

2025/01/25に公開

対象者

  • いちいちデプロイするのがめんどくさい人
  • プロセスを自動化したい人

設定しておくこと

レポジトリの設定から各種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

ログインするとコメントできます