7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitHub Actionsを利用してPull Requestをmasterにマージしたら自動的にタグを打つ

Posted at

はじめに

Gitのタグ付けを毎回手動でしていたが、塵も積もれば山となるで時間削減のため自動化しました。どのCIサービスを使っても実装は可能でしたが、GitHub Actionsを使ったらよくありがちな環境変数の設定無しに簡単に導入できたので紹介します。同様の記事も既にありますが、個人メモとして残すためご了承ください。

実現したいこと

  • Pull Requestをマージしたらリリースタグを打ちたい
    • マージせずに閉じた場合は何もしない
  • タグ名は release-%Y%m%d%H%Mの書式としたい。この辺はお好みで。
    • もちろん日本時間で!

設定方法

対象のGitHubリポジトリで以下内容のファイルを .github/workflows/release_tag.yml に配置してコミットして終わりです!

name: Release Tag
on:
  pull_request:
    branches:
      - master
    types: [closed]
jobs:
  build:
    name: Create Release
    runs-on: ubuntu-latest
    if: github.event.pull_request.merged == true
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Set current date
        id: current_date
        env:
          TZ: 'Asia/Tokyo'
        run: echo "current_date=$(date +'%Y%m%d%H%M')" >> $GITHUB_ENV
      - name: Create release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: release-${{ env.current_date }}
          release_name: release-${{ env.current_date }}
          draft: false
          prerelease: false

以降は Pull Request がマージされると以下のようにタグ付けされます! :tada:

image.png

補足

ワークフロートリガーの設定

以下により「masterブランチに対する Pull Requestを閉じたら実行する」が設定されます。 types でアクティビティタイプ(何をトリガーで発火するか)が選択できるのですが、 closed を設定することで「Pull Requestを閉じたら(マージを含む)」になります。本当はここで merged が選択でいるといいですけど、なぜかないんですよねぇ。

on:
  pull_request:
    branches:
      - master
    types: [closed]

Pull Requestをマージした時だけ発火させる

types: [closed] だけだとマージせずに閉じただけでも発火してしまうので、以下を設定することで Pull Request をマージした時のみジョブが実行されるようにします。

if: github.event.pull_request.merged == true

日時を含むリリースタグ名を作成する

release-202102192100 みたいに日時を含むリリースタグ名を以下で作成し環境変数に登録しています。ポイントは :clock1: タイムゾーン設定です。これが無いと UTC となってしまうのでお忘れなく〜! (最初は気づかず素通りしてました... :sweat_smile:

      - name: Set current date
        id: current_date
        env:
          TZ: 'Asia/Tokyo'
        run: echo "current_date=$(date +'%Y%m%d%H%M')" >> $GITHUB_ENV

リリースタグを登録されるようにする

公式から提供されている actions/create-release@v1 アクションを利用すれば簡単です。tag_name, release_name でお好みのタグ名・リリース名を設定するだけ!

      - name: Create release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: release-${{ env.current_date }}
          release_name: release-${{ env.current_date }}
          draft: false
          prerelease: false

リンク

7
2
0

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
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?