概要
GitLabのマージリクエストについて、予約した時間にマージする方法を紹介します。
環境
- GitLab 17.10
やりたいこと
私は、GitLabのリポジトリでブログの投稿を管理しています。ブログ自体はHugoというツールを利用しており、これでHTMLを生成しています。
ブログとして公開したい記事を書き終わった際に、指定した時刻に記事を公開したいという要望がありました。
GitLabのリポジトリとして管理しているので、新しい記事の公開はmainブランチに記事を追加したときです。つまり、予約したい時間にmainブランチへ記事を追加できれば実現できます。
これまでは、記事を投稿したい時間になったら手動でマージリクエスト(GitHubのPull Requestのようなもの)のページへアクセスし、記事が追加されている別ブランチをmainブランチへマージしていました。
今回、マージリクエストのある機能を使うことで、予約した時間に自動でマージが行われ、記事を公開できるように設定しました。
その方法について紹介します。
予約方法
マージリクエストの作成時に設定できる項目のひとつに、「Merge can start」というものがあります。これを使うことで、マージの時間を予約できます。
設定方法は次のとおりです。
- 「Merge can start」について「After scheduled date」を選択し、マージをしたい時刻を設定します。
- マージリクエストの画面から「Set to auto-merge」をクリックします。
- これで、「After scheduled date」で指定した時刻にマージが行われます。
表示として、「Merge blocked」と表示されるため、ちゃんとマージされるか不安になりますが、指定した時刻になると自動でマージが行われます。
私はこれで、ブログの予約投稿が自動でできるようになりました。欠点を挙げるとするならば、ブログの更新処理はCI/CDで行なっているため、マージが行われた後にブログ更新のパイプラインが実行されます。このパイプラインの完了までには少し時間がかかります。つまり、指定された時刻ちょうどに記事が公開されるわけではなく、指定された時刻に記事公開のパイプラインが実行されるため、少しだけですが、記事公開までにタイムラグが発生します。
さいごに
何かスケジュールでマージしなければならない日付が決まっているものや、何か別のマージの後にマージしたいものなど、使い方次第ではとても便利です。
私はこの機能により、ブログの予約投稿が自動でできるようになりました。欠点を挙げるとするならば、ブログの更新処理はCI/CDで行なっているため、マージが行われた後にブログ更新のパイプラインが実行されます。このパイプラインの完了までには少し時間がかかります。つまり、指定された時刻ちょうどに記事が公開されるわけではなく、指定された時刻に記事公開のパイプラインが実行されるため、少しだけですが、記事公開までにタイムラグが発生します。 それでも、パイプラインの処理には1分もかからないので、厳密に時間を管理しないのであれば手軽で使いやすいです。
GitHubでは、このような機能が現時点で見当たらないため、同じ方法は使えません。GitLabを使っていてよかったと思う点のひとつです。