こんにちは。だいちゃんです。
僕はWebサイトを作成する際、なるべくGitlab/Githubを使ってコードのバージョン管理するようにしています。Gitlabで管理するには当然commitやpushが必要になるので、せっかくなのでそこに連動させる形で、最近ではFTPを使ったWebサーバーへのアップロードも自動化できるように なりました 。
次のようなymlファイルで設定しています。
stages:
- deploy
- publish
deploy:
stage: deploy
image: node:lts
script:
- npm install
- npm run cpx
- npm run sass
- apt-get update -qq && apt-get install -y -qq lftp
- lftp -c "set ftp:ssl-allow no; open -u $USERNAME_DEV,$PASSWORD_DEV $HOST_DEV; mirror -R $LOCAL $SERVER_DEV --parallel=10"
rules:
- if: $CI_COMMIT_BRANCH =~ /^dev-.*/ # dev-*** ブランチのときに実行する
publish:
stage: publish
image: node:lts
script:
- npm install
- npm run cpx
- npm run sass
- apt-get update -qq && apt-get install -y -qq lftp
- lftp -c "set ftp:ssl-allow no; open -u $USERNAME_PUB,$PASSWORD_PUB $HOST_PUB; mirror -R $LOCAL $SERVER_PUB --parallel=10"
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # デフォルトブランチ(main)にマージされたとき
また、事前にリポジトリの設定で、各変数を指定しておく必要があります。
設定場所
該当リポジトリの Setting
> CI/CD
> Variables
設定内容
検証環境として利用しているCORE SERVERでは、上記の設定でそのまま使えた記憶ですが、さくらのレンタルサーバーを使っている場合、サーバー側でもうひと設定必要でした。
というのも、さくらのレンタルサーバーではデフォルトで海外からのFTP接続がブロックされているのですが、GitlabがGoogleCloud上にあるっぽく、その影響でアップロードができなかったです😢
セキュリティを少し犠牲にしてしまいますが、国外IPアドレスからのアクセス制限を「無効(利用しない)」に設定する必要があります。
※ 許可リストへGoogle系のIPアドレスを全部入れちゃいたいところですが、HTTP/HTTPSだけ許可されるらしいので、大元(アクセス制限)を無効にしないとダメそうでした。試してはないけど。
設定は若干腰が重いけど、運用に乗せてしまえば楽ちん&Gitlabにpushしないとサーバーに反映されない縛りのおかげで管理漏れも防げるので、一石二鳥かと!
Gitlab CI/CDでさくらのレンサバに自動アップする
2024-12-20
kintoneのバグっぽい動き
2024-12-13
Safariで絵文字が表示されない問題
2024-12-11
ターミナル上でAIにコマンドを聞こう
2024-12-06
Gitlab CI/CDでさくらのレンサバに自動アップする
2024-12-20
Wordpressの記事を移行するツールを公開しました
2024-07-15
WP APIをBasic環境下で利用したい
2024-07-13
Wordpress開発環境を整備してみる
2024-07-09