くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

GitHub Actionsで前のタグと比較する

GitHub Actionsを使って、タグを付けた際に実行されるようにしてる。
monorepoにしたくて、dorny/paths-filterを試していたけど、
うまくいかなかったのでいろいろ調べてみたときの備忘録(*´ω`*)

シンプルに使ってみたけどだめだった

こんな感じで、uses: dorny/paths-filter@v2を追加しただけだと、
mainブランチとタグを比較してしまい、差分なしの状態になってしまった。。

name: on_push_tags_action
"on":
  push:
    tags:
      - "v*.*.*"

jobs:
  my_job:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: dorny/paths-filter@v2
        id: filter
        with:
          filters: .github/workflows/filters.yml

やってみた方法

自前でタグを取得するという形で対応。

actions/checkout@v3fetch-depth: 0を指定してもいいけど、
タグだけがほしいので、自分でgit fetch --tags -fするようにした。

name: on_push_tags_action
"on":
  push:
    tags:
      - "v*.*.*"

jobs:
  my_job:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # 1つ前のタグの取得処理を追加
      - name: Get the pre version
        run: |
          git fetch --tags -f
          pre_tag=$(git tag -l --sort -v:refname | head -n2 | tail -1)
      - uses: dorny/paths-filter@v2
        id: filter
        with:
          # 比較元(base)に1つ前のタグを指定
          base: ${{env.PRE_TAG}}
          filters: .github/workflows/filters.yml

以上!! これでモノレポでのデプロイもできるように(´ω`)!!

参考にしたサイト様