Github Actionsとは
公式から引用
GitHub Actions は、ビルド、テスト、デプロイのパイプラインを自動化できる継続的インテグレーションと継続的デリバリー (CI/CD) のプラットフォームです。リポジトリに変更をプッシュするたびにテストを実行するワークフロー、またはマージされた pull request を運用環境にデプロイしたりするワークフローを作成できます。
Github Actionsのシークレットについて
公式から引用
シークレットは、組織、リポジトリ、またはリポジトリ環境内に作成する変数です。 作成したシークレットは、GitHub Actionsワークフローで利用できます。 GitHub Actions でシークレットを読み取ることができるのは、シークレットをワークフローに明示的に含める場合のみです。
デプロイ方法
1.XserverのFTP情報の確認
まずXserverのサーバー名・ユーザー名・パスワードを確認していきます。Xserverのサーバーパネルから
- サブFTPアカウント設定
- すべてのドメイン
- FTPソフト設定(タブ)
の順番に選択していくとホスト名とユーザー名が確認できます。
パスワードに関してはXserverを登録した時のメールに書いてあります。
次にディレクトリ構成ですが、Xserverの場合public_htmlの中に配置する形なので/ドメイン名/public_html/
という感じになります。
2.Githubのリポジトリ設定でFTP情報を登録
Githubのリポジトリの画面から下記の順番に選択していきます。
- Settings
- 左サイドバーのSecrets And VariablesのActions
- New repository secretボタン
次にsecretの変数名とFTPの情報を入力していきます。
変数名は何でも良いですが、後で使用するのでわかりやすい名前の方が良いと思います。
自分の場合は下記のようにしました。
入力項目 | 変数名 |
---|---|
サーバー名 | FTP_SERVER |
ユーザー名 | FTP_USERNAME |
パスワード | FTP_PASSWORD |
ディレクトリのパス | FTP_SERVER_DIR |
3.Github Actions用のファイルを作成
以下のディレクトリが必要になるので作成していきます。
ymlファイルの名前は何でも良いです。自分はdeploy.yml
にしました。
.github
└── workflows
└── **.yml
次にymlファイルの中身を記述していきます。
ここで先ほどGithub Actionsのシークレットで定義した変数を使用します。
name: Deploy website on push
on:
push:
branches: [main]
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Get latest code
uses: actions/checkout@v2
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install pnpm
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install
- name: Build Project
run: pnpm build
- name: Sync files
uses: SamKirkland/FTP-Deploy-Action@4.3.1
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
local-dir: ./dist/
server-dir: ${{ secrets.FTP_SERVER_DIR }}
各行の軽い説明
- name:
ワークフローの名前。Github Actionsの管理画面で名前が出てくる - on:
ワークフローをトリガーする条件を指定- push: リポジトリにコードがプッシュされた時にトリガー
- branches: [main]: mainブランチにプッシュされたときのみ実行
- jobs:
ワークフローで実行される具体的な作業単位を定義 - runs-on: ubuntu-latest
ジョブを実行する環境を指定。この場合、最新のUbuntu環境を利用する - steps:
ジョブを順番に実行
今回はローカル環境でNode18、pnpmを使用しているので上記のようになっている。
バージョンや環境などはローカルに必ず合わせる
最後に
上記の設定が完了してmainブランチにプッシュするとデプロイが走ります。
GithubのActionsタブを選択するとデプロイされているかの確認ができます。もしデプロイが失敗した場合はログを確認してエラー内容を見ましょう。
自分の場合はFTP_SERVER_DIRのパス指定が間違っており、最初はそれでエラーが出ていました。
参考にさせていただいたサイト
GitHub Docs
GitHub Docs シークレットの使用
Astroで作ったWebサイトをエックスサーバーに自動アップロードする
GitHub Actions入門