LFS files are not pulled automatically for build jobs
Summary
gitlab-runner does not fetch and checkout LFS files automatically.
Steps to reproduce
- Push an LFS file
foothat containsI'm an LFS fileand a.gitlab-ci.ymllike below:
.gitlab-ci.yml
```yml before_script: - type foo ```Actual behavior
foo is an LFS pointer file containing text like:
version https://git-lfs.github.com/spec/v1
oid sha256:1296330fcf1e09e6c2f926301916f64d4a4c5c0ff12d460a9bc5d4c48411518f
size 123
Expected behavior
The job log should show I'm an LFS file
Relevant logs and/or screenshots
Running on Windows 10 with Portable Git installed. gitlab-runner is launched with the batch script below:
cd %~dp0
set PATH=C:\Git-2.23.0\cmd;%PATH%
start /belownormal gitlab-runner run
Relevant parts of the job log
job log
Running with gitlab-runner 12.3.0 (a8a019e0)
on lab-ci 34625f0b
Using Shell executor...
C:\glr>setlocal enableextensions
C:\glr>setlocal enableDelayedExpansion
C:\glr>set nl=
C:\glr>echo Running on LAB-CI...
Running on LAB-CI...
C:\glr>setlocal enableextensions
C:\glr>setlocal enableDelayedExpansion
C:\glr>set nl=
C:\glr>SET FF_CMD_DISABLE_DELAYED_ERROR_LEVEL_EXPANSION=false
C:\glr>SET FF_USE_LEGACY_BUILDS_DIR_FOR_DOCKER=false
C:\glr>SET FF_USE_LEGACY_VOLUMES_MOUNTING_ORDER=false
C:\glr>SET CI_RUNNER_SHORT_TOKEN=34625f0b
C:\glr>SET CI_BUILDS_DIR=C:\glr\builds
C:\glr>SET CI_PROJECT_DIR=C:\glr\builds\34625f0b\0\sw\genshi
C:\glr>SET CI_CONCURRENT_ID=0
C:\glr>SET CI_CONCURRENT_PROJECT_ID=0
C:\glr>SET CI_SERVER=yes
C:\glr>md "C:\\glr\\builds\\34625f0b\\0\\sw\\genshi.tmp" 2>NUL 1>NUL
C:\glr>SET CI_SERVER_TLS_CA_FILE=C:\glr\builds\34625f0b\0\sw\genshi.tmp\CI_SERVER_TLS_CA_FILE
C:\glr>SET CI_PIPELINE_ID=10941
C:\glr>SET CI_JOB_ID=62424
C:\glr>SET CI_JOB_TOKEN=xxxxxxxxxxxxxxxxxxxx
C:\glr>SET CI_BUILD_ID=62424
C:\glr>SET CI_BUILD_TOKEN=xxxxxxxxxxxxxxxxxxxx
C:\glr>SET CI_REGISTRY_USER=gitlab-ci-token
C:\glr>SET CI_REGISTRY_PASSWORD=xxxxxxxxxxxxxxxxxxxx
C:\glr>SET CI_REPOSITORY_URL=https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab/sw/genshi.git
C:\glr>SET CI=true
C:\glr>SET GITLAB_CI=true
C:\glr>SET GITLAB_FEATURES=
C:\glr>SET CI_SERVER_NAME=GitLab
C:\glr>SET CI_SERVER_VERSION=11.0.3
C:\glr>SET CI_SERVER_REVISION=aa62075
C:\glr>SET CI_JOB_NAME=superbuild_ci
C:\glr>SET CI_JOB_STAGE=superbuild
C:\glr>SET CI_COMMIT_SHA=818e57563ca3e9905c19cabdc1107a5373e30b54
C:\glr>SET CI_COMMIT_REF_NAME=feature/CRAN-3032-GLRVersion
C:\glr>SET CI_COMMIT_REF_SLUG=feature-cran-3032-glrversion
C:\glr>SET CI_BUILD_REF=818e57563ca3e9905c19cabdc1107a5373e30b54
C:\glr>SET CI_BUILD_BEFORE_SHA=35e4887427361edc590dcd17155be7d8f973c1e8
C:\glr>SET CI_BUILD_REF_NAME=feature/CRAN-3032-GLRVersion
C:\glr>SET CI_BUILD_REF_SLUG=feature-cran-3032-glrversion
C:\glr>SET CI_BUILD_NAME=superbuild_ci
C:\glr>SET CI_BUILD_STAGE=superbuild
C:\glr>SET CI_PROJECT_ID=5
C:\glr>SET CI_PROJECT_NAME=genshi
C:\glr>SET CI_PROJECT_PATH=sw/genshi
C:\glr>SET CI_PROJECT_PATH_SLUG=sw-genshi
C:\glr>SET CI_PROJECT_NAMESPACE=sw
C:\glr>SET CI_PROJECT_URL=https://gitlab/sw/genshi
C:\glr>SET CI_PROJECT_VISIBILITY=internal
C:\glr>SET CI_REGISTRY=gitlab:5005
C:\glr>SET CI_REGISTRY_IMAGE=gitlab:5005/sw/genshi
C:\glr>SET CI_PIPELINE_IID=9863
C:\glr>SET CI_CONFIG_PATH=.gitlab-ci.yml
C:\glr>SET CI_PIPELINE_SOURCE=push
C:\glr>SET CI_COMMIT_MESSAGE=CI_DEBUG_TRACE: "true"!nl!
C:\glr>SET CI_COMMIT_TITLE=CI_DEBUG_TRACE: "true"
C:\glr>SET CI_COMMIT_DESCRIPTION=
C:\glr>SET CI_RUNNER_ID=25
C:\glr>SET CI_RUNNER_DESCRIPTION=lab-ci
C:\glr>SET GET_SOURCES_ATTEMPTS=5
C:\glr>SET CI_DEBUG_TRACE=true
C:\glr>SET CI_SHARED_ENVIRONMENT=true
C:\glr>SET CI_RUNNER_VERSION=12.3.0
C:\glr>SET CI_RUNNER_REVISION=a8a019e0
C:\glr>SET CI_RUNNER_EXECUTABLE_ARCH=windows/amd64
C:\glr>SET GIT_LFS_SKIP_SMUDGE=1
C:\glr>echo Fetching changes...
Fetching changes...
C:\glr>dir "C:\glr\builds\34625f0b\0\sw\genshi.tmp\git-template" 2>NUL 1>NUL || md "C:\glr\builds\34625f0b\0\sw\genshi.tmp\git-template" 2>NUL 1>NUL
C:\glr>"git" "config" "-f" "C:\glr\builds\34625f0b\0\sw\genshi.tmp\git-template/config" "fetch.recurseSubmodules" "false"
C:\glr>IF !errorlevel! NEQ 0 exit /b !errorlevel!
C:\glr>"git" "config" "-f" "C:\glr\builds\34625f0b\0\sw\genshi.tmp\git-template/config" "http.https://gitlab.sslCAInfo" "C:\glr\builds\34625f0b\0\sw\genshi.tmp\CI_SERVER_TLS_CA_FILE"
C:\glr>IF !errorlevel! NEQ 0 exit /b !errorlevel!
C:\glr>"git" "init" "C:/glr/builds/34625f0b/0/sw/genshi" "--template" "C:\glr\builds\34625f0b\0\sw\genshi.tmp\git-template"
Reinitialized existing Git repository in C:/glr/builds/34625f0b/0/sw/genshi/.git/
C:\glr>IF !errorlevel! NEQ 0 exit /b !errorlevel!
C:\glr>cd /D "C:\glr\builds\34625f0b\0\sw\genshi"
C:\glr\builds\34625f0b\0\sw\genshi>IF !errorlevel! NEQ 0 exit /b !errorlevel!
C:\glr\builds\34625f0b\0\sw\genshi>del /f /q ".git\index.lock" 2>NUL 1>NUL
C:\glr\builds\34625f0b\0\sw\genshi>del /f /q ".git\shallow.lock" 2>NUL 1>NUL
C:\glr\builds\34625f0b\0\sw\genshi>del /f /q ".git\HEAD.lock" 2>NUL 1>NUL
C:\glr\builds\34625f0b\0\sw\genshi>del /f /q ".git\hooks\post-checkout" 2>NUL 1>NUL
C:\glr\builds\34625f0b\0\sw\genshi>"git" "remote" "add" "origin" "https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab/sw/genshi.git" 2>NUL 1>NUL
C:\glr\builds\34625f0b\0\sw\genshi>IF !errorlevel! EQU 0 (echo Created fresh repository. ) ELSE (
"git" "remote" "set-url" "origin" "https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab/sw/genshi.git"
IF !errorlevel! NEQ 0 exit /b !errorlevel!
)
C:\glr\builds\34625f0b\0\sw\genshi>"git" "fetch" "origin" "--prune"
From https://gitlab/sw/genshi
35e488742..818e57563 feature/CRAN-3032-GLRVersion -> origin/feature/CRAN-3032-GLRVersion
C:\glr\builds\34625f0b\0\sw\genshi>IF !errorlevel! NEQ 0 exit /b !errorlevel!
C:\glr\builds\34625f0b\0\sw\genshi>echo Checking out 818e5756 as feature/CRAN-3032-GLRVersion...
Checking out 818e5756 as feature/CRAN-3032-GLRVersion...
C:\glr\builds\34625f0b\0\sw\genshi>"git" "checkout" "-f" "-q" "818e57563ca3e9905c19cabdc1107a5373e30b54"
C:\glr\builds\34625f0b\0\sw\genshi>IF !errorlevel! NEQ 0 exit /b !errorlevel!
C:\glr\builds\34625f0b\0\sw\genshi>"git" "clean" "-ffdx"
C:\glr\builds\34625f0b\0\sw\genshi>IF !errorlevel! NEQ 0 exit /b !errorlevel!
C:\glr\builds\34625f0b\0\sw\genshi>"git-lfs" "version" 2>NUL 1>NUL
C:\glr\builds\34625f0b\0\sw\genshi>IF !errorlevel! EQU 0 (
"git" "lfs" "pull"
IF !errorlevel! NEQ 0 exit /b !errorlevel!
echo.
)
C:\glr\builds\34625f0b\0\sw\genshi>echo Skipping Git submodules setup
Skipping Git submodules setup
Adding git config -l to the job script shows:
C:\glr\builds\34625f0b\0\sw\genshi>git config -l
core.symlinks=true
core.autocrlf=true
core.fscache=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
http.sslcainfo=/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
fetch.recursesubmodules=false
http.https://gitlab.sslcainfo=C:\glr\builds\34625f0b\0\sw\genshi.tmp\CI_SERVER_TLS_CA_FILE
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.url=https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab/sw/genshi.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
Environment description
- Windows 10
-
cmdShell executor - Portable Git for Windows 2.23.0
config.toml contents
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "lab-ci"
url = "https://gitlab/"
executor = "shell"
shell = "cmd"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
Used GitLab Runner version
C:\glr>.\gitlab-runner.exe --version
Version: 12.3.0
Git revision: a8a019e0
Git branch: 12-3-stable
GO version: go1.8.7
Built: 2019-09-20T08:27:18+0000
OS/Arch: windows/amd64
Possible fixes
I think this is the problem:
C:\glr\builds\34625f0b\0\sw\genshi>"git-lfs" "version" 2>NUL 1>NUL
C:\glr\builds\34625f0b\0\sw\genshi>IF !errorlevel! EQU 0 (
"git" "lfs" "pull"
IF !errorlevel! NEQ 0 exit /b !errorlevel!
echo.
)
The check for existence of Git LFS is flawed: git-lfs is not in the system PATH (and shouldn't need to be). This should be git lfs version (same way git lfs pull is used below)
Edited by Taylor Braun-Jones