[Python] Execute Python code with GitLab parallel matrix in different OS (Windows and Linux)

Discussão em 'Python' iniciado por Stack, Março 15, 2025.

  1. Stack

    Stack Membro Participativo

    I'd like to test my project's code with e2e tests, hopefully in different OS to ensure it works as expected not only in Linux systems but in other ones as well.

    To achieve this, I'd like to use GitLab's parallel:matrix so I can manage my tests in a single place, without having to declare a new job for each new OS I'd like to add.

    So far, this is what I have in mind:

    stages: [test]

    test:e2e:
    stage: test
    image:
    name: $PYTHON_IMAGE

    tags:
    - $RUNNER_TAG

    parallel:
    matrix:
    - OS: linux
    PYTHON_IMAGE: python:3.11-slim
    RUNNER_TAG: saas-linux-small-arm64

    - OS: windows
    PYTHON_IMAGE: python:3.11-windowsservercore-ltsc2022
    RUNNER_TAG: saas-windows-medium-amd64

    script:
    - python --version


    However, this is NOT possible because GitLab's hosted Windows runners do not use Docker like Linux runners. This means that the saas-windows-medium-amd64 doesn't have Python installed in it, thus failing whenever trying to execute any Python code in it:

    $ python --version
    python : The term 'python' is not recognized as the name of a cmdlet, function, script file, or operable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:286 char:1
    + python --version
    + ~~~~~~
    + CategoryInfo : ObjectNotFound: (python:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException


    The solution I've thought is to install Python through chocolatey whenever running in a windows OS. However, because Windows has its own syntax I can't find any possible way to manage this within my job's script section.

    I expect to execute Python code in a GitLab parallel:matrix with different OS (Windows and Linux). To achieve this, I've tried to use GitLab's hosted official runners. However, Windows runners do not use Docker in them, thus I can't specify which image the runner will be using.

    Continue reading...

Compartilhe esta Página