Jekyll を Bitbucket Piplines で deploy & build する

  • 23 Jan 2021

これまでブログのビルド・デプロイを Wercker CI で回してましたが、ソースコードのホスティングに Bitbucket を使っているので Bitbucket Pipelines に移行しました。

Bitbucket Piplines の概要

Bitbucket Piplines は Bitbucket に付帯する CI 機能です。2016年に実装されたそうです。使ってみての機能的な特徴としてはこんな感じ。

  • Docker イメージを利用できる
  • Step ごとに別のイメージを利用できる
  • Gitブランチや tag での Pipeline 制御ができる
  • DSLでの記述( bitbucket-pipelines.yml )

使った感触は他の CI サービスとそこまでの差は感じず。

bitbucket-pipelines.yml

次に bitbucket-pipelines.yml をお見せします。

pipelines:
  branches:
    master:
      - step: 
        name: build
        image:     
          name: jekyll/jekyll
          username: $DOCKER_USERNAME
          password: $DOCKER_PASSWORD
        script: 
          - jekyll build --trace
          - ls -al
        artifacts:
          - _site/**
      - step:
        name: deploy
        image:
          name: alpine
          username: $DOCKER_USERNAME
          password: $DOCKER_PASSWORD
        script:
          - apk add openssh
          - apk add rsync
          - rsync -avzr -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=no" _site/* user@yourhost:/path/to/project/

$DOCKER_USERNAME$DOCKER_PASSWORD は変数設定画面にて予めしてしておきます。

変数設定画面

build ステップの artifacts の指定によって、次の deploy ステップで jekyll によって生成された _site が利用できるようになっています。

deploy では rsync するだけなので alpine に sshclient インストール使います。丁寧にやるなら known_hosts の設定などもやるべきでしょう。そのあたりはこちらのリファレンスに記載があります

個人的には jekyll を実行するコンテナ内の時刻合わせどうなっているか気になるのですが、それは追って検証します。

以上です。

参照