0
0

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 1 year has passed since last update.

GitHub Actionsでコミット履歴を参照する

Last updated at Posted at 2023-04-23

問題点

  • GitHub Actionsのpushイベントでは、CIが実行される前のコミットIDがgithub.before.event、最新のコミットIDがgithub.shaで参照できる
  • 複数のコミットをまとめてプッシュした際に、最新のコミットID以外を参照したいといったケースが発生することがあるが、あらかじめ環境変数としては用意されていない

解決策

  • github.before.eventgithub.shaを利用してコミット履歴から抽出する

検証

  • 設定
.github/workflows/main.yml
name: Commit log example

on:
  push:

jobs:
  job1:
    runs-on:
      - ubuntu-latest

    steps:
      # リポジトリをクローンする
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          # コミット履歴をどこまで遡って参照できるかの設定
          # デフォルトでは 1 に設定されており、最新のコミット履歴しか参照できない
          # 0 に変更することで、リポジトリの完全なコミット履歴を参照できるようになる
          # ただし、コミット履歴が大きくなるとクローンに時間がかかるため、ボトルネックになる場合は適切な値を設定する
          fetch-depth: 0

      - name: Display commit log
        # コミットID..コミットID とすることで、表示するコミット履歴の範囲を指定することができる
        # --format="%s %H" と指定することで、コミットメッセージとコミットIDをワンライナーで表示できる
        run: git log ${{ github.event.before }}..${{ github.sha }} --format="%s %H"
  • 実行結果
    • 最新のコミットID以外も参照できていることが分かる

Dockerコンテナを使用する場合

  • Dockerコンテナ上でジョブを実行する場合は以下のような対応が追加で必要となる場合がある
.github/workflows/main.yml
name: Commit log example

on:
  push:

jobs:
  job1:
    runs-on:
      - ubuntu-latest

    # Dockerコンテナ上でジョブを実行する
    container:
      image: debian:stable-slim

    steps:
      # 指定したDockerイメージにgitがインストールされていない場合に必要
      - name: Install dependent packages
        run: apt-get update && apt-get install git -y

      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      # リポジトリに設定されている所有者とアクセスしているユーザが異なる場合にエラーが発生する
      # おそらく、Dockerコンテナ上にリポジトリがマウントされた際に、リポジトリの所有者がホストマシンのユーザのままになっていることが原因
      # このエラーは無視しても特に問題無いので以下のコマンドで無視するように設定する
      - name: Add safe directory
        run: git config --global --add safe.directory $PWD

      - name: Display commit log
        run: git log ${{ github.event.before }}..${{ github.sha }} --format="%s %H"
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?