1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitLabCIでftpアップロード

Last updated at Posted at 2023-12-12

GitLab CIでmainにコミットしたらその一式をftpアップロードする設定メモです。静的ページとかスクリプトなどgitでバージョンやブランチを管理しながらポイっと置く時に使います。

細かいGitLab CIの説明は省略します。

ファイル

.gitlab-ci.yamlを作成し、プロジェクトルートにおきます。

.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に情報を追加します。

スクリーンショット 2023-12-12 13.04.04.png

コミットして実際にrunnerを動かして確認します。

せつめい

lftpの入ったalpineイメージを使います。12MB程のコンパクトなイメージです。

特にひねらずページのサンプルほぼそのままです

restore_last_git_modified_time.shを実行することで、ファイルにレポジトリーの最終変更日がセットされます。

そのカレントディレクトリー(=gitのカレントディレクトリー)のファイルをFTPアップロードします。

ひとこと

とりあえずうまくいったので自分メモです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?