Bitbucket Pipelinesというのは、GitHub Actions的な機能のようです。
Bitbucket無料ユーザには50分の無料利用枠がついています。

yosiopp.netのブログのリポジトリにはBitbucketを利用しているのですが、今回はこのBitbucket Pipelinesを利用して「リポジトリにpushしたらブログを自動で更新する」というようなことをしてみます。

Pipelinesの有効化

Bitbucketのリポジトリの設定からPipelinesの設定を行います。

bitbucket-pipelines.ymlの作成

Pipelinesは該当リポジトリのルートディレクトリにある bitbucket-pipelines.yml の設定に基づいて処理を行います。
yosiopp.netはHugoで生成されていて、AWS S3でホスティングされていますので、Hugoでのビルド、およびS3へのアップロードをこの設定ファイルに書くことになります。

image: atlassian/default-image:2

pipelines:
  default:
    - step:
        name: 'Build'
        deployment: production
        services:
          - docker
        script:
          - docker pull peaceiris/hugo:v0.81.0
          - docker run --rm -i -v $BITBUCKET_CLONE_DIR:/src peaceiris/hugo:v0.81.0
        artifacts:
          - public/**
    - step:
        name: 'Deploy'
        deployment: production
        image: atlassian/pipelines-awscli
        script:
          - aws s3 sync public s3://$WEB_BUCKET/ --delete
          - aws cloudfront create-invalidation --distribution-id $WEB_DISTRIBUTION --paths "/*"

最終的に、こんな感じのファイルになりました。
ついでにCloudFrontのInvatidationも行っています。

環境変数の設定

このままでは環境変数が足りず、Pipelinesの実行が失敗します。 Bitbucketのリポジトリ設定からRepository variablesを選択し、以下の環境変数に適切な値を設定します。

環境変数
AWS_ACCESS_KEY_ID  アクセスキーID
AWS_DEFAULT_REGION  デフォルトリージョン
AWS_SECRET_ACCESS_KEY  対応するキー
WEB_BUCKET  アップロード先のS3バケット名
WEB_DISTRIBUTION  Invalidationする対象のCloudFrontディストリビューションID

確認

最後に、記事をPUSHして自動的にデプロイされるか確認します。
success
成功したみたいです。

参考