Azure DevOps から Git-ftp でデプロイする
GitHub が一部無料化し、喜んで Bitbucket 島から船を出したのは少し前のことになります。そこで CI も Azure DevOps に切り替えたのですが、上手い具合にコミット差分のみを Web サイトに FTP で反映させる方法がありませんでした。
そこで、Bitbucket でやっていたように Git-ftp を使おうと思い立ったのがさっきの話です。
Azure DevOps でプロジェクトを作ったり、簡単な準備はできるものとします。
パイプラインを作成する
まずは新しいパイプラインを作成します。
次に、目的のリポジトリに接続します。
Empty Job をクリックして、空のジョブを作成します。
Pipeline に適当な名前を付けて、Agent Pool から Ubuntu を選びます。なんとなく失敗しなさそうな気がしたので。
Agent Job 1 の + ボタンからタスクを追加します。お好みで Bash を選びます。下の Command Line でも Bash が動くとの事なので、多分どっちでも良いです。
次のスクリプトを指定します。
echo "Installing git-ftp"
sudo apt-get install git-ftp
echo "Pushing"
git config git-ftp.syncroot .
git ftp init -u FTPのユーザー名 -p FTPのパスワード ftp://転送先
echo "Done Pushing"
Inline ならこんな感じに
ここで一度 Save & queue から保存して一度走らせます。
差分アップロードを行う
先ほどの手順で、Git-ftp が初回の転送を完了し、ログが作成されました。ログにはアップロードされた最後のコミットハッシュが記録されており、次回からはこれを見て、必要な差分のみをアップロードすることができます。ただし、そのためには先ほどのスクリプトを修正する必要があります。
git ftp init を git ftp push に変更してください。以上で、差分アップロードが行われるようになります。
CI にする
実は、この状態では master の変更を監視しているわけではありません。更新を自動的に反映するには、次のように設定を行う必要があります。簡単ですね。
以上です。
2019年4月21日