4
2

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.

【Bitbucket Pipelines】WEB制作で使ってほしい自動デプロイ

Last updated at Posted at 2022-09-25

はじめに

WEB制作でPipelineを使ったらとても便利だったので紹介します。
自動デプロイと聞くと設定が難しそうと思うかもしれませんが、今回は静的ファイルだけを扱うことが前提なのでかなり簡単です。
今回はさくらのレンタルサーバーを使います。

概要

Bitbucketのbitbucket-pipelinesで指定したブランチにプッシュしたときにレンタルサーバーに自動デプロイする方法を紹介します。
下記の2通りのやり方で説明します。

この記事を読んだらできること

指定したブランチにプッシュかプルリクをマージしたら自動でFTPサーバーに自動デプロイされるpipelineの設定:raised_hands:

前提条件

  • bitbucketのアカウントが必要です
  • レンタルサーバーが必要です

手順

1. サーバー情報を確認する
2. bitbucket-pipelinesの初期設定をする
3. サーバー情報をBitbucketの環境変数に登録する
4. デプロイ設定をする
5. 自動デプロイを実行する

本題

1.サーバー情報を確認する

  • サーバー情報をBitbucketの環境変数に登録するので、レンタルサーバーのホスト名、ユーザー名、パスワード、データをアップするディレクトリのパスを確認してください。
  • さくらのレンタルサーバーの場合は下記のページから確認ができます。
    • コントロールパネル → サーバー情報 → FTP設定情報
      サーバ情報.jpg

国外IPの制限がある場合はサーバーにアクセスできない可能性がありますので、デプロイがうまくいかなかった場合は設定を無効にしてみてください。

2.bitbucket-pipelinesの初期設定をする

  1. サイドメニューにある「Repository settings」 → 「Setting」からPipelines settingsのページを開きます。
    Group 5.png

  2. 「Enable Pipelines」のトグルを切り替えて有効化します。
    Group 4.jpg

3.サーバー情報をBitbucketの環境変数に登録する

デプロイ設定をする前にサーバー情報を変数に登録していきます。
サイドメニューから「Repository setting」 → 「Repository variables」にアクセスすると登録画面に移ります。
Group6.png
設定11.jpg
各項目を入力してAddを押せば変数追加の完了です。

メモ

  • Nameは変数名なので任意の名前をつける
  • Valueにサーバー情報を入れる
  • 隠したい情報は『Secured』にチェックを入れる

4.デプロイ設定をする

  1. サイドメニューのDevelopmentsを選択するとPipelineのテンプレート選択画面に移ります。
    Group 7.png

  2. Starter pipelineのテンプレートを選択するとpipelineの設定ファイルを編集する画面に移ります。
    設定7.jpg

  3. 下記のコードに書き換えてください。
    bitnamiのimageでgit-ftpを使用する

[1] 全データを反映する

bitbucket-pipelines.yml
image: bitnami/git

pipelines:
  branches:
    develop:
      - step:
          script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp init --user $FTP_USER --passwd $FTP_PASSWORD $FTP_HOST$FTP_DIRECTORY

[2] アップロードされたファイルを同期化して差分だけ反映する

bitbucket-pipelines.yml
### 省略 ###
          - git ftp catchup --user $FTP_USER --passwd $FTP_PASSWORD $FTP_HOST$FTP_DIRECTORY

注意
一度デプロイを行ったら「git ftp init(catchup)」のところを「git ftp push」に変更してください

Atlassianのftp-deployを使用する

bitbucket-pipelines.yml
image: atlassian/default-image:3

pipelines:
  branches:
    develop:
      - step:
          script:
            - pipe: atlassian/ftp-deploy:0.3.3
              variables:
                USER: $FTP_USER
                PASSWORD: $FTP_PASSWORD
                SERVER: $FTP_HOST
                REMOTE_PATH: $FTP_DIRECTORY
                DELETE_FLAG: 'false' # 既存ファイルを削除せずに上書きする
                EXTRA_ARGS: "--exclude=.bitbucket/ --exclude=.git/ --exclude=README.md"

注意
デプロイのたびに全データが反映されます

各セクションについて

images
使用するDockerイメージ

pipeline
ここからはpipelineの処理ですという意味

default
全てのブランチで動作する

branches
動作させたいブランチを指定することができるようになる

step
ビルドの実行単位で最大100まで設定できる
(無料会員は10ステップまで)

parallel
並列処理で複数ステップを同時に実行することができる
ビルド時間の短縮に便利です

script
連続して実行する処理の一覧

variable
pipeline起動時に提供される変数が含まれる

pipe
バックグラウンドで処理を実行して複雑なタスクを簡単にしてくれる

Variablesについて

USER
FTPサーバーのユーザー名

PASSWORD
FTPサーバーのパスワード

SERVER
FTPサーバーのアドレス

REMOTE_PATH
FTPサーバーのアドレス

LOCAL_PATH
アップロードするローカルディレクトリのパス(任意)
Default ${BITBUCKET_CLONE_DIR}

DEBUG
デバッグ情報の追加をオンにする
Default: false

EXTRA_ARGS
lftpコマンドに渡される追加引数(gitignoreのようなもの)

DELETE_FLAG
新しいファイルを転送する前に古いファイルを削除するためのオプション
Default: true

--exclude-globで「*.jpg」のようにglobパターンで指定することができます

parallelについて

並列処理を記述するセクション
ビルド時間を短くしたり最大ビルド時間120分を超過したくないときに有効です。

bitbucket-pipelines.yml
pipelines:
  default:
    - step:
        script:
          - ## script ##
    - parallel: # 並列処理
        - step:
            script:
              - ## script ##
        - step:
            script:
              - ## script ##

bitbucket-pipelines.ymlを追加する

必要な設定が完了したら右下のCommit file押しましょう。
Group 8.jpg

masterブランチにファイルが追加されます。
設定9.jpg
これで設定は完了です!
あとはプッシュするだけ。

5.自動デプロイを実行する

  1. 指定したブランチにプッシュしてみましょう。

  2. プッシュしたら自動デプロイが実行されるのでサイドメニューの「Pipelines」からデプロイ状況を確認します
    Group 9.jpg

  3. Pipelineの項目から詳細画面を確認します
    Group 9.jpg

  4. ステータスがSuccessfulになればデプロイ完了です
    Group 10.jpg
    うまくいかない場合は下記のバリデーターでコードをチェックしてみましょう。
    Validator for bitbucket-pipelines.yml

注意点

  • なれるまでは誤ってサーバーのデータを削除しないようにDELETE_FLAGfalseに設定しましょう
  • ビルド時間が120分を超えると自動停止します

おわりに

少し長くなりましたが意外と簡単ではないでしょうか?
これからは確認用のテストサイトにアップするときはpipelineを使うことが増えそうです。
データ納品するときに使うのも便利そうですね。
気が向いたらGulpやnpmを入れた記事をアップするかも。たぶん

参考リンク

4
2
1

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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?