GitHub ActionsでPull Requestを自動的にmergeする

こんにちは、id:chris4403 です。Ossan.fmというPodcastid:nagayama さんとふたりでやってまして、毎週金曜日の12時ごろに公開しています。
Ossan.fmは、Yatteiki.fmさんが公開している以下のコードを利用して、GitHub Pages上で運用しています。

github.com

Podcast公開までの作業フローは、

  1. 収録
  2. 収録した音声データを編集 by nagayama
  3. 公開用のテキストページを作成 by chris4403
  4. 次公開用のbranchを作成
  5. 公開用のbranchに編集済みの音声データ・テキストページをpush / Pull Request作成
  6. YouTubeに動画ファイルをアップロード&テキストを追加して、金曜日の12時ごろ公開されるように登録 by nagayama
  7. 毎週金曜日の12時頃にPull Requestを master ブランチにmerge by chris4403 or nagayama

ざっくりこんな感じでやっています。

で、この一番最後の公開作業を、うまいこと自動化できないかなーと id:nagayama と話していて、GitHub Actionsでできるのでは?と、調べてみたらできたという話です。


まずは、GitHub上で、新しいActionsを設定します。

f:id:chris4403:20200204165426p:plain
「Actions」タブ内の「New workflow」をクリック

いくつかサンプルから作成が出てきますが、いちから自分でセットアップするのを選択。

f:id:chris4403:20200204165441p:plain
画面右の「Set up a workflow yourself」をクリック

Repository直下に ".github/workflow/"ディレクトリができて、そこにworkflowを設定するYAMLを書く画面が出てきます。YAML名を設定しつつ、下のエディタに下記のように設定しました。

name: ScheduledTask

on:
  schedule:
    - cron: '0 3 * * 5'

jobs:
  automerge:
    runs-on: ubuntu-latest
    steps:
      - name: Merge pull requests
        uses: pascalgn/automerge-action@v0.7.3
        env:
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

cronと書いてある行が、本workflowを実行するタイミングです。crontabに記載する書式で書きましょう。

自動的にmergeする処理は、以下のGitHub Actions Marcketplaceで公開されいてる"automerge-action"を利用しました。

github.com

これで、Pull Requestに "automerge" ラベルがついているものが、毎週金曜日の日本時間12時に master ブランチへ mergeされます。

Configurationを見ると、このラベルを変更したり、mergeするメソッドを指定したりと色々できそう。

ページを更新する分にはデフォルトの使い方で良いので、しばらく使ってみることにします。