LoginSignup
0
0

VPS に GitHub Actions と docker-compose を使ってデプロイ

Last updated at Posted at 2023-12-27

1. 作ったもの

GitHub の main ブランチに push すると、ソースコードをサーバ (VPS) にデプロイしてくれる機能

  • 備忘録になります。すべてざっくりとしか書いていません

2. ファイル

◯ 構成

$ tree -a -L 3
.
├── docker-compose.yml
├── deploy.sh
└── .github
    └── workflows
        └── main.yml
$ 

2.1. main.yml

  1. 初期設定をする(actions/checkout@v2のこと、よくわからない)
  2. SSH を設定する
  3. GitHub Actions が deploy.sh を本番環境で実行する
main.yml
name: Deploy to VPS

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    # 1. `name` はコメント
    # 2. `uses` は関数
    # 3. `with` は引数
    steps:
    - name: 1. GitHub Actions の初期設定、らしいです。なにをしているかはわかりません...
      uses: actions/checkout@v4

    - name: 2. SSH を設定します。
      uses: shimataro/ssh-key-action@v2
      with:
        # 1. 秘密鍵
        #    ここにコピペ
        #    https://github.com/{your-github-account}/{your-project}/settings/secrets/actions
        private-key: ${{ secrets.DEPLOY_KEY }}
        
        # 2. 公開鍵
        #    ここからコピペ(VPS に WebARENA Indigo を利用されている方は)
        #    https://indigo.arena.ne.jp/sshkey
        known-hosts: ssh-rsa AAAAB3N...

    - name: 3. デプロイします。
      run: |
        pwd
        ls -la
        ssh -o StrictHostKeyChecking=no ubuntu@example.com 'bash -s' < deploy.sh
        # scp コマンドでアップロードする方法もあるそうです。
        # 今回は gh コマンドでダウンロード
        # scp -r . ubuntu@example.com:/home/ubuntu/Projects/new-your-project

2.2. deploy.sh

  1. 古い docker-compose を停止する
  2. 古い docker-compose をバックアップする
  3. 新しい docker-compose を起動する
deploy.sh
#!/bin/bash

# 1. down
cd /home/ubuntu/Projects/your-project
docker-compose down

# 2. backup
cd /home/ubuntu/Projects
yyyymmddhhmmss=`date +%Y%m%d%H%M%S`
mv your-project your-project-${yyyymmddhhmmss}

# 3. up
gh repo clone your-github-account/your-project
cd /home/ubuntu/Projects/your-project
docker-compose up --build -d

3. 前提知識

これを知らないと上で何を書いているかわからない(正直この記事を書いている本人も何を書いているかわからない)。

3.1. GitHub Actions

GitHub Actions の理解はこの辺から...

30分程度で概要から基本的な文法まで教えてくれます。Udemy も含めて色々探したのですが、この動画しか理解できませんでした(この動画も理解はできていません...)。

GitHub Actions で使用する YAML の文法はサプーさんに教えてもらってください。

3.2. SSH

SSH の理解が足らずに苦慮しました。

  1. 秘密鍵 だけでなく
  2. 公開鍵 も提示しないといけないというのは想定外でした
  3. -o StrictHostKeyChecking=no とかもなんなのかよくわかっていません

4. そのほか

今回使用した VPS は WebARENA Indigo になります。

WebARENA を使っているのですが、この記事には助けていただきました。最初、ログインの資料が見当たらなくて焦りました笑

さくらの VPS へのデプロイの記事になります。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0