LoginSignup
3

More than 3 years have passed since last update.

リリースの下書きをGithubActionsで自動的に作成する

Last updated at Posted at 2019-12-08

はじめに

この記事はGitHub Actions Advent Calendar 2019の9日目の記事です。

GitHubのヘルプにリリースを自動的に作成の項目があるのですが、APIドキュメントへのリンクしか用意されていないので、GithubActionsでの実装例を紹介します。

課題

私が所属する開発チームではデプロイ後にリリースの下書きを作成して、そこに変更内容やリリースの前後に必要な作業をまとめてる運用をしています。
リリースの下書きを作成する際は、他のドキュメントツールに雛形を用意しておいて、毎度コピペしていて若干面倒でした。1
また、リリース直後は、動作確認や負荷を監視したりと、他に気を使うことがあるため忘れがちになるので、自動化するのは課題でした。

やったこと

  • Github Actionsを利用して、リリースをPublishすると自動的に雛形どおりの下書きリリースを作成するようにしました。

作成例

スクリーンショット 2019-11-27 9.54.59.png

テンプレート

以下のYAMLをリポジトリの.github/workflows 下に release_draft.yml などのファイル名で配置するだけです。

name: release_draft

on:
  release:
    types: published

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
    - name: Post draft release
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        URL: ${{ github.event.release.url }}
        BODY: |
            ### 変更内容

            - 

            ### リリース前作業
            - [ ]

            <details>
              <summary>実作業</summary>



            </details>

            ### リリース後作業
            - [ ]

            <details>
              <summary>実作業</summary>



            </details>
      run: |
        URL=$(echo "$URL" | sed -E 's/\/[0-9]+$//g')
        BODY=$(echo -e "$BODY" | sed ':a;N;$!ba;s/\n/\\n/g')
        curl -X POST \
             -H "Authorization: token ${GITHUB_TOKEN}" \
             -d "{\"tag_name\": \"\", \"name\": \"Release 2019-MM-DD-N\", \"draft\": true, \"body\": \"${BODY}\"}" \
             $URL

解説

github.event.release.url から/${release-id} の部分を除いてたものをAPIエンドポイントにしました。リポジトリを変更してもコードの変更は必要ありません。
テンプレートは環境変数で定義し、JSONで扱えるように改行をエスケープするようにしました。改行ありのYAMLなので、通常のMarkdownのように扱えます。

最後に

リリースを自動的に作成することで一つ手間が減り、リリース後の動作確認や負荷監視に専念できるようになりました。
リポジトリにYAMLを追加するだけなので、運用に合わせてタイトルや本文を変更して使ってもらえると幸いです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3