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するメソッドを指定したりと色々できそう。

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

mackerelにP-Rを送った話

はてなで社長をしている id:chris4403 です。
この記事は、Mackerel Advent Calendar 2018の3日目の記事です。


11月の頭に、mackerelにプルリクエストを送って無事にマージされたので、その裏側をここに記します。


mackerelのHTTPのHeaderには採用サイトへのリンクが仕込まれていて、以下のコマンドを実行すると、見ることができます。

curl -sIL mackerel.io | grep recruit

なにげにコマンドを実行したところ、リンクが古かったことに気が付きました(リンク先にアクセスすると、新しい採用サイトに遷移するので実害はなかったですが)。で、チームのissueに登録しようかなと、ディレクターのid:daiksy さんに聞いたところ、P-Rお待ちしてますとのことだったので、さくっと修正してP-Rを作成しました。


f:id:chris4403:20181203183146p:plain:w613
f:id:chris4403:20181203183202p:plain:w602



まあ、リンクの書き換えだけなのでほんと大したことない内容ですが。
ブランチを作ってpushしたところ、チームのチャンネルではテックリードid:astjより温かい言葉をいただきました。

f:id:chris4403:20181203183857p:plain:w584


全員でレビューする、は冗談ですが、このあとサクッとレビューしてもらい、無事にマージされたという話です。

というわけで、今以下のコマンドを実行すると、私が丹精込めて修正したリンクが出てきますので、ぜひリンク先にも訪問いただき、興味が湧いたらご応募いただければと思います。

curl -sIL mackerel.io | grep recruit

P(ull)R(equest)の話ですが、最後は採用のPRでした、というオチで。ちゃんちゃん。