GitHub Actionで自動タグ付けとリリースをやってみる

はじめに

  • CI/CDについて習熟するべく、GitHub Actionでタグ付けやリリースの自動化を勉強してました。
  • 試しに、以前記事にしたRustのプロジェクトにタグ付けやリリースを自動で行うように挑戦してみました。

    enu23456.hatenablog.com

変更した内容

コード

name: Rust Continuous-Integration

on: [push, pull_request]

jobs:
  
   # この部分は以前記事に書いたものと全く同じなので省略
  
  create_release:
    needs:
      - check
      - test
      - fmt
      - clippy
    name: Create Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@master
      - name: Set current time
        id: version
        run: echo "::set-output name=text::ver$(TZ=Asia/Tokyo date +%y%m%d%H%M)"
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.version.outputs.text }}
          release_name: ${{ steps.version.outputs.text }}
          draft: false
          prerelease: false

簡単な説明

  • needs:では、その前に実行しておくべきjobを指定しています。
    • check, test, fmt, clippyの、Rustコードをチェックしている4つの作業を事前に行い、その後にリリース作業を行うようにしています。
  • name: Set current timeでは東京での現在時刻を取得しています。
    • これは、タグはリリース名に日付を入れたいために行っています。
  • name: Create Releaseでは、create-releaseというアクションを使ってタグやリリースを行っています。

結果

まずActionのタブを見てみると、想定通りRustコードのチェックをした後、リリースに関する作業を行っていること、そして全ての作業が成功していることが分かります。

次にリリースを見てみると、こちらも想定通りに作成されていることが分かるかと思います。

おわりに

  • タグやリリースを自動で行うことが出来るようになりました。
  • 上のymlファイルではタグやリリースの処理をpushやpullrequestの度に行っていたり、リリースノートに何も説明をつけるようにしてないので、実運用上ではまだ修正が必要ですが、CI/CDに向けて一歩前進できたと思います。

参考資料

zenn.dev

developer.dip-net.co.jp