Skip to content

Project include could not be fetched when remote include is http(s) #1642

@danstoner

Description

@danstoner

Minimal .gitlab-ci.yml illustrating the issue

---
include:
  - project: earthscope/infrastructure/gitlab-ci

Which contains:

include:
# ...
  - local: gitlab-ci/job-template-*.yml

Expected behavior
Wildcards in includes are supported.

https://docs.gitlab.com/ci/yaml/includes/#use-includelocal-with-wildcard-file-paths

Host information
MacOS 15.6.1
gitlab-ci-local 4.61.1

Containerd binary
Docker.

Additional context

I noticed the pipeline works fine if the git checkout uses an SSH remote repository, it only occurs on an HTTPS checkout, which led me to this part of the code which is taking two different code paths depending on the remote scheme:

            if (remote.schema.startsWith("http")) {
...

and seems to be barfing on the wildcard filename.

$ gitlab-ci-local --list
Project include could not be fetched { project: earthscope/infrastructure/gitlab-ci, ref: HEAD, file: job-template-*.yml }
Error: Command failed with exit code 1: cd /private/tmp/sample-python-http/sample-python/.gitlab-ci-local && \git clone  -n --depth=1 --filter=tree:0 https://gitlab.com:443/earthscope/infrastructure/gitlab-ci.git /private/tmp/sample-python-http/sample-python/.gitlab-ci-local/includes/gitlab.com/earthscope/infrastructure/gitlab-ci/HEAD.tmp-0.49170569626555727 && \cd /private/tmp/sample-python-http/sample-python/.gitlab-ci-local/includes/gitlab.com/earthscope/infrastructure/gitlab-ci/HEAD.tmp-0.49170569626555727 && \git sparse-checkout set --no-cone job-template-*.yml && \git checkout && \cd /private/tmp/sample-python-http/sample-python/.gitlab-ci-local && \cp /private/tmp/sample-python-http/sample-python/.gitlab-ci-local/includes/gitlab.com/earthscope/infrastructure/gitlab-ci/HEAD.tmp-0.49170569626555727/job-template-*.yml /private/tmp/sample-python-http/sample-python/.gitlab-ci-local/includes/gitlab.com/earthscope/infrastructure/gitlab-ci/HEAD/job-template-*.yml
Cloning into '/private/tmp/sample-python-http/sample-python/.gitlab-ci-local/includes/gitlab.com/earthscope/infrastructure/gitlab-ci/HEAD.tmp-0.49170569626555727'...
cp: /private/tmp/sample-python-http/sample-python/.gitlab-ci-local/includes/gitlab.com/earthscope/infrastructure/gitlab-ci/HEAD/job-template-release.yml is not a directory
Your branch is up to date with 'origin/main'.

If I use a checkout with an ssh remote and no other changes, the command works fine.

$ gitlab-ci-local --list
parsing and downloads finished in 1.83 s.
json schema validated in 81 ms
name                   description  stage         when        allow_failure  needs
build/rc                            build         on_success  false      
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions