スターサーバーへの自動デプロイ
netowl社が提供するスタードメインは、リーズナブルな価格で独自ドメインを取得でき、さらに無料で高機能スターサーバーをレンタルすることができる(全力媚売り)。 スターサーバーはftpでのアップロードに対応しているが、毎回一々アップロード作業を行うのが面倒なので、Github Actionsを用いて自動化することにした。
スターサーバーへの接続
これは2021年移行の新契約用の説明になる。 接続用の情報は以下の通り。
| FTPサーバー(ホスト)名 | sv****.star.ne.jp |
| ユーザー(アカウント名) | FTPアカウントに設定したユーザーID(XXX@YYYY.ZZ) |
| パスワード | FTPアカウントに設定したFTPパスワード |
ftpコマンドやファイルマネージャーで接続した際には、サーバーパネル>FTP>FTPアカウント設定 の接続先ディレクトリに繋がる(そこがルートディレクトリになる)。
例えばotsu36.netの場合は接続先が/home/ssXXXXXX/otsu36.netになっている。
このディレクトリ内のpublic_htmlが公開ページになる。つまり https://otsu36.net/ で表示されるのは、実際には/home/ssXXXXXX/otsu36.net/public_html/index.htmlということ。
Github Actions
pushなどのタイミングでコマンドやらを実行できる機能。.github/workflows/ にymlファイルを置くことで設定を追加できる。 アクション実行に必要な機密情報(パスワードなど)をymlに直に書くのはまずいので、環境変数(Repository secrets)に保持しておくのが無難。
Repository secrets
リポジトリのSettingsからsecretsを追加できる。 以下のNew Repositry secretを押し

KeyとValueをそれぞれNameとSecretに入力する。

これでリポジトリ内からsecrets.keyの形で参照できる。
yml
例えばmainブランチへのpushの度にftpでデプロイするには以下のように書く。
deploy.yml
name: FTP Deploy
on:
push:
branches: [ "main" ]
jobs:
ftp-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install FTP Deploy Action
uses: SamKirkland/FTP-Deploy-Action@v4.3.6
with:
server: ${{ secrets.FTP_HOST }}
username: ${{ secrets.FTP_USER }}
password: ${{ secrets.FTP_PASS }}
server-dir: /public_html/
local-dir: ./public_html/
protocol: ftps
SamKirkland/FTP-Deploy-Actionなるものがよしなにしてくれるらしい。バージョンは適宜。 注意したいのはserver-dir。スターサーバーの接続先ディレクトリがルート扱いになるので、public_htmlにアップロードするには server-dir: /public_html/ と書かないといけない。