Skip to content

Allow linking to single file in build artifact directory

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Problem to solve

Some types of build artifacts (e.g. gcovr HTML coverage reports) are directories containing an index.html and a lot of other files (e.g. other .html files, as well as a .css stylesheet). When using the expose_as feature, GitLab will only link to the entire directory.

I want a way to link directly to the index.html in a case like this.

Further details

Example .gitlab-ci.yml file:

test:
    script:
        - ...
        - ninja coverage-html
    artifacts:
        expose_as: Coverage HTML Report
        paths:
            - coverage/

If I directly specify the coverage/index.html instead of coverage/, the resulting build artifact HTML appears broken (links will 404). If I try specifying both the coverage/index.html and the coverage/ directory, it behaves identically to only specifying the coverage/ dir.

Proposal

A straightforward way would be to simply special-case index.html, and automagically treat exposed directories that contain an index.html as links to that HTML file.

However, a more sophisticated approach might be allow passing a key/value list instead of a string for expose_as, with new attributes like:

test:
    script:
        - ...
        - ninja coverage-html
    artifacts:
        expose_as:
            path: coverage/index.html
            name: Coverage HTML Report
        paths:
            - coverage/
Edited by 🤖 GitLab Bot 🤖