Передача артефактов между этапами в gitlab-ci с использованием docker - windows на windows серверном ядре приводит к сбою системы - PullRequest
0 голосов
/ 28 мая 2020

Я хочу использовать несколько этапов, чтобы сначала настроить цепочку инструментов для использования на последующих этапах, затем построить код и, наконец, что не менее важно, протестировать приложение. Для этой цели я использую gitlab-runner на windows servercore.

Файл config.toml для gitlab-runner.exe на ядре сервера windows настроен с помощью «mcr.microsoft. com / windows / servercore: ltsc2019 "изображение и имеет параметр" docker - windows "в качестве исполнителя.

Содержимое файла .gitlab-ci.yml, которое я использую, перечислено ниже:

image: mcr.microsoft.com/windows/servercore:ltsc2019

stages:
  - build
  - test

compile:
  stage: build
  script:
    # install chocolatey
    - Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    - $env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
    - refreshenv
    # install cmake and mingw
    - choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System'
    - refreshenv
    - choco install -y mingw
    - refreshenv
    # make cmake available
    - $env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
    # build cmake project
    - cmake -DCMAKE_BUILD_TYPE=Debug \
      -G "CodeBlocks - MinGW Makefiles" -S./ -B./cmake-build-debug/
    - cmake --build ./cmake-build-debug --target app -- -j 2
  artifacts:
    when: on_success
    expire_in: 1 hour
    paths:
      - ./cmake-build-debug

run:
  stage: test
  script:
    - .\cmake-build-debug\app.exe

Для полноты картины вы можете найти содержимое файла CMakeLists.txt и файла main. cpp ниже.
CMakeLists.txt:

cmake_minimum_required(VERSION 3.15)
project(servercore-example-ci LANGUAGES CXX)
add_executable(app main.cpp)

main .cpp;

#include <iostream>

int main(int argc, char** argv)
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

Этапы сборки работают нормально, однако на этапе тестирования возникает следующая ошибка:

ERROR: Job failed (system failure): json: cannot unmarshal number 3221225781 into Go struct field ContainerState.State.ExitCode of type int (docker.go:831:0s)

Есть идеи, как решить эту проблему?

...