GitLab CIでmainにコミットしたらその一式をftpアップロードする設定メモです。静的ページとかスクリプトなどgitでバージョンやブランチを管理しながらポイっと置く時に使います。
細かいGitLab CIの説明は省略します。
ファイル
.gitlab-ci.yamlを作成し、プロジェクトルートにおきます。
stages:
- deploy
deploy-prod:
stage: deploy
image: maurosoft1973/alpine-lftp
variables:
FTP_SERVER: ''
FTP_PORT: '21'
FTP_USERNAME: ''
FTP_PASSWORD: ''
FTP_LOCAL_FOLDER: './'
FTP_REMOTE_FOLDER: './www/'
only:
- main
script:
- /restore_last_git_modified_time.sh
- lftp -e "set ssl:verify-certificate no; set ftp:use-mdtm-overloaded true; open $FTP_SERVER; user $FTP_USERNAME $FTP_PASSWORD; mirror -X .* -X .*/ --reverse --verbose --delete $FTP_LOCAL_FOLDER $FTP_REMOTE_FOLDER; bye"
上記設定は
- SSL証明書をチェックしない
- ファイル更新時刻を修正する(アップロード時刻でなくGit同期する)
- ミラーリングを行い「.」で始まるファイル/フォルダは転送しない
- 同期元(git)にないファイルは削除を行う
という感じです。lftpの引数なので必要に応じて変更します。
variables部分は上記ファイルに書き込む場合は公開権限に注意してください。普通はセキュリティをちゃんと考えてGitLabのSettings -> CI/CD -> Variablesに情報を追加します。
コミットして実際にrunnerを動かして確認します。
せつめい
lftpの入ったalpineイメージを使います。12MB程のコンパクトなイメージです。
特にひねらずページのサンプルほぼそのままです
restore_last_git_modified_time.shを実行することで、ファイルにレポジトリーの最終変更日がセットされます。
そのカレントディレクトリー(=gitのカレントディレクトリー)のファイルをFTPアップロードします。
ひとこと
とりあえずうまくいったので自分メモです。
