specifying service image with digest defaults to latest
Summary
specifying service image with digest defaults to latest
Steps to reproduce
- Use
.gitlab-ci.yml
- Specifcy the digest for the image
- Observe
latest
instead of specific digest
.gitlab-ci.yml
redis-digest: services: - redis@sha256:405b4b2fafecf50945309a7ac042ca4a29a624e97613026acff708c1d6af8232 image: redis script: - redis-cli -h redis PING - redis-cli -h redis --versionActual behavior
The image uses latest
tag
Expected behavior
The image uses the specific digest version
Relevant logs and/or screenshots
https://gitlab.com/gitlab-gold/faleksic-tests/public-group/ci-testing/-/jobs/4298467590
job log
Using Docker executor with image redis ...
Starting service redis:latest ...
Pulling docker image redis:latest ...
Using docker image sha256:116cad43b6aff97c73227088f04da7eaec57aeb40923fc8cc99043663207e944 for redis:latest with digest redis@sha256:ea30bef6a1424d032295b90db20a869fc8db76331091543b7a80175cede7d887 ...
Waiting for services to be up and running (timeout 30 seconds)...
Pulling docker image redis ...
Using docker image sha256:116cad43b6aff97c73227088f04da7eaec57aeb40923fc8cc99043663207e944 for redis with digest redis@sha256:ea30bef6a1424d032295b90db20a869fc8db76331091543b7a80175cede7d887 ...
Environment description
Reproducible on GitLab.com 16.0.0-pre 08247f8c9b5
Used GitLab Runner version
Running with gitlab-runner 15.9.0~beta.115.g598a7c91 (598a7c91)
on blue-3.shared.runners-manager.gitlab.com/default zxwgkjAP, system ID: s_284de3abf026
Possible fixes
Looking at SplitNameAndVersion it looks like it doesn't match correctly. Example - https://play.golang.com/p/MlgIjycODyb
Running SplitNameAndVersion("redis@sha256:405b4b2fafecf50945309a7ac042ca4a29a624e97613026acff708c1d6af8232")
ends up with
Service: redis
Version: latest
ImageName: redis:latest
Aliases: [redis]
Because how the match gets that information.
The docker pull mentions that to pull an image:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
, meaning it can be a tag or a digest as so:
$ docker pull redis@sha256:405b4b2fafecf50945309a7ac042ca4a29a624e97613026acff708c1d6af8232
docker.io/library/redis@sha256:405b4b2fafecf50945309a7ac042ca4a29a624e97613026acff708c1d6af8232: Pulling from library/redis
Digest: sha256:405b4b2fafecf50945309a7ac042ca4a29a624e97613026acff708c1d6af8232
Status: Image is up to date for redis@sha256:405b4b2fafecf50945309a7ac042ca4a29a624e97613026acff708c1d6af8232
docker.io/library/redis@sha256:405b4b2fafecf50945309a7ac042ca4a29a624e97613026acff708c1d6af8232
Additionally, our test.go file lacks any tests relating to specific digest version (as far as I can tell).