こんにちは、id:chris4403 です。Ossan.fmというPodcastを id:nagayama さんとふたりでやってまして、毎週金曜日の12時ごろに公開しています。
Ossan.fmは、Yatteiki.fmさんが公開している以下のコードを利用して、GitHub Pages上で運用しています。
Podcast公開までの作業フローは、
- 収録
- 収録した音声データを編集 by nagayama
- 公開用のテキストページを作成 by chris4403
- 次公開用のbranchを作成
- 公開用のbranchに編集済みの音声データ・テキストページをpush / Pull Request作成
- YouTubeに動画ファイルをアップロード&テキストを追加して、金曜日の12時ごろ公開されるように登録 by nagayama
- 毎週金曜日の12時頃にPull Requestを master ブランチにmerge by chris4403 or nagayama
ざっくりこんな感じでやっていました。
で、この一番最後の公開作業を、うまいこと自動化できないかなーと id:nagayama と話していて、GitHub Actionsでできるのでは?と、調べてみたらできたという話です。
まずは、GitHub上で、新しいActionsを設定します。
いくつかサンプルから作成が出てきますが、いちから自分でセットアップするのを選択。
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公開までの最新の作業フローは以下の感じに。
- 収録
- 収録した音声データを編集し、次公開用のbranchを作成してpush / Pull Requestを作成 by nagayama
- 公開用のテキストページを作成 / タイトル決定 by chris4403
- ブランチにautomergeラベルを付与 by chris4403
- Twitterで公開Tweetを予約(公開日の13:00) by chris4403
- タイトルを画像にしてYouTube用の動画ファイル作成&アップロード、金曜日の12時に公開されるように登録 by nagayama
これらのTODOは、Pull RequestのテンプレートにTODOとしてフィルインされるようになっていて、それぞれ自分の担当箇所が終わったらチェックをつけるようにしています。