upgrade git to 2.18+ for better compatibility with github actions
andreineculau opened this issue · comments
I'm wondering if you would consider bumping the git to 2.18 or greater on your images.
The background of this request is that the Github Actions' Checkout action (that's a mouthful!) falls back to checking out via REST API (source: https://github.com/actions/checkout#whats-new) when git version is below 2.18. What this means is that you actually get a snapshot (archive) of your sourcecode rather than all commits, tags, etc.
Github's reasoning is not compelling, but the argument goes that git 2.18 implements support for partial clone via transport protocol v2 which decreases the load on Github's side. There is no way to tell the action to go ahead with a regular clone, despite the presumable higher load on Github, even if it's negligible for small repos.
So for instance in testing jesse on Github Actions with your images, on every run there's a 2-3 minute "waste" installing git 2.18 plus its dependencies (source: https://github.com/for-GET/jesse/blob/master/.github/workflows/ci.yml#L51-L58). In order to remove that waste, it's a question of upgrading git on your images or forking github's action to checkout as usual, just without the partial clone via transport protocol v2.
Thanks in advance!
Hi @andreineculau, I was checked and detected that the git
version is git version 2.31.1
. Please follow to the https://github.com/vkatsuba/docker-erlang-otp/runs/2686524428 select ->
the tag Build
. Not sure but looks like that git version 2.18
is old info, please take a look also minimum git version in repo of tool https://github.com/actions/checkout/blob/v2/src/git-command-manager.ts#L13. Currentlly 2.18
- as you see 2.18
is minimum git
version. Also please note:
https://github.com/actions/checkout/blob/25a956c84d5dd820d28caab9f86b8d183aeeff3d/adrs/0153-checkout-v2.md
(C) Git client version 2.18+ (released June 2018) is required for wire protocol version 2.
So, I suppose this is not an issue in Checkout action
.
Regards,
--V
Hi @andreineculau, please ignore my comment above, because you are you're right, the issue shows in versions of OTP 19~19.3
/20~20.3
/21~21.3
and in 22.1
- all other images start use git version from 2.20.1
.
Regards,
--V
Hehe I didn't understand your comment so I was checking your commits in the branch. But back on topic, I noticed the same 2.20.1 - my bad as I didn't check before opening the issue. It was a behavior that I observed many months ago in January for-GET/jesse#98 (comment)
I'll give it a shot to remove the fix and come back to hopefully close the issue.
Thanks for looking into this. Sorry for the noise
no go. git is older (2.11.0 to be exact) on multiple images - 19 to 21.3 and 22.1
Yep, looks like issue in build image from buildpack-deps:stretch
(used git version 2.11.0
). To fix it I suppose or need change buildpack-deps:stretch
to buildpack-deps:buster
(used git version 2.20.1
) with some updating Dockerfile
's or try add something like(as was show @andreineculau before):
apt-get update
apt-get -y install tcl tcl-dev gettext
cd /usr/src/
wget https://github.com/git/git/archive/v2.18.0.tar.gz -O git.tar.gz
tar -xf git.tar.gz
cd git-*
make prefix=/usr/local all
make prefix=/usr/local install
to all Dockerfile
s where used buildpack-deps:stretch
and maybe to debian:stretch
too.
In any case this can be fixed, however this fix can be apply as I understand only for latest version of each OTP version: 19, 19.3
/20, 20.3
, 21.3
only... At the same time all other images 19.1, 19.2
/20.1, 20.2
/21.1, 21.2
and in 22.1
will be still have the same issue...
however this fix can be apply as I understand only for latest version of each OTP version
I can assume why, but since assumption is the mother of all evil, could you clarify?
I suppose, because will be needed do step by step for all official docker images and also search and roll back changes that were up to the latest versions in the master. Like: revert changes for all old OTP images 19.1, 19.2
/20.1, 20.2
/21.1, 21.2
, then apply changes for fix and then apply them into official docker images... I would even say it's easier to leave it as it is 🙃 as it is very easy to break the work of old images/projects/builds, or update only latest OTP versions only - 19, 19.3
/20, 20.3
, 21.3
.
In other hand 🙃 based on:
- http://erlang.org/download/otp_src_19.0.readme
- http://erlang.org/download/otp_src_20.0.readme
- http://erlang.org/download/otp_src_21.0.readme
The dates of OTP releases is from 2016 till 2018 which means that the git at that time was lower 2.18
. This means that this can consider this as expected behavior