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"を利用しました。

https://github.com/marketplace/actions/merge-pull-requestsgithub.com

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

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

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


ということで、もろもろ整備されたPodcast公開までの最新の作業フローは以下の感じに。

  1. 収録
  2. 収録した音声データを編集し、次公開用のbranchを作成してpush / Pull Requestを作成 by nagayama
  3. 公開用のテキストページを作成 / タイトル決定 by chris4403
  4. ブランチにautomergeラベルを付与 by chris4403
  5. Twitterで公開Tweetを予約(公開日の13:00) by chris4403
  6. タイトルを画像にしてYouTube用の動画ファイル作成&アップロード、金曜日の12時に公開されるように登録 by nagayama

これらのTODOは、Pull RequestのテンプレートにTODOとしてフィルインされるようになっていて、それぞれ自分の担当箇所が終わったらチェックをつけるようにしています。