1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab + Jenkins(Docker)でロリポップに自動デプロイするCI/CD環境構築を試してみた

Last updated at Posted at 2025-05-31

こんにちは。この記事では、GitLabとDocker上のJenkinsを使って、git pushのたびにロリポップのWebサーバへ自動デプロイする仕組みを構築したので、その手順をまとめます。
ローカルJenkinsにWebhookを通すために ngrok を活用している点がポイントです。

なお始めた背景には、CI/CDに興味があったということがあります。
実際自分がアサインされた案件において、projectのbuildやreleaseに組み込まれていました。裏側の仕組みが気になっていたため構築してみることにしたという経緯です!

全体構成

  [local PC(Windows)]
        │
        │ git push
        ▼
  ┌────────────┐
  │   GitLab   │
  └────────────┘
        │
        │ Webhook発火(Jenkinsへ通知)
        ▼
  ┌───────────────────┐
  │ ngrok(トンネル作成)│
  └───────────────────┘
        │
        │ (一時的な公開URLを発行)
        ▼
  ┌─────────────────────────────────┐
  │ Jenkins (Docker localhost:8080) │
  └─────────────────────────────────┘
        │
        │ build&deploy
        ▼
  ┌────────────────────┐
  │ lolipop(Webserver) │
  │ (FTP)              │
  └────────────────────┘

🛠️ 環境概要

項目 内容
ローカル環境 Windows
Gitホスティング GitLab(gitlab.com)
CI/CDツール Jenkins(Dockerコンテナで起動)
外部公開 ngrokでJenkinsのポートを一時的に外部公開
Webサーバ ロリポップ(FTPアップロード)

🐳 JenkinsをDockerで起動

docker run -d \
  --name jenkins \
  -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

ngrokで外部公開

GitLabのWebhookがローカルJenkinsに届くように、ngrokで外部トンネルを張ります:

ngrok http 8080
  • 表示されたURL(例:https://abcd1234.ngrok.io)をGitLabのWebhookに設定します。
  • 無料プランではこのURLは毎回変わります(固定URLは有料プラン限定)。

GitLab Webhook設定

GitLab > [Your Repo] > Settings > Webhooks:

  • URL: https://xxxx.ngrok.io/job/<ジョブ名>/build?token=YOUR_TOKEN
  • Trigger: Push events ✅

Jenkins側は「リモートビルドの許可」をONにし、トークンを設定しました。

Jenkinsジョブ内容(FTPアップロード)

#!/bin/bash
echo "Deploy start"

lftp -u ユーザー名,パスワード ftp://ftp.lolipop.jp <<EOF
cd public_html
mirror -R ./dist ./
bye
EOF

動作確認手順

  1. ngrok http 8080 でJenkinsを外部公開
  2. git push でGitLabに変更を送信
  3. GitLabのWebhookがngrok経由でJenkinsに通知
  4. Jenkinsがジョブを実行し、webserver(今回はlolipop)にアップロード
  5. Webサイトに反映されていれば成功!

🧩 注意点・補足

  • ngrok無料プランではURLが起動ごとに変わってしまいます。
     → そのため、Webhookの更新が毎回必要

🔚 まとめ

  • GitLab + Jenkins(Docker) + ngrok + ロリポップ の構成で、簡易CI/CDの構築を経験できました。
    →会社のCI/CDのフローがあまり理解できていなかったので、実際に手を動かして経験することで、Jenkinsの役割について改めて理解できました。
  • 無料版だとngrokのURLが変わってしまうことは盲点でした。現状だと少し使いにくいので改良していきたいなと思いつつ、実際やってみたかったCI/CDまわりの理解はできたので一旦はよしとします。
1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?