古い環境のDockerイメージでGitHub Actionsのチェックアウトがうまく行かないとき
・・・はイメージ内の Git のバージョンが古すぎる場合があるので Workflow で警告が出てないか確認する。 ログ上は一見成功しているように見えるが下記のような出力があると、 GitHub REST API から tar を取得して展開する動きをしている。
The repository will be downloaded using the GitHub REST API
To create a local Git repository instead, add Git 2.18 or higher to the PATH
リポジトリのチェックアウトは Git 2.18 以上でないと正常に処理されないため、tar での展開にフォールバックする。 このとき tar で展開されてしまうと、git log などは参照できなくなるので git 依存するステップは正常に完了しない。
もし古い場合はイメージ内の Git のバージョンを更新すること。
例: PHP 5.3.29 の公式イメージに Git 2.30 をインストールする
code:Docker
FROM php:5.3.29
RUN apt-get update -qqy \
&& apt-get remove -qqy --force-yes git \
&& apt-get install -qqy --force-yes \
libcurl4-gnutls-dev \
libexpat1-dev \
gettext \
libz-dev \
libssl-dev \
unzip \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN cd /tmp \
&& unzip v2.30.0.zip \
&& cd git-2.30.0/ \
&& make prefix=/usr/local all \
&& make prefix=/usr/local install \
&& rm -rf /tmp/{v2.30.0.zip,git-2.30.0}