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日